@decohere/forge 0.0.1-dev.20 → 0.0.1-dev.20261105.103
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/LICENSE +15 -0
- package/README.md +152 -0
- package/es6/src/actions/build.action.js +3 -7
- package/es6/src/actions/clean.action.js +3 -6
- package/es6/src/actions/commit.action.js +3 -6
- package/es6/src/actions/copy.action.js +61 -12
- package/es6/src/actions/dependency-report.action.js +7 -7
- package/es6/src/actions/dependency-sync.action.js +8 -6
- package/es6/src/actions/docker.action.js +82 -36
- package/es6/src/actions/index.js +3 -2
- package/es6/src/actions/link.action.js +2 -5
- package/es6/src/actions/package.action.js +219 -0
- package/es6/src/actions/paths.action.js +97 -0
- package/es6/src/actions/publish.action.js +3 -6
- package/es6/src/actions/sync-lock-file.action.js +2 -4
- package/es6/src/actions/tag.action.js +5 -9
- package/es6/src/actions/typecheck.action.js +52 -0
- package/es6/src/actions/unlink.action.js +1 -3
- package/es6/src/actions/version.action.js +69 -17
- package/es6/src/actions/watch.action.js +2 -5
- package/es6/src/commands/build.command.js +4 -3
- package/es6/src/commands/dependency.command.js +1 -3
- package/es6/src/commands/docker.command.js +2 -4
- package/es6/src/commands/forge.command.js +1 -3
- package/es6/src/commands/index.js +3 -2
- package/es6/src/commands/link.command.js +4 -3
- package/es6/src/commands/package.command.js +26 -0
- package/es6/src/commands/paths.command.js +14 -0
- package/es6/src/commands/publish.command.js +1 -3
- package/es6/src/commands/tag.command.js +1 -3
- package/es6/src/commands/typecheck.command.js +14 -0
- package/es6/src/commands/version.command.js +3 -3
- package/es6/src/const.js +0 -2
- package/es6/src/create-workspace.js +26 -0
- package/es6/src/errors.js +1 -3
- package/es6/src/extensions/project.extensions.js +5 -7
- package/es6/src/factories/swc-config.factory.js +29 -9
- package/es6/src/forge.module.js +15 -20
- package/es6/src/index.js +2 -2
- package/es6/src/packaging/dependency-pinner.service.js +103 -0
- package/es6/src/packaging/deployable.js +21 -0
- package/es6/src/packaging/import-graph.service.js +122 -0
- package/es6/src/packaging/release-exports.js +80 -0
- package/es6/src/packaging/ui-assets.js +49 -0
- package/es6/src/semver/index.js +1 -0
- package/es6/src/semver/semver.js +75 -0
- package/es6/src/services/dependency-resolver.service.js +70 -26
- package/es6/src/services/file-writer.service.js +2 -11
- package/es6/src/services/incremental-watch.js +18 -0
- package/es6/src/services/output-cache.js +29 -0
- package/es6/src/services/swc-transpiler.js +85 -99
- package/es6/src/services/transpile-cache.js +29 -0
- package/es6/src/services/ts-compiler-options.js +39 -0
- package/es6/src/services/ts-program-host.js +4 -6
- package/es6/src/services/type-emission-program.js +25 -10
- package/es6/src/services/type-emitter.js +57 -20
- package/es6/src/transpile/index.js +6 -0
- package/es6/src/types/build-target.type.js +0 -2
- package/es6/src/types/configuration.type.js +0 -2
- package/es6/src/types/dependency.types.js +0 -2
- package/es6/src/types/swc-config.type.js +0 -2
- package/es6/src/types/transform-response.model.js +0 -7
- package/es6/src/types/transformer.type.js +0 -2
- package/es6/src/types/workspace-config.type.js +0 -2
- package/es6/src/vitest/forge-build.plugin.js +27 -43
- package/es6/src/vitest/index.js +0 -2
- package/es6/src/workspace.config.js +26 -6
- package/package.json +21 -10
- package/types/src/actions/build.action.d.ts +4 -4
- package/types/src/actions/clean.action.d.ts +3 -3
- package/types/src/actions/commit.action.d.ts +3 -3
- package/types/src/actions/copy.action.d.ts +18 -3
- package/types/src/actions/dependency-report.action.d.ts +3 -3
- package/types/src/actions/dependency-sync.action.d.ts +3 -3
- package/types/src/actions/docker.action.d.ts +14 -3
- package/types/src/actions/index.d.ts +3 -0
- package/types/src/actions/link.action.d.ts +3 -3
- package/types/src/actions/package.action.d.ts +38 -0
- package/types/src/actions/paths.action.d.ts +28 -0
- package/types/src/actions/publish.action.d.ts +4 -4
- package/types/src/actions/sync-lock-file.action.d.ts +2 -2
- package/types/src/actions/tag.action.d.ts +3 -3
- package/types/src/actions/typecheck.action.d.ts +14 -0
- package/types/src/actions/unlink.action.d.ts +2 -2
- package/types/src/actions/version.action.d.ts +14 -4
- package/types/src/actions/watch.action.d.ts +3 -3
- package/types/src/commands/build.command.d.ts +3 -2
- package/types/src/commands/dependency.command.d.ts +2 -2
- package/types/src/commands/docker.command.d.ts +1 -1
- package/types/src/commands/forge.command.d.ts +2 -2
- package/types/src/commands/index.d.ts +3 -0
- package/types/src/commands/link.command.d.ts +3 -2
- package/types/src/commands/package.command.d.ts +11 -0
- package/types/src/commands/paths.command.d.ts +6 -0
- package/types/src/commands/publish.command.d.ts +1 -1
- package/types/src/commands/tag.command.d.ts +1 -1
- package/types/src/commands/typecheck.command.d.ts +6 -0
- package/types/src/commands/version.command.d.ts +1 -1
- package/types/src/create-workspace.d.ts +7 -0
- package/types/src/errors.d.ts +1 -1
- package/types/src/extensions/project.extensions.d.ts +2 -2
- package/types/src/factories/swc-config.factory.d.ts +3 -2
- package/types/src/forge.module.d.ts +10 -4
- package/types/src/index.d.ts +2 -0
- package/types/src/packaging/dependency-pinner.service.d.ts +20 -0
- package/types/src/packaging/deployable.d.ts +17 -0
- package/types/src/packaging/import-graph.service.d.ts +33 -0
- package/types/src/packaging/release-exports.d.ts +18 -0
- package/types/src/packaging/ui-assets.d.ts +21 -0
- package/types/src/semver/index.d.ts +1 -0
- package/types/src/semver/semver.d.ts +20 -0
- package/types/src/services/dependency-resolver.service.d.ts +8 -1
- package/types/src/services/file-writer.service.d.ts +1 -2
- package/types/src/services/incremental-watch.d.ts +13 -0
- package/types/src/services/output-cache.d.ts +10 -0
- package/types/src/services/swc-transpiler.d.ts +28 -15
- package/types/src/services/transpile-cache.d.ts +17 -0
- package/types/src/services/ts-compiler-options.d.ts +8 -0
- package/types/src/services/ts-program-host.d.ts +2 -2
- package/types/src/services/type-emission-program.d.ts +10 -3
- package/types/src/services/type-emitter.d.ts +21 -8
- package/types/src/transpile/index.d.ts +6 -0
- package/types/src/types/configuration.type.d.ts +6 -1
- package/types/src/types/dependency.types.d.ts +8 -9
- package/types/src/types/swc-config.type.d.ts +7 -1
- package/types/src/types/transform-response.model.d.ts +2 -7
- package/types/src/types/transformer.type.d.ts +3 -12
- package/types/src/types/workspace-config.type.d.ts +3 -3
- package/types/src/vitest/forge-build.plugin.d.ts +0 -2
- package/commonjs/src/actions/build.action.js +0 -116
- package/commonjs/src/actions/clean.action.js +0 -55
- package/commonjs/src/actions/commit.action.js +0 -87
- package/commonjs/src/actions/copy.action.js +0 -83
- package/commonjs/src/actions/dependency-report.action.js +0 -142
- package/commonjs/src/actions/dependency-sync.action.js +0 -100
- package/commonjs/src/actions/docker.action.js +0 -162
- package/commonjs/src/actions/index.js +0 -33
- package/commonjs/src/actions/link.action.js +0 -156
- package/commonjs/src/actions/publish.action.js +0 -156
- package/commonjs/src/actions/sync-lock-file.action.js +0 -43
- package/commonjs/src/actions/tag.action.js +0 -76
- package/commonjs/src/actions/unlink.action.js +0 -76
- package/commonjs/src/actions/version.action.js +0 -209
- package/commonjs/src/actions/watch.action.js +0 -51
- package/commonjs/src/commands/build.command.js +0 -49
- package/commonjs/src/commands/dependency.command.js +0 -88
- package/commonjs/src/commands/docker.command.js +0 -28
- package/commonjs/src/commands/forge.command.js +0 -24
- package/commonjs/src/commands/index.js +0 -27
- package/commonjs/src/commands/link.command.js +0 -89
- package/commonjs/src/commands/publish.command.js +0 -32
- package/commonjs/src/commands/tag.command.js +0 -28
- package/commonjs/src/commands/version.command.js +0 -36
- package/commonjs/src/const.js +0 -81
- package/commonjs/src/errors.js +0 -39
- package/commonjs/src/extensions/project.extensions.js +0 -94
- package/commonjs/src/factories/swc-config.factory.js +0 -98
- package/commonjs/src/forge.module.js +0 -115
- package/commonjs/src/index.js +0 -46
- package/commonjs/src/mixins/caches-outputs.mixin.js +0 -44
- package/commonjs/src/mixins/incremental-transform.mixin.js +0 -36
- package/commonjs/src/services/dependency-resolver.service.js +0 -172
- package/commonjs/src/services/file-writer.service.js +0 -232
- package/commonjs/src/services/swc-transpiler.js +0 -235
- package/commonjs/src/services/ts-program-host.js +0 -135
- package/commonjs/src/services/type-emission-program.js +0 -160
- package/commonjs/src/services/type-emitter.js +0 -141
- package/commonjs/src/types/build-target.type.js +0 -17
- package/commonjs/src/types/configuration.type.js +0 -6
- package/commonjs/src/types/dependency.types.js +0 -6
- package/commonjs/src/types/swc-config.type.js +0 -17
- package/commonjs/src/types/transform-response.model.js +0 -65
- package/commonjs/src/types/transformer.type.js +0 -13
- package/commonjs/src/types/workspace-config.type.js +0 -6
- package/commonjs/src/vitest/forge-build.plugin.js +0 -129
- package/commonjs/src/vitest/index.js +0 -13
- package/commonjs/src/workspace.config.js +0 -75
- package/es6/src/mixins/caches-outputs.mixin.js +0 -34
- package/es6/src/mixins/incremental-transform.mixin.js +0 -26
- package/types/src/mixins/caches-outputs.mixin.d.ts +0 -7
- package/types/src/mixins/incremental-transform.mixin.d.ts +0 -13
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ProjectFileEvent, Workspace } from "@decohere/workspace";
|
|
2
|
+
import type { Observable } from "@decohere/core/system";
|
|
3
|
+
import type { TransformResponse } from "../types/transform-response.model.js";
|
|
4
|
+
/**
|
|
5
|
+
* Runs a transformer's handler for every workspace file change and emits what it built. The
|
|
6
|
+
* handler invalidates the transformer's own caches, rebuilds, and returns the responses (empty
|
|
7
|
+
* for a deletion or when nothing was built).
|
|
8
|
+
*/
|
|
9
|
+
export declare class IncrementalWatch {
|
|
10
|
+
#private;
|
|
11
|
+
get results$(): Observable<TransformResponse[]>;
|
|
12
|
+
watch(workspace: Workspace, handler: (evt: ProjectFileEvent) => Promise<TransformResponse[]>): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TransformResponse } from "../types/transform-response.model.js";
|
|
2
|
+
/** The outputs each source file last built to, so watch mode can delete them when it goes. */
|
|
3
|
+
export declare class OutputCache {
|
|
4
|
+
#private;
|
|
5
|
+
get(sourcePath: string): TransformResponse[] | undefined;
|
|
6
|
+
/** Records the successful outputs, replacing what each of their source files had before. */
|
|
7
|
+
record(responses: TransformResponse[]): void;
|
|
8
|
+
/** Deletes the files a source built to and forgets them. */
|
|
9
|
+
delete(sourcePath: string): void;
|
|
10
|
+
}
|
|
@@ -1,34 +1,47 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { FileEx } from "@decohere/
|
|
1
|
+
import { type Project, type Tsconfig, type Workspace } from "@decohere/workspace";
|
|
2
|
+
import type { FileEx } from "@decohere/core/io";
|
|
3
|
+
import { type Options } from "@swc/core";
|
|
4
|
+
import type { Observable } from "@decohere/core/system";
|
|
3
5
|
import { type BuildTarget, type TranspileTarget } from "../types/build-target.type.js";
|
|
4
6
|
import "../extensions/project.extensions.js";
|
|
5
|
-
import type { ProjectFileEvent, Tsconfig } from "@decohere/mesh";
|
|
6
|
-
import { CachesOutputs } from "../mixins/caches-outputs.mixin.js";
|
|
7
|
-
import { IncrementalTransform } from "../mixins/incremental-transform.mixin.js";
|
|
8
7
|
import type { SwcConfig } from "../types/swc-config.type.js";
|
|
9
8
|
import { TransformResponse } from "../types/transform-response.model.js";
|
|
10
9
|
import type { Transformer } from "../types/transformer.type.js";
|
|
11
10
|
export type TranspileOptions = {
|
|
12
11
|
aliasPaths?: boolean;
|
|
12
|
+
sourceMaps?: boolean;
|
|
13
13
|
tsConfig?: Tsconfig;
|
|
14
14
|
userConfig?: SwcConfig;
|
|
15
|
+
workspace?: Workspace;
|
|
16
|
+
projects?: readonly Project[];
|
|
15
17
|
};
|
|
16
|
-
declare
|
|
17
|
-
export declare class SwcTranspiler extends SwcTranspiler_base implements Transformer {
|
|
18
|
+
export declare class SwcTranspiler implements Transformer {
|
|
18
19
|
#private;
|
|
19
20
|
buildTargets: BuildTarget[];
|
|
21
|
+
get incrementalTransform$(): Observable<TransformResponse[]>;
|
|
22
|
+
watch(workspace: Workspace): void;
|
|
23
|
+
private withAliasContext;
|
|
20
24
|
transformProject(projectArrayLike: Project | Project[], fileFilter?: (project: Project) => Promise<FileEx[]>, onOutput?: (response: TransformResponse) => void): Promise<TransformResponse[]>;
|
|
21
|
-
transformFile(fileArrayLike: FileEx[] | FileEx, buildTarget: TranspileTarget, options?: TranspileOptions): Promise<TransformResponse[]>;
|
|
22
25
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
+
* The SWC options for one project and target, without a filename. Building them reads the
|
|
27
|
+
* workspace's aliases and merges configs, so a caller that transpiles many files builds them
|
|
28
|
+
* once and passes them to {@link transformCode}.
|
|
26
29
|
*/
|
|
27
|
-
|
|
30
|
+
createBaseConfig(buildTarget: TranspileTarget, options?: TranspileOptions): Options;
|
|
31
|
+
/** Sync variant of {@link transformCode}, for the load hook, which cannot await. */
|
|
32
|
+
transformCodeSync(content: string, file: FileEx, buildTarget: TranspileTarget, baseConfig: Options): TransformResponse;
|
|
33
|
+
/**
|
|
34
|
+
* Compiles `content` as the source of `file`, without reading the file: for callers that
|
|
35
|
+
* already hold the code, such as the Vitest plugin, which must compile what Vite passes it
|
|
36
|
+
* rather than an earlier read of the disk. Async SWC, on the thread pool, so many
|
|
37
|
+
* calls in flight compile in parallel. With a `project`, the response carries where
|
|
38
|
+
* the build writes the output.
|
|
39
|
+
*/
|
|
40
|
+
transformCode(content: string, file: FileEx, buildTarget: TranspileTarget, baseConfig: Options, project?: Project): Promise<TransformResponse>;
|
|
41
|
+
private static skippedEmpty;
|
|
42
|
+
private static succeeded;
|
|
28
43
|
private transformTarget;
|
|
29
|
-
private
|
|
30
|
-
protected onIncrementalFileEvent(evt: ProjectFileEvent): Promise<TransformResponse[]>;
|
|
44
|
+
private onIncrementalFileEvent;
|
|
31
45
|
invalidateContentCache(_file: FileEx): void;
|
|
32
46
|
private getFileContent;
|
|
33
47
|
}
|
|
34
|
-
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where compiled code is cached on disk, or null when caching is off:
|
|
3
|
+
*
|
|
4
|
+
* - `DECOHERE_CACHE=0` turns it off.
|
|
5
|
+
* - `DECOHERE_CACHE_DIR` puts it in that directory.
|
|
6
|
+
* - Otherwise `<root>/node_modules/.cache/decohere`, where tools keep caches, or when the
|
|
7
|
+
* workspace has no `node_modules`, `$XDG_CACHE_HOME/decohere`, then the OS temp directory.
|
|
8
|
+
*
|
|
9
|
+
* Flux keeps its entries in the `flux` folder inside it; `forge clean` removes the folder.
|
|
10
|
+
*/
|
|
11
|
+
declare function directory(rootDir: string, env?: NodeJS.ProcessEnv): string | null;
|
|
12
|
+
/** The SWC version compiling: part of every cache key, so upgrading SWC misses. */
|
|
13
|
+
export declare const transpileCache: {
|
|
14
|
+
directory: typeof directory;
|
|
15
|
+
swcVersion: string;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tsconfig } from "@decohere/workspace";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* A project's compiler options as the TypeScript compiler parses its `tsconfig.json`: what
|
|
5
|
+
* type emission needs (enums, every option, tsc's own defaults). The workspace reads only
|
|
6
|
+
* what transpiling needs, without loading the compiler.
|
|
7
|
+
*/
|
|
8
|
+
export declare function tsCompilerOptions(tsconfig: Tsconfig): ts.CompilerOptions;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FileEx } from "@decohere/
|
|
1
|
+
import type { FileEx } from "@decohere/core/io";
|
|
2
2
|
import type ts from "typescript";
|
|
3
3
|
/**
|
|
4
4
|
* Wraps a TypeScript CompilerHost with cached file-system calls so that
|
|
@@ -14,7 +14,7 @@ export declare class TsProgramHost {
|
|
|
14
14
|
/** Returns a stable string key for a set of compiler options that affect host behaviour. */
|
|
15
15
|
hostKey(opts: ts.CompilerOptions): string;
|
|
16
16
|
createHost(compilerOptions: ts.CompilerOptions): ts.CompilerHost;
|
|
17
|
-
createProgram(files: FileEx[], compilerOptions: ts.CompilerOptions, host: ts.CompilerHost, oldProgram?: ts.Program): ts.Program;
|
|
17
|
+
createProgram(files: FileEx[], compilerOptions: ts.CompilerOptions, host: ts.CompilerHost, oldProgram?: ts.Program, requiredOptions?: ts.CompilerOptions): ts.Program;
|
|
18
18
|
readFileFromDisk(fileName: string): string | undefined;
|
|
19
19
|
fileExistsOnDisk(fileName: string): boolean;
|
|
20
20
|
directoryExists(directoryName: string): boolean;
|
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
import type { Project, Tsconfig } from "@decohere/
|
|
2
|
-
import type { FileEx } from "@decohere/
|
|
1
|
+
import type { Project, Tsconfig } from "@decohere/workspace";
|
|
2
|
+
import type { FileEx } from "@decohere/core/io";
|
|
3
|
+
import ts from "typescript";
|
|
3
4
|
import type { TsProgramHost } from "../services/ts-program-host.js";
|
|
4
5
|
import { TransformResponse } from "../types/transform-response.model.js";
|
|
5
6
|
export type TypeProgramProject = {
|
|
6
7
|
project: Project;
|
|
7
8
|
files: FileEx[];
|
|
8
9
|
tsconfig: Tsconfig;
|
|
10
|
+
/** The compiler's parse of `tsconfig`. */
|
|
11
|
+
compilerOptions: ts.CompilerOptions;
|
|
9
12
|
};
|
|
10
13
|
export declare class TypeEmissionProgram {
|
|
11
14
|
#private;
|
|
12
|
-
constructor(group: TypeProgramProject[], hostFactory: TsProgramHost);
|
|
15
|
+
constructor(group: TypeProgramProject[], hostFactory: TsProgramHost, requiredOptions: ts.CompilerOptions);
|
|
16
|
+
check(): readonly ts.Diagnostic[];
|
|
17
|
+
formatDiagnostics(diagnostics: readonly ts.Diagnostic[]): string;
|
|
13
18
|
private toEmissionTarget;
|
|
14
19
|
private emittedKey;
|
|
15
20
|
private buildTargetMaps;
|
|
16
21
|
addFile(file: FileEx, project: Project): void;
|
|
17
22
|
emit(fileFilter?: (project: Project) => Promise<FileEx[]>, onOutput?: (response: TransformResponse) => void): Promise<TransformResponse[]>;
|
|
23
|
+
private createProgram;
|
|
24
|
+
private refreshProgramIfNeeded;
|
|
18
25
|
private emitAll;
|
|
19
26
|
private emitFiltered;
|
|
20
27
|
private toTransformResponse;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { Project,
|
|
2
|
-
import type { FileEx } from "@decohere/
|
|
1
|
+
import type { Project, Workspace } from "@decohere/workspace";
|
|
2
|
+
import type { FileEx } from "@decohere/core/io";
|
|
3
|
+
import type { Observable } from "@decohere/core/system";
|
|
3
4
|
import type ts from "typescript";
|
|
4
5
|
import "../extensions/project.extensions.js";
|
|
5
|
-
import { CachesOutputs } from "../mixins/caches-outputs.mixin.js";
|
|
6
|
-
import { IncrementalTransform } from "../mixins/incremental-transform.mixin.js";
|
|
7
6
|
import { type BuildTarget } from "../types/build-target.type.js";
|
|
8
7
|
import type { TransformResponse } from "../types/transform-response.model.js";
|
|
9
8
|
import type { Transformer } from "../types/transformer.type.js";
|
|
@@ -25,10 +24,17 @@ export declare const DEFAULT_TYPE_EMITTER_OPTIONS: Readonly<ts.CompilerOptions>;
|
|
|
25
24
|
* tsconfig specifies. Applied after the user spread so they cannot be overridden.
|
|
26
25
|
*/
|
|
27
26
|
export declare const REQUIRED_TYPE_EMITTER_OPTIONS: Readonly<ts.CompilerOptions>;
|
|
28
|
-
|
|
29
|
-
export declare
|
|
27
|
+
/** Compiler options enforced for `forge typecheck` — never emit JS or declarations. */
|
|
28
|
+
export declare const REQUIRED_TYPE_CHECK_OPTIONS: Readonly<ts.CompilerOptions>;
|
|
29
|
+
export type PrepareProgramsOptions = {
|
|
30
|
+
includeAllProjects?: boolean;
|
|
31
|
+
requiredCompilerOptions?: ts.CompilerOptions;
|
|
32
|
+
};
|
|
33
|
+
export declare class TypeEmitter implements Transformer {
|
|
30
34
|
#private;
|
|
31
35
|
buildTargets: BuildTarget[];
|
|
36
|
+
get incrementalTransform$(): Observable<TransformResponse[]>;
|
|
37
|
+
watch(workspace: Workspace): void;
|
|
32
38
|
/**
|
|
33
39
|
* Phase 1: fetch files, create TypeScript programs sequentially.
|
|
34
40
|
* Called before transformProject() so that the heavy createProgram work
|
|
@@ -36,8 +42,15 @@ export declare class TypeEmitter extends TypeEmitter_base implements Transformer
|
|
|
36
42
|
*/
|
|
37
43
|
init(projectArrayLike: Project[] | Project, _filter?: (project: Project) => Promise<FileEx[]>): Promise<void>;
|
|
38
44
|
transformProject(projectArrayLike: Project[] | Project, filter?: (project: Project) => Promise<FileEx[]>, onOutput?: (response: TransformResponse) => void): Promise<TransformResponse[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Type-check projects without emitting files. Includes every workspace project, not
|
|
47
|
+
* only those with a `types` build target (debug is es6-only).
|
|
48
|
+
*/
|
|
49
|
+
checkProject(projectArrayLike: Project[] | Project): Promise<{
|
|
50
|
+
diagnostics: ts.Diagnostic[];
|
|
51
|
+
formatted: string;
|
|
52
|
+
}>;
|
|
39
53
|
private preparePrograms;
|
|
40
|
-
|
|
54
|
+
private onIncrementalFileEvent;
|
|
41
55
|
private invalidateReadFileCache;
|
|
42
56
|
}
|
|
43
|
-
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createWorkspace } from "../create-workspace.js";
|
|
2
|
+
export type { TranspileOptions } from "../services/swc-transpiler.js";
|
|
3
|
+
export { SwcTranspiler } from "../services/swc-transpiler.js";
|
|
4
|
+
export { transpileCache } from "../services/transpile-cache.js";
|
|
5
|
+
export type { BuildTarget, TranspileTarget } from "../types/build-target.type.js";
|
|
6
|
+
export { BuildTargets } from "../types/build-target.type.js";
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import type { Configuration } from "@decohere/
|
|
1
|
+
import type { Configuration } from "@decohere/workspace";
|
|
2
2
|
import type { BuildTarget } from "./build-target.type.js";
|
|
3
3
|
export type ForgeConfiguration = Configuration & {
|
|
4
4
|
targets: BuildTarget[];
|
|
5
5
|
aliasPaths?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Inline source maps in emitted JavaScript (default true). They embed the full TypeScript
|
|
8
|
+
* source and absolute build paths, so published (release) output turns them off.
|
|
9
|
+
*/
|
|
10
|
+
sourceMaps?: boolean;
|
|
6
11
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ResultStatus } from "@decohere/
|
|
1
|
+
import type { ResultStatus } from "@decohere/devkit/cli";
|
|
2
2
|
export type Package = {
|
|
3
3
|
name: string;
|
|
4
4
|
version?: string;
|
|
@@ -22,15 +22,14 @@ export type SyncprojectResult = ResultStatus & {
|
|
|
22
22
|
projectName: string;
|
|
23
23
|
drift?: DriftEntry | null;
|
|
24
24
|
};
|
|
25
|
+
export type DependencyLists = {
|
|
26
|
+
dependencies: Record<string, string>;
|
|
27
|
+
devDependencies: Record<string, string>;
|
|
28
|
+
peerDependencies: Record<string, string>;
|
|
29
|
+
};
|
|
25
30
|
export type DriftEntry = {
|
|
26
|
-
original:
|
|
27
|
-
|
|
28
|
-
devDependencies: Record<string, string>;
|
|
29
|
-
};
|
|
30
|
-
updated: {
|
|
31
|
-
dependencies: Record<string, string>;
|
|
32
|
-
devDependencies: Record<string, string>;
|
|
33
|
-
};
|
|
31
|
+
original: DependencyLists;
|
|
32
|
+
updated: DependencyLists;
|
|
34
33
|
};
|
|
35
34
|
export type DependencyWarning = {
|
|
36
35
|
file: string;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import type { Tsconfig } from "@decohere/
|
|
1
|
+
import type { Project, Tsconfig, Workspace } from "@decohere/workspace";
|
|
2
2
|
export type SwcConfigOptions = {
|
|
3
3
|
aliasPaths?: boolean;
|
|
4
|
+
/** `false` drops source maps from the output. */
|
|
5
|
+
sourceMaps?: boolean;
|
|
4
6
|
tsConfig?: Tsconfig;
|
|
5
7
|
userConfig?: SwcConfig;
|
|
8
|
+
/** When set, convention aliases come from the full workspace package list. */
|
|
9
|
+
workspace?: Workspace;
|
|
10
|
+
/** Fallback package list when `workspace` is not set (e.g. a transform batch). */
|
|
11
|
+
projects?: readonly Project[];
|
|
6
12
|
};
|
|
7
13
|
export declare class SwcConfig {
|
|
8
14
|
constructor(data?: Partial<SwcConfig>);
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import type { Project } from "@decohere/
|
|
2
|
-
import type { File } from "@decohere/
|
|
1
|
+
import type { Project } from "@decohere/workspace";
|
|
2
|
+
import type { File } from "@decohere/core/io";
|
|
3
3
|
import type { BuildTarget } from "./build-target.type.js";
|
|
4
4
|
export type TransformOutcome = "success" | "failure" | "skipped";
|
|
5
|
-
export declare const TransformOutcomes: {
|
|
6
|
-
success: "success";
|
|
7
|
-
failure: "failure";
|
|
8
|
-
skipped: "skipped";
|
|
9
|
-
};
|
|
10
5
|
type TransformResponseBase = {
|
|
11
6
|
file: File;
|
|
12
7
|
config: unknown;
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
import type { Project, Workspace } from "@decohere/
|
|
2
|
-
import type { FileEx } from "@decohere/
|
|
3
|
-
import type { Observable } from "
|
|
1
|
+
import type { Project, Workspace } from "@decohere/workspace";
|
|
2
|
+
import type { FileEx } from "@decohere/core/io";
|
|
3
|
+
import type { Observable } from "@decohere/core/system";
|
|
4
4
|
import type { BuildTarget } from "../types/build-target.type.js";
|
|
5
5
|
import type { TransformResponse } from "./transform-response.model.js";
|
|
6
|
-
export type FileEvent = {
|
|
7
|
-
type: "changed" | "added";
|
|
8
|
-
file: FileEx;
|
|
9
|
-
project?: Project;
|
|
10
|
-
} | {
|
|
11
|
-
type: "deleted";
|
|
12
|
-
file: FileEx;
|
|
13
|
-
project: Project;
|
|
14
|
-
};
|
|
15
6
|
export declare const TransformerKey: unique symbol;
|
|
16
7
|
export interface Transformer {
|
|
17
8
|
readonly buildTargets: BuildTarget[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ProjectOptions as BaseProjectOptions, WorkspaceOptions as BaseWorkspaceOptions } from "@decohere/
|
|
2
|
-
import type { Action, CommandType } from "@decohere/
|
|
3
|
-
import type { Constructable } from "@decohere/
|
|
1
|
+
import type { ProjectOptions as BaseProjectOptions, WorkspaceOptions as BaseWorkspaceOptions } from "@decohere/workspace";
|
|
2
|
+
import type { Action, CommandType } from "@decohere/devkit/cli";
|
|
3
|
+
import type { Constructable } from "@decohere/core/reflection";
|
|
4
4
|
import type { ForgeConfiguration } from "./configuration.type.js";
|
|
5
5
|
export type ProjectOptions = Omit<BaseProjectOptions, "configurations"> & {
|
|
6
6
|
configurations: ForgeConfiguration[];
|
|
@@ -2,8 +2,6 @@ export type ForgeBuildOptions = {
|
|
|
2
2
|
buildConfig?: string;
|
|
3
3
|
logLevel?: string;
|
|
4
4
|
workspaceRoot?: string;
|
|
5
|
-
/** Skip the build pre-warm entirely (e.g. when a pre-built artifact is already on disk). */
|
|
6
|
-
skipBuild?: boolean;
|
|
7
5
|
};
|
|
8
6
|
export declare function forgeBuild(options?: ForgeBuildOptions): {
|
|
9
7
|
name: string;
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "Build", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return Build;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _decorators = require("@decohere/crucible/decorators");
|
|
12
|
-
const _mesh = require("@decohere/mesh");
|
|
13
|
-
const _cli = require("@decohere/nexus/cli");
|
|
14
|
-
const _diagnostics = require("@decohere/nexus/diagnostics");
|
|
15
|
-
const _scribe = require("@decohere/scribe");
|
|
16
|
-
const _errors = require("../errors.js");
|
|
17
|
-
const _filewriterservice = require("../services/file-writer.service.js");
|
|
18
|
-
const _transformertype = require("../types/transformer.type.js");
|
|
19
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
20
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
21
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
22
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
24
|
-
}
|
|
25
|
-
function _ts_metadata(k, v) {
|
|
26
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
27
|
-
}
|
|
28
|
-
function _ts_param(paramIndex, decorator) {
|
|
29
|
-
return function(target, key) {
|
|
30
|
-
decorator(target, key, paramIndex);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
class Build {
|
|
34
|
-
workspace;
|
|
35
|
-
transformers;
|
|
36
|
-
fileWriter;
|
|
37
|
-
#logger = _scribe.scribe.logger(Build.name);
|
|
38
|
-
constructor(workspace, transformers, fileWriter){
|
|
39
|
-
this.workspace = workspace;
|
|
40
|
-
this.transformers = transformers;
|
|
41
|
-
this.fileWriter = fileWriter;
|
|
42
|
-
if (!transformers || transformers.length === 0) {
|
|
43
|
-
throw new _errors.ForgeError("At least one transformer is required");
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
run = async (options)=>{
|
|
47
|
-
if (options.build === false) {
|
|
48
|
-
this.#logger.info("Skipping build");
|
|
49
|
-
return _cli.ActionResponse.Skipped(Build.name);
|
|
50
|
-
}
|
|
51
|
-
const { configuration: buildConfig } = options;
|
|
52
|
-
const projects = this.workspace.getProjects(buildConfig);
|
|
53
|
-
void this.fileWriter.warmup([
|
|
54
|
-
...projects
|
|
55
|
-
]);
|
|
56
|
-
const transformResults = await this.build(projects);
|
|
57
|
-
const errors = transformResults.filter((response)=>response.outcome === "failure");
|
|
58
|
-
if (errors.length > 0) {
|
|
59
|
-
const messages = transformResults.map((responses)=>responses.messages).join("\n");
|
|
60
|
-
throw new _errors.ForgeError(`Error building: ${messages}`);
|
|
61
|
-
}
|
|
62
|
-
for (const transformer of this.transformers){
|
|
63
|
-
if (transformer.watch && transformer.incrementalTransform$) {
|
|
64
|
-
transformer.watch(this.workspace);
|
|
65
|
-
transformer.incrementalTransform$.subscribe((responses)=>{
|
|
66
|
-
this.fileWriter.enqueueOutputs(responses);
|
|
67
|
-
void this.writeOutput();
|
|
68
|
-
const succeeded = responses.some((r)=>r.outcome === "success");
|
|
69
|
-
if (succeeded) {
|
|
70
|
-
this.#logger.info(`Transpiled ${responses[0].file.fullPath}`);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return _cli.ActionResponse.Success(Build.name, transformResults);
|
|
76
|
-
};
|
|
77
|
-
async build(projectArrayLike) {
|
|
78
|
-
const projects = Array.isArray(projectArrayLike) ? projectArrayLike : [
|
|
79
|
-
projectArrayLike
|
|
80
|
-
];
|
|
81
|
-
for (const project of projects){
|
|
82
|
-
this.#logger.info(`Building ${project.name}`);
|
|
83
|
-
}
|
|
84
|
-
return this.runTransformers(projects);
|
|
85
|
-
}
|
|
86
|
-
async runTransformers(projects, fileFilter) {
|
|
87
|
-
// Phase 1: sequential init — runs expensive setup (e.g. TypeScript createProgram)
|
|
88
|
-
// before any transformer's parallel workload (e.g. SWC/Rayon) starts.
|
|
89
|
-
for (const transformer of this.transformers){
|
|
90
|
-
await transformer.init?.(projects, fileFilter);
|
|
91
|
-
}
|
|
92
|
-
// Phase 2: parallel transform — all transformers run concurrently now that
|
|
93
|
-
// CPU-heavy init is complete.
|
|
94
|
-
const allResponses = (await Promise.all(this.transformers.map((t)=>t.transformProject(projects, fileFilter, (response)=>{
|
|
95
|
-
this.fileWriter.enqueueOutput(response);
|
|
96
|
-
})))).flat();
|
|
97
|
-
await this.writeOutput();
|
|
98
|
-
return allResponses;
|
|
99
|
-
}
|
|
100
|
-
async writeOutput() {
|
|
101
|
-
await this.fileWriter.flush();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
Build = _ts_decorate([
|
|
105
|
-
_diagnostics.Trace,
|
|
106
|
-
(0, _decorators.injectable)(),
|
|
107
|
-
_ts_param(1, (0, _decorators.inject)(_transformertype.TransformerKey)),
|
|
108
|
-
_ts_metadata("design:type", Function),
|
|
109
|
-
_ts_metadata("design:paramtypes", [
|
|
110
|
-
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace,
|
|
111
|
-
Array,
|
|
112
|
-
typeof _filewriterservice.FileWriterService === "undefined" ? Object : _filewriterservice.FileWriterService
|
|
113
|
-
])
|
|
114
|
-
], Build);
|
|
115
|
-
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2J1aWxkLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tIFwiQGRlY29oZXJlL2NydWNpYmxlL2RlY29yYXRvcnNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvZGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIHsgRmlsZUV4IH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcbmltcG9ydCB7IEZvcmdlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBGaWxlV3JpdGVyU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9maWxlLXdyaXRlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3BvbnNlIH0gZnJvbSBcIi4uL3R5cGVzL3RyYW5zZm9ybS1yZXNwb25zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2Zvcm1lciwgVHJhbnNmb3JtZXJLZXkgfSBmcm9tIFwiLi4vdHlwZXMvdHJhbnNmb3JtZXIudHlwZS5qc1wiO1xuXG5leHBvcnQgdHlwZSBCdWlsZE9wdGlvbnMgPSB7XG5cdGJ1aWxkPzogYm9vbGVhbjtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xuXHRmaWxlOiBzdHJpbmc7XG59O1xuXG5AVHJhY2VcbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCdWlsZCBpbXBsZW1lbnRzIEFjdGlvbjxCdWlsZE9wdGlvbnM+IHtcblx0I2xvZ2dlciA9IHNjcmliZS5sb2dnZXIoQnVpbGQubmFtZSk7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlLFxuXHRcdEBpbmplY3QoVHJhbnNmb3JtZXJLZXkpIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNmb3JtZXJzOiBUcmFuc2Zvcm1lcltdLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgZmlsZVdyaXRlcjogRmlsZVdyaXRlclNlcnZpY2UsXG5cdCkge1xuXHRcdGlmICghdHJhbnNmb3JtZXJzIHx8IHRyYW5zZm9ybWVycy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBGb3JnZUVycm9yKFwiQXQgbGVhc3Qgb25lIHRyYW5zZm9ybWVyIGlzIHJlcXVpcmVkXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBydW4gPSBhc3luYyAob3B0aW9uczogQnVpbGRPcHRpb25zKTogUHJvbWlzZTxBY3Rpb25SZXNwb25zZTxUcmFuc2Zvcm1SZXNwb25zZT4+ID0+IHtcblx0XHRpZiAob3B0aW9ucy5idWlsZCA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiU2tpcHBpbmcgYnVpbGRcIik7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU2tpcHBlZChCdWlsZC5uYW1lKSBhcyBBY3Rpb25SZXNwb25zZTxUcmFuc2Zvcm1SZXNwb25zZT47XG5cdFx0fVxuXHRcdGNvbnN0IHsgY29uZmlndXJhdGlvbjogYnVpbGRDb25maWcgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSB0aGlzLndvcmtzcGFjZS5nZXRQcm9qZWN0cyhidWlsZENvbmZpZyk7XG5cdFx0dm9pZCB0aGlzLmZpbGVXcml0ZXIud2FybXVwKFsuLi5wcm9qZWN0c10pO1xuXHRcdGNvbnN0IHRyYW5zZm9ybVJlc3VsdHMgPSBhd2FpdCB0aGlzLmJ1aWxkKHByb2plY3RzKTtcblxuXHRcdGNvbnN0IGVycm9ycyA9IHRyYW5zZm9ybVJlc3VsdHMuZmlsdGVyKChyZXNwb25zZSkgPT4gcmVzcG9uc2Uub3V0Y29tZSA9PT0gXCJmYWlsdXJlXCIpO1xuXHRcdGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZXMgPSB0cmFuc2Zvcm1SZXN1bHRzLm1hcCgocmVzcG9uc2VzKSA9PiByZXNwb25zZXMubWVzc2FnZXMpLmpvaW4oXCJcXG5cIik7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihgRXJyb3IgYnVpbGRpbmc6ICR7bWVzc2FnZXN9YCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCB0cmFuc2Zvcm1lciBvZiB0aGlzLnRyYW5zZm9ybWVycykge1xuXHRcdFx0aWYgKHRyYW5zZm9ybWVyLndhdGNoICYmIHRyYW5zZm9ybWVyLmluY3JlbWVudGFsVHJhbnNmb3JtJCkge1xuXHRcdFx0XHR0cmFuc2Zvcm1lci53YXRjaCh0aGlzLndvcmtzcGFjZSk7XG5cdFx0XHRcdHRyYW5zZm9ybWVyLmluY3JlbWVudGFsVHJhbnNmb3JtJC5zdWJzY3JpYmUoKHJlc3BvbnNlcykgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZmlsZVdyaXRlci5lbnF1ZXVlT3V0cHV0cyhyZXNwb25zZXMpO1xuXHRcdFx0XHRcdHZvaWQgdGhpcy53cml0ZU91dHB1dCgpO1xuXHRcdFx0XHRcdGNvbnN0IHN1Y2NlZWRlZCA9IHJlc3BvbnNlcy5zb21lKChyKSA9PiByLm91dGNvbWUgPT09IFwic3VjY2Vzc1wiKTtcblx0XHRcdFx0XHRpZiAoc3VjY2VlZGVkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgVHJhbnNwaWxlZCAke3Jlc3BvbnNlc1swXS5maWxlLmZ1bGxQYXRofWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoQnVpbGQubmFtZSwgdHJhbnNmb3JtUmVzdWx0cyk7XG5cdH07XG5cblx0cHVibGljIGFzeW5jIGJ1aWxkKFxuXHRcdHByb2plY3RBcnJheUxpa2U6IHJlYWRvbmx5IFByb2plY3RbXSB8IFByb2plY3QsXG5cdCk6IFByb21pc2U8VHJhbnNmb3JtUmVzcG9uc2VbXT4ge1xuXHRcdGNvbnN0IHByb2plY3RzOiBQcm9qZWN0W10gPSBBcnJheS5pc0FycmF5KHByb2plY3RBcnJheUxpa2UpXG5cdFx0XHQ/IHByb2plY3RBcnJheUxpa2Vcblx0XHRcdDogW3Byb2plY3RBcnJheUxpa2VdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYEJ1aWxkaW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5ydW5UcmFuc2Zvcm1lcnMocHJvamVjdHMpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5UcmFuc2Zvcm1lcnMoXG5cdFx0cHJvamVjdHM6IFByb2plY3QgfCBQcm9qZWN0W10sXG5cdFx0ZmlsZUZpbHRlcj86IChwcm9qZWN0OiBQcm9qZWN0KSA9PiBQcm9taXNlPEZpbGVFeFtdPixcblx0KSB7XG5cdFx0Ly8gUGhhc2UgMTogc2VxdWVudGlhbCBpbml0IOKAlCBydW5zIGV4cGVuc2l2ZSBzZXR1cCAoZS5nLiBUeXBlU2NyaXB0IGNyZWF0ZVByb2dyYW0pXG5cdFx0Ly8gYmVmb3JlIGFueSB0cmFuc2Zvcm1lcidzIHBhcmFsbGVsIHdvcmtsb2FkIChlLmcuIFNXQy9SYXlvbikgc3RhcnRzLlxuXHRcdGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdGhpcy50cmFuc2Zvcm1lcnMpIHtcblx0XHRcdGF3YWl0IHRyYW5zZm9ybWVyLmluaXQ/Lihwcm9qZWN0cywgZmlsZUZpbHRlcik7XG5cdFx0fVxuXHRcdC8vIFBoYXNlIDI6IHBhcmFsbGVsIHRyYW5zZm9ybSDigJQgYWxsIHRyYW5zZm9ybWVycyBydW4gY29uY3VycmVudGx5IG5vdyB0aGF0XG5cdFx0Ly8gQ1BVLWhlYXZ5IGluaXQgaXMgY29tcGxldGUuXG5cdFx0Y29uc3QgYWxsUmVzcG9uc2VzID0gKFxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtZXJzLm1hcCgodCkgPT5cblx0XHRcdFx0XHR0LnRyYW5zZm9ybVByb2plY3QocHJvamVjdHMsIGZpbGVGaWx0ZXIsIChyZXNwb25zZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5maWxlV3JpdGVyLmVucXVldWVPdXRwdXQocmVzcG9uc2UpO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpLFxuXHRcdFx0KVxuXHRcdCkuZmxhdCgpO1xuXHRcdGF3YWl0IHRoaXMud3JpdGVPdXRwdXQoKTtcblx0XHRyZXR1cm4gYWxsUmVzcG9uc2VzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyB3cml0ZU91dHB1dCgpIHtcblx0XHRhd2FpdCB0aGlzLmZpbGVXcml0ZXIuZmx1c2goKTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkJ1aWxkIiwic2NyaWJlIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInRyYW5zZm9ybWVycyIsImZpbGVXcml0ZXIiLCJsZW5ndGgiLCJGb3JnZUVycm9yIiwicnVuIiwib3B0aW9ucyIsImJ1aWxkIiwiaW5mbyIsIkFjdGlvblJlc3BvbnNlIiwiU2tpcHBlZCIsImNvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZyIsInByb2plY3RzIiwiZ2V0UHJvamVjdHMiLCJ3YXJtdXAiLCJ0cmFuc2Zvcm1SZXN1bHRzIiwiZXJyb3JzIiwiZmlsdGVyIiwicmVzcG9uc2UiLCJvdXRjb21lIiwibWVzc2FnZXMiLCJtYXAiLCJyZXNwb25zZXMiLCJqb2luIiwidHJhbnNmb3JtZXIiLCJ3YXRjaCIsImluY3JlbWVudGFsVHJhbnNmb3JtJCIsInN1YnNjcmliZSIsImVucXVldWVPdXRwdXRzIiwid3JpdGVPdXRwdXQiLCJzdWNjZWVkZWQiLCJzb21lIiwiciIsImZpbGUiLCJmdWxsUGF0aCIsIlN1Y2Nlc3MiLCJwcm9qZWN0QXJyYXlMaWtlIiwiQXJyYXkiLCJpc0FycmF5IiwicHJvamVjdCIsInJ1blRyYW5zZm9ybWVycyIsImZpbGVGaWx0ZXIiLCJpbml0IiwiYWxsUmVzcG9uc2VzIiwiUHJvbWlzZSIsImFsbCIsInQiLCJ0cmFuc2Zvcm1Qcm9qZWN0IiwiZW5xdWV1ZU91dHB1dCIsImZsYXQiLCJmbHVzaCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1QmFBOzs7ZUFBQUE7Ozs0QkF2QnNCO3NCQUdUO3FCQUVLOzZCQUNUO3dCQUVDO3dCQUNJO21DQUVPO2lDQUVlOzs7Ozs7Ozs7Ozs7Ozs7QUFVMUMsTUFBTUE7Ozs7SUFDWixDQUFBLE1BQU8sR0FBR0MsY0FBTSxDQUFDQyxNQUFNLENBQUNGLE1BQU1HLElBQUksRUFBRTtJQUNwQyxZQUNDLEFBQWlCQyxTQUFvQixFQUNyQyxBQUF5Q0MsWUFBMkIsRUFDcEUsQUFBaUJDLFVBQTZCLENBQzdDO2FBSGdCRixZQUFBQTthQUN3QkMsZUFBQUE7YUFDeEJDLGFBQUFBO1FBRWpCLElBQUksQ0FBQ0QsZ0JBQWdCQSxhQUFhRSxNQUFNLEtBQUssR0FBRztZQUMvQyxNQUFNLElBQUlDLGtCQUFVLENBQUM7UUFDdEI7SUFDRDtJQUVPQyxNQUFNLE9BQU9DO1FBQ25CLElBQUlBLFFBQVFDLEtBQUssS0FBSyxPQUFPO1lBQzVCLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCLE9BQU9DLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ2QsTUFBTUcsSUFBSTtRQUN6QztRQUNBLE1BQU0sRUFBRVksZUFBZUMsV0FBVyxFQUFFLEdBQUdOO1FBQ3ZDLE1BQU1PLFdBQVcsSUFBSSxDQUFDYixTQUFTLENBQUNjLFdBQVcsQ0FBQ0Y7UUFDNUMsS0FBSyxJQUFJLENBQUNWLFVBQVUsQ0FBQ2EsTUFBTSxDQUFDO2VBQUlGO1NBQVM7UUFDekMsTUFBTUcsbUJBQW1CLE1BQU0sSUFBSSxDQUFDVCxLQUFLLENBQUNNO1FBRTFDLE1BQU1JLFNBQVNELGlCQUFpQkUsTUFBTSxDQUFDLENBQUNDLFdBQWFBLFNBQVNDLE9BQU8sS0FBSztRQUMxRSxJQUFJSCxPQUFPZCxNQUFNLEdBQUcsR0FBRztZQUN0QixNQUFNa0IsV0FBV0wsaUJBQWlCTSxHQUFHLENBQUMsQ0FBQ0MsWUFBY0EsVUFBVUYsUUFBUSxFQUFFRyxJQUFJLENBQUM7WUFDOUUsTUFBTSxJQUFJcEIsa0JBQVUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFaUIsVUFBVTtRQUNuRDtRQUVBLEtBQUssTUFBTUksZUFBZSxJQUFJLENBQUN4QixZQUFZLENBQUU7WUFDNUMsSUFBSXdCLFlBQVlDLEtBQUssSUFBSUQsWUFBWUUscUJBQXFCLEVBQUU7Z0JBQzNERixZQUFZQyxLQUFLLENBQUMsSUFBSSxDQUFDMUIsU0FBUztnQkFDaEN5QixZQUFZRSxxQkFBcUIsQ0FBQ0MsU0FBUyxDQUFDLENBQUNMO29CQUM1QyxJQUFJLENBQUNyQixVQUFVLENBQUMyQixjQUFjLENBQUNOO29CQUMvQixLQUFLLElBQUksQ0FBQ08sV0FBVztvQkFDckIsTUFBTUMsWUFBWVIsVUFBVVMsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUViLE9BQU8sS0FBSztvQkFDdEQsSUFBSVcsV0FBVzt3QkFDZCxJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUN2QixJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUVlLFNBQVMsQ0FBQyxFQUFFLENBQUNXLElBQUksQ0FBQ0MsUUFBUSxFQUFFO29CQUM3RDtnQkFDRDtZQUNEO1FBQ0Q7UUFFQSxPQUFPMUIsbUJBQWMsQ0FBQzJCLE9BQU8sQ0FBQ3hDLE1BQU1HLElBQUksRUFBRWlCO0lBQzNDLEVBQUU7SUFFRixNQUFhVCxNQUNaOEIsZ0JBQThDLEVBQ2Y7UUFDL0IsTUFBTXhCLFdBQXNCeUIsTUFBTUMsT0FBTyxDQUFDRixvQkFDdkNBLG1CQUNBO1lBQUNBO1NBQWlCO1FBQ3JCLEtBQUssTUFBTUcsV0FBVzNCLFNBQVU7WUFDL0IsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDTCxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUVnQyxRQUFRekMsSUFBSSxFQUFFO1FBQzdDO1FBQ0EsT0FBTyxJQUFJLENBQUMwQyxlQUFlLENBQUM1QjtJQUM3QjtJQUVBLE1BQWM0QixnQkFDYjVCLFFBQTZCLEVBQzdCNkIsVUFBb0QsRUFDbkQ7UUFDRCxrRkFBa0Y7UUFDbEYsc0VBQXNFO1FBQ3RFLEtBQUssTUFBTWpCLGVBQWUsSUFBSSxDQUFDeEIsWUFBWSxDQUFFO1lBQzVDLE1BQU13QixZQUFZa0IsSUFBSSxHQUFHOUIsVUFBVTZCO1FBQ3BDO1FBQ0EsMkVBQTJFO1FBQzNFLDhCQUE4QjtRQUM5QixNQUFNRSxlQUFlLEFBQ3BCLENBQUEsTUFBTUMsUUFBUUMsR0FBRyxDQUNoQixJQUFJLENBQUM3QyxZQUFZLENBQUNxQixHQUFHLENBQUMsQ0FBQ3lCLElBQ3RCQSxFQUFFQyxnQkFBZ0IsQ0FBQ25DLFVBQVU2QixZQUFZLENBQUN2QjtnQkFDekMsSUFBSSxDQUFDakIsVUFBVSxDQUFDK0MsYUFBYSxDQUFDOUI7WUFDL0IsSUFFRixFQUNDK0IsSUFBSTtRQUNOLE1BQU0sSUFBSSxDQUFDcEIsV0FBVztRQUN0QixPQUFPYztJQUNSO0lBRUEsTUFBY2QsY0FBYztRQUMzQixNQUFNLElBQUksQ0FBQzVCLFVBQVUsQ0FBQ2lELEtBQUs7SUFDNUI7QUFDRCJ9
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "Clean", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return Clean;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _decorators = require("@decohere/crucible/decorators");
|
|
12
|
-
const _mesh = require("@decohere/mesh");
|
|
13
|
-
const _cli = require("@decohere/nexus/cli");
|
|
14
|
-
const _io = require("@decohere/nexus/io");
|
|
15
|
-
const _scribe = require("@decohere/scribe");
|
|
16
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
17
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
18
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
20
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
|
-
}
|
|
22
|
-
function _ts_metadata(k, v) {
|
|
23
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
24
|
-
}
|
|
25
|
-
class Clean {
|
|
26
|
-
workspace;
|
|
27
|
-
#logger = _scribe.scribe.logger(Clean.name);
|
|
28
|
-
constructor(workspace){
|
|
29
|
-
this.workspace = workspace;
|
|
30
|
-
}
|
|
31
|
-
run = async (options)=>{
|
|
32
|
-
if (!options.clean) {
|
|
33
|
-
this.#logger.info("Skipping clean");
|
|
34
|
-
return _cli.ActionResponse.Skipped(Clean.name);
|
|
35
|
-
}
|
|
36
|
-
const outDirs = this.workspace.getProjects(options.configuration).map((proj)=>proj.getRootOut()).filter((dir, i, arr)=>arr.indexOf(dir) === i); // dedupe
|
|
37
|
-
await Promise.all(outDirs.map(async (outDir)=>{
|
|
38
|
-
await _io.io.removeDir(outDir, {
|
|
39
|
-
force: true,
|
|
40
|
-
recursive: true
|
|
41
|
-
});
|
|
42
|
-
this.#logger.trace(`Cleaned ${outDir}`);
|
|
43
|
-
}));
|
|
44
|
-
return _cli.ActionResponse.Success(Clean.name);
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
Clean = _ts_decorate([
|
|
48
|
-
(0, _decorators.injectable)(),
|
|
49
|
-
_ts_metadata("design:type", Function),
|
|
50
|
-
_ts_metadata("design:paramtypes", [
|
|
51
|
-
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
|
|
52
|
-
])
|
|
53
|
-
], Clean);
|
|
54
|
-
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2NsZWFuLmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS91c2VJbXBvcnRUeXBlOiA8REk+XG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tIFwiQGRlY29oZXJlL21lc2hcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IGlvIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pb1wiO1xuaW1wb3J0IHsgc2NyaWJlIH0gZnJvbSBcIkBkZWNvaGVyZS9zY3JpYmVcIjtcblxuZXhwb3J0IHR5cGUgQ2xlYW5PcHRpb25zID0ge1xuXHRjbGVhbjogYm9vbGVhbjtcblx0Y29uZmlndXJhdGlvbjogc3RyaW5nO1xufTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENsZWFuIGltcGxlbWVudHMgQWN0aW9uPENsZWFuT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihDbGVhbi5uYW1lKTtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlOiBXb3Jrc3BhY2UpIHt9XG5cblx0cHVibGljIHJ1biA9IGFzeW5jIChvcHRpb25zOiBDbGVhbk9wdGlvbnMpOiBQcm9taXNlPEFjdGlvblJlc3BvbnNlPiA9PiB7XG5cdFx0aWYgKCFvcHRpb25zLmNsZWFuKSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhcIlNraXBwaW5nIGNsZWFuXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlNraXBwZWQoQ2xlYW4ubmFtZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb3V0RGlycyA9IHRoaXMud29ya3NwYWNlXG5cdFx0XHQuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKVxuXHRcdFx0Lm1hcCgocHJvaikgPT4gcHJvai5nZXRSb290T3V0KCkpXG5cdFx0XHQuZmlsdGVyKChkaXIsIGksIGFycikgPT4gYXJyLmluZGV4T2YoZGlyKSA9PT0gaSk7IC8vIGRlZHVwZVxuXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRvdXREaXJzLm1hcChhc3luYyAob3V0RGlyKSA9PiB7XG5cdFx0XHRcdGF3YWl0IGlvLnJlbW92ZURpcihvdXREaXIsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLnRyYWNlKGBDbGVhbmVkICR7b3V0RGlyfWApO1xuXHRcdFx0fSksXG5cdFx0KTtcblxuXHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5TdWNjZXNzKENsZWFuLm5hbWUpO1xuXHR9O1xufVxuIl0sIm5hbWVzIjpbIkNsZWFuIiwic2NyaWJlIiwibG9nZ2VyIiwibmFtZSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJjbGVhbiIsImluZm8iLCJBY3Rpb25SZXNwb25zZSIsIlNraXBwZWQiLCJvdXREaXJzIiwiZ2V0UHJvamVjdHMiLCJjb25maWd1cmF0aW9uIiwibWFwIiwicHJvaiIsImdldFJvb3RPdXQiLCJmaWx0ZXIiLCJkaXIiLCJpIiwiYXJyIiwiaW5kZXhPZiIsIlByb21pc2UiLCJhbGwiLCJvdXREaXIiLCJpbyIsInJlbW92ZURpciIsImZvcmNlIiwicmVjdXJzaXZlIiwidHJhY2UiLCJTdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7OytCQWNhQTs7O2VBQUFBOzs7NEJBZGM7c0JBRUQ7cUJBRUs7b0JBQ1o7d0JBQ0k7Ozs7Ozs7Ozs7QUFRaEIsTUFBTUE7O0lBQ1osQ0FBQSxNQUFPLEdBQUdDLGNBQU0sQ0FBQ0MsTUFBTSxDQUFDRixNQUFNRyxJQUFJLEVBQUU7SUFDcEMsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRXBEQyxNQUFNLE9BQU9DO1FBQ25CLElBQUksQ0FBQ0EsUUFBUUMsS0FBSyxFQUFFO1lBQ25CLElBQUksQ0FBQyxDQUFBLE1BQU8sQ0FBQ0MsSUFBSSxDQUFDO1lBQ2xCLE9BQU9DLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ1YsTUFBTUcsSUFBSTtRQUN6QztRQUVBLE1BQU1RLFVBQVUsSUFBSSxDQUFDUCxTQUFTLENBQzVCUSxXQUFXLENBQUNOLFFBQVFPLGFBQWEsRUFDakNDLEdBQUcsQ0FBQyxDQUFDQyxPQUFTQSxLQUFLQyxVQUFVLElBQzdCQyxNQUFNLENBQUMsQ0FBQ0MsS0FBS0MsR0FBR0MsTUFBUUEsSUFBSUMsT0FBTyxDQUFDSCxTQUFTQyxJQUFJLFNBQVM7UUFFNUQsTUFBTUcsUUFBUUMsR0FBRyxDQUNoQlosUUFBUUcsR0FBRyxDQUFDLE9BQU9VO1lBQ2xCLE1BQU1DLE1BQUUsQ0FBQ0MsU0FBUyxDQUFDRixRQUFRO2dCQUFFRyxPQUFPO2dCQUFNQyxXQUFXO1lBQUs7WUFDMUQsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUVMLFFBQVE7UUFDdkM7UUFHRCxPQUFPZixtQkFBYyxDQUFDcUIsT0FBTyxDQUFDOUIsTUFBTUcsSUFBSTtJQUN6QyxFQUFFO0FBQ0gifQ==
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CommitFiles", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return CommitFiles;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
12
|
-
const _decorators = require("@decohere/crucible/decorators");
|
|
13
|
-
const _mesh = require("@decohere/mesh");
|
|
14
|
-
const _cli = require("@decohere/nexus/cli");
|
|
15
|
-
const _interop = require("@decohere/nexus/interop");
|
|
16
|
-
const _scribe = require("@decohere/scribe");
|
|
17
|
-
const _errors = require("../errors.js");
|
|
18
|
-
const _workspaceconfig = require("../workspace.config.js");
|
|
19
|
-
function _interop_require_default(obj) {
|
|
20
|
-
return obj && obj.__esModule ? obj : {
|
|
21
|
-
default: obj
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
25
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
26
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
27
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
28
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
29
|
-
}
|
|
30
|
-
function _ts_metadata(k, v) {
|
|
31
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
32
|
-
}
|
|
33
|
-
const KnownLockFiles = [
|
|
34
|
-
"pnpm-lock.yaml"
|
|
35
|
-
];
|
|
36
|
-
class CommitFiles {
|
|
37
|
-
workspace;
|
|
38
|
-
#logger = _scribe.scribe.logger(CommitFiles.name);
|
|
39
|
-
#git = new _interop.Git();
|
|
40
|
-
constructor(workspace){
|
|
41
|
-
this.workspace = workspace;
|
|
42
|
-
}
|
|
43
|
-
async run(options) {
|
|
44
|
-
if (!options.commit) {
|
|
45
|
-
return _cli.ActionResponse.Skipped(CommitFiles.name);
|
|
46
|
-
}
|
|
47
|
-
if (options.dryRun) {
|
|
48
|
-
this.#logger.info("[dry-run] Skipping commit");
|
|
49
|
-
return _cli.ActionResponse.Skipped(CommitFiles.name);
|
|
50
|
-
}
|
|
51
|
-
const files = options.files ?? this.getDefaultFiles(options.configuration ?? _workspaceconfig.Release.name);
|
|
52
|
-
if (files.length === 0) {
|
|
53
|
-
this.#logger.info("No files provided for commit, skipping");
|
|
54
|
-
return _cli.ActionResponse.Skipped(CommitFiles.name);
|
|
55
|
-
}
|
|
56
|
-
const message = options.message ?? "chore: sync workspace package manifests [skip ci]";
|
|
57
|
-
this.#logger.info(`Committing synced manifests: ${message}`);
|
|
58
|
-
try {
|
|
59
|
-
await this.#git.commit(message, {
|
|
60
|
-
files
|
|
61
|
-
});
|
|
62
|
-
return _cli.ActionResponse.Success(CommitFiles.name);
|
|
63
|
-
} catch (reason) {
|
|
64
|
-
return _cli.ActionResponse.Error(CommitFiles.name, `Failed committing files: ${(0, _errors.formatUnknownError)(reason)}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
getDefaultFiles(configuration) {
|
|
68
|
-
const cwd = process.cwd();
|
|
69
|
-
const manifestFiles = [
|
|
70
|
-
_nodepath.default.relative(cwd, _nodepath.default.resolve(this.workspace.packageJsonPath)),
|
|
71
|
-
...this.workspace.getProjects(configuration).map((project)=>_nodepath.default.relative(cwd, _nodepath.default.resolve(project.packageJsonPath)))
|
|
72
|
-
];
|
|
73
|
-
return [
|
|
74
|
-
...manifestFiles,
|
|
75
|
-
...KnownLockFiles
|
|
76
|
-
];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
CommitFiles = _ts_decorate([
|
|
80
|
-
(0, _decorators.injectable)(),
|
|
81
|
-
_ts_metadata("design:type", Function),
|
|
82
|
-
_ts_metadata("design:paramtypes", [
|
|
83
|
-
typeof _mesh.Workspace === "undefined" ? Object : _mesh.Workspace
|
|
84
|
-
])
|
|
85
|
-
], CommitFiles);
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2NvbW1pdC5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBBY3Rpb25SZXNwb25zZSB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvY2xpXCI7XG5pbXBvcnQgeyBHaXQgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2ludGVyb3BcIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBSZWxlYXNlIH0gZnJvbSBcIi4uL3dvcmtzcGFjZS5jb25maWcuanNcIjtcblxuZXhwb3J0IHR5cGUgQ29tbWl0RmlsZXNPcHRpb25zID0ge1xuXHRjb25maWd1cmF0aW9uPzogc3RyaW5nO1xuXHRjb21taXQ/OiBib29sZWFuO1xuXHRtZXNzYWdlPzogc3RyaW5nO1xuXHRmaWxlcz86IHN0cmluZ1tdO1xuXHRkcnlSdW4/OiBib29sZWFuO1xufTtcblxuY29uc3QgS25vd25Mb2NrRmlsZXMgPSBbXCJwbnBtLWxvY2sueWFtbFwiXTtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbW1pdEZpbGVzIGltcGxlbWVudHMgQWN0aW9uPENvbW1pdEZpbGVzT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihDb21taXRGaWxlcy5uYW1lKTtcblx0I2dpdCA9IG5ldyBHaXQoKTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3b3Jrc3BhY2U6IFdvcmtzcGFjZSkge31cblxuXHRwdWJsaWMgYXN5bmMgcnVuKG9wdGlvbnM6IENvbW1pdEZpbGVzT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U+IHtcblx0XHRpZiAoIW9wdGlvbnMuY29tbWl0KSB7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuU2tpcHBlZChDb21taXRGaWxlcy5uYW1lKTtcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5kcnlSdW4pIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiW2RyeS1ydW5dIFNraXBwaW5nIGNvbW1pdFwiKTtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5Ta2lwcGVkKENvbW1pdEZpbGVzLm5hbWUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpbGVzID0gb3B0aW9ucy5maWxlcyA/PyB0aGlzLmdldERlZmF1bHRGaWxlcyhvcHRpb25zLmNvbmZpZ3VyYXRpb24gPz8gUmVsZWFzZS5uYW1lKTtcblx0XHRpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhcIk5vIGZpbGVzIHByb3ZpZGVkIGZvciBjb21taXQsIHNraXBwaW5nXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlNraXBwZWQoQ29tbWl0RmlsZXMubmFtZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZSA/PyBcImNob3JlOiBzeW5jIHdvcmtzcGFjZSBwYWNrYWdlIG1hbmlmZXN0cyBbc2tpcCBjaV1cIjtcblx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgQ29tbWl0dGluZyBzeW5jZWQgbWFuaWZlc3RzOiAke21lc3NhZ2V9YCk7XG5cblx0XHR0cnkge1xuXHRcdFx0YXdhaXQgdGhpcy4jZ2l0LmNvbW1pdChtZXNzYWdlLCB7IGZpbGVzIH0pO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoQ29tbWl0RmlsZXMubmFtZSk7XG5cdFx0fSBjYXRjaCAocmVhc29uKSB7XG5cdFx0XHRyZXR1cm4gQWN0aW9uUmVzcG9uc2UuRXJyb3IoXG5cdFx0XHRcdENvbW1pdEZpbGVzLm5hbWUsXG5cdFx0XHRcdGBGYWlsZWQgY29tbWl0dGluZyBmaWxlczogJHtmb3JtYXRVbmtub3duRXJyb3IocmVhc29uKX1gLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldERlZmF1bHRGaWxlcyhjb25maWd1cmF0aW9uOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcblx0XHRjb25zdCBtYW5pZmVzdEZpbGVzID0gW1xuXHRcdFx0cGF0aC5yZWxhdGl2ZShjd2QsIHBhdGgucmVzb2x2ZSh0aGlzLndvcmtzcGFjZS5wYWNrYWdlSnNvblBhdGgpKSxcblx0XHRcdC4uLnRoaXMud29ya3NwYWNlXG5cdFx0XHRcdC5nZXRQcm9qZWN0cyhjb25maWd1cmF0aW9uKVxuXHRcdFx0XHQubWFwKChwcm9qZWN0KSA9PiBwYXRoLnJlbGF0aXZlKGN3ZCwgcGF0aC5yZXNvbHZlKHByb2plY3QucGFja2FnZUpzb25QYXRoKSkpLFxuXHRcdF07XG5cblx0XHRyZXR1cm4gWy4uLm1hbmlmZXN0RmlsZXMsIC4uLktub3duTG9ja0ZpbGVzXTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkNvbW1pdEZpbGVzIiwiS25vd25Mb2NrRmlsZXMiLCJzY3JpYmUiLCJsb2dnZXIiLCJuYW1lIiwiR2l0Iiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsImNvbW1pdCIsIkFjdGlvblJlc3BvbnNlIiwiU2tpcHBlZCIsImRyeVJ1biIsImluZm8iLCJmaWxlcyIsImdldERlZmF1bHRGaWxlcyIsImNvbmZpZ3VyYXRpb24iLCJSZWxlYXNlIiwibGVuZ3RoIiwibWVzc2FnZSIsIlN1Y2Nlc3MiLCJyZWFzb24iLCJFcnJvciIsImZvcm1hdFVua25vd25FcnJvciIsImN3ZCIsInByb2Nlc3MiLCJtYW5pZmVzdEZpbGVzIiwicGF0aCIsInJlbGF0aXZlIiwicmVzb2x2ZSIsInBhY2thZ2VKc29uUGF0aCIsImdldFByb2plY3RzIiwibWFwIiwicHJvamVjdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFzQmFBOzs7ZUFBQUE7OztpRUF0Qkk7NEJBQ1U7c0JBRUQ7cUJBRUs7eUJBQ1g7d0JBQ0c7d0JBQ1k7aUNBQ1g7Ozs7Ozs7Ozs7Ozs7OztBQVV4QixNQUFNQyxpQkFBaUI7SUFBQztDQUFpQjtBQUdsQyxNQUFNRDs7SUFDWixDQUFBLE1BQU8sR0FBR0UsY0FBTSxDQUFDQyxNQUFNLENBQUNILFlBQVlJLElBQUksRUFBRTtJQUMxQyxDQUFBLEdBQUksR0FBRyxJQUFJQyxZQUFHLEdBQUc7SUFFakIsWUFBbUIsQUFBaUJDLFNBQW9CLENBQUU7YUFBdEJBLFlBQUFBO0lBQXVCO0lBRTNELE1BQWFDLElBQUlDLE9BQTJCLEVBQTJCO1FBQ3RFLElBQUksQ0FBQ0EsUUFBUUMsTUFBTSxFQUFFO1lBQ3BCLE9BQU9DLG1CQUFjLENBQUNDLE9BQU8sQ0FBQ1gsWUFBWUksSUFBSTtRQUMvQztRQUVBLElBQUlJLFFBQVFJLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNDLElBQUksQ0FBQztZQUNsQixPQUFPSCxtQkFBYyxDQUFDQyxPQUFPLENBQUNYLFlBQVlJLElBQUk7UUFDL0M7UUFFQSxNQUFNVSxRQUFRTixRQUFRTSxLQUFLLElBQUksSUFBSSxDQUFDQyxlQUFlLENBQUNQLFFBQVFRLGFBQWEsSUFBSUMsd0JBQU8sQ0FBQ2IsSUFBSTtRQUN6RixJQUFJVSxNQUFNSSxNQUFNLEtBQUssR0FBRztZQUN2QixJQUFJLENBQUMsQ0FBQSxNQUFPLENBQUNMLElBQUksQ0FBQztZQUNsQixPQUFPSCxtQkFBYyxDQUFDQyxPQUFPLENBQUNYLFlBQVlJLElBQUk7UUFDL0M7UUFFQSxNQUFNZSxVQUFVWCxRQUFRVyxPQUFPLElBQUk7UUFDbkMsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDTixJQUFJLENBQUMsQ0FBQyw2QkFBNkIsRUFBRU0sU0FBUztRQUUzRCxJQUFJO1lBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUNWLE1BQU0sQ0FBQ1UsU0FBUztnQkFBRUw7WUFBTTtZQUN4QyxPQUFPSixtQkFBYyxDQUFDVSxPQUFPLENBQUNwQixZQUFZSSxJQUFJO1FBQy9DLEVBQUUsT0FBT2lCLFFBQVE7WUFDaEIsT0FBT1gsbUJBQWMsQ0FBQ1ksS0FBSyxDQUMxQnRCLFlBQVlJLElBQUksRUFDaEIsQ0FBQyx5QkFBeUIsRUFBRW1CLElBQUFBLDBCQUFrQixFQUFDRixTQUFTO1FBRTFEO0lBQ0Q7SUFFUU4sZ0JBQWdCQyxhQUFxQixFQUFZO1FBQ3hELE1BQU1RLE1BQU1DLFFBQVFELEdBQUc7UUFDdkIsTUFBTUUsZ0JBQWdCO1lBQ3JCQyxpQkFBSSxDQUFDQyxRQUFRLENBQUNKLEtBQUtHLGlCQUFJLENBQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUN2QixTQUFTLENBQUN3QixlQUFlO2VBQzNELElBQUksQ0FBQ3hCLFNBQVMsQ0FDZnlCLFdBQVcsQ0FBQ2YsZUFDWmdCLEdBQUcsQ0FBQyxDQUFDQyxVQUFZTixpQkFBSSxDQUFDQyxRQUFRLENBQUNKLEtBQUtHLGlCQUFJLENBQUNFLE9BQU8sQ0FBQ0ksUUFBUUgsZUFBZTtTQUMxRTtRQUVELE9BQU87ZUFBSUo7ZUFBa0J6QjtTQUFlO0lBQzdDO0FBQ0QifQ==
|