Skip to content

Commit 030c3f0

Browse files
committed
feat: add initial interfaces for package-management
1 parent 6196b64 commit 030c3f0

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
// This is a WIP declaration file and it is not being used yet
2+
3+
interface IPackageJSON {
4+
name?: string;
5+
version?: string;
6+
dependencies?: any;
7+
devDependencies?: any;
8+
9+
[key: string]: any;
10+
}
11+
12+
interface IPackageInfo {
13+
name: string;
14+
version: string;
15+
}
16+
17+
/**
18+
* A package identifier can be any of the following:
19+
* - <package name>
20+
* - <package name>@<version>
21+
* - <package name>@<version range>
22+
* - <package name>@<tag>
23+
* - <git repo url>
24+
* - <tarball url>
25+
* - <tarball file>
26+
* - <folder>
27+
*/
28+
type IPackageIdentifier = string;
29+
30+
interface IPackageManagerOptions {
31+
projectPath?: string;
32+
}
33+
interface IPackageManagerAddOptions extends IPackageManagerOptions {
34+
version?: string;
35+
exact?: boolean;
36+
scripts?: boolean;
37+
38+
// these 3 are shared with the remove options, however
39+
// they are duplicated as they don't quite make sense
40+
// to be added to IPackageManagerOptions as they are
41+
// specific to add and remove operations
42+
save?: boolean;
43+
dev?: boolean;
44+
optional?: boolean;
45+
}
46+
interface IPackageManagerRemoveOptions extends IPackageManagerOptions {
47+
save?: boolean;
48+
dev?: boolean;
49+
optional?: boolean;
50+
}
51+
52+
interface IPackageManager {
53+
add(
54+
packageIdentifier: IPackageIdentifier,
55+
options?: IPackageManagerAddOptions
56+
): Promise<IPackageInfo>;
57+
install(
58+
packageIdentifier: IPackageIdentifier,
59+
options?: IPackageManagerAddOptions
60+
): Promise<IPackageInfo>;
61+
62+
remove(
63+
packageIdentifier: IPackageIdentifier,
64+
options?: IPackageManagerRemoveOptions
65+
): Promise<IPackageInfo>;
66+
uninstall(
67+
packageIdentifier: IPackageIdentifier,
68+
options?: IPackageManagerRemoveOptions
69+
): Promise<IPackageInfo>;
70+
71+
getInstalledPackage(
72+
packageIdentifier: IPackageIdentifier
73+
): Promise<IPackageInfo>;
74+
getPackageJson(packageIdentifier: IPackageIdentifier): Promise<IPackageJSON>;
75+
}

0 commit comments

Comments
 (0)