feat: Save uses dependencies, which ensure the id is from manifest

This commit is contained in:
BluJ
2023-04-27 09:27:03 -06:00
parent d55cc40b33
commit 353692bf55
3 changed files with 34 additions and 16 deletions

View File

@@ -1,15 +1,25 @@
import { GenericManifest } from "../manifest/ManifestTypes";
import { Dependency, PackageId } from "../types";
export function exists(id: PackageId) {
return {
id,
kind: "exists",
} as Dependency;
}
export type Dependencies<T extends GenericManifest> = {
exists(id: keyof T["dependencies"]): Dependency;
running(id: keyof T["dependencies"]): Dependency;
};
export function running(id: PackageId) {
return {
id,
kind: "running",
} as Dependency;
}
export const dependenciesSet = <
T extends GenericManifest,
>(): Dependencies<T> => ({
exists(id: keyof T["dependencies"]) {
return {
id,
kind: "exists",
} as Dependency;
},
running(id: keyof T["dependencies"]) {
return {
id,
kind: "running",
} as Dependency;
},
});