@hauska-sdk/node-manager 0.1.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/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hauska-sdk/node-manager
|
|
3
|
+
*
|
|
4
|
+
* Provision and manage IPFS nodes for Hauska SDK consumers.
|
|
5
|
+
* Supports fly.io, GCP, AWS, and Docker.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { NodeManager } from '@hauska-sdk/node-manager';
|
|
9
|
+
*
|
|
10
|
+
* const manager = new NodeManager({ provider: 'fly.io' });
|
|
11
|
+
* await manager.provision({ region: 'iad', memory: '512mb' });
|
|
12
|
+
* const { apiUrl, gatewayUrl } = await manager.getEndpoints();
|
|
13
|
+
*/
|
|
14
|
+
export type NodeProvider = "fly.io" | "gcp" | "aws" | "docker";
|
|
15
|
+
export interface NodeManagerConfig {
|
|
16
|
+
provider: NodeProvider;
|
|
17
|
+
authToken?: string;
|
|
18
|
+
projectId?: string;
|
|
19
|
+
region?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface NodeEndpoints {
|
|
22
|
+
apiUrl: string;
|
|
23
|
+
gatewayUrl: string;
|
|
24
|
+
peerId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ProvisionOptions {
|
|
27
|
+
region?: string;
|
|
28
|
+
memory?: string;
|
|
29
|
+
replicas?: number;
|
|
30
|
+
name?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface NodeStatus {
|
|
33
|
+
healthy: boolean;
|
|
34
|
+
peerId?: string;
|
|
35
|
+
version?: string;
|
|
36
|
+
peers?: number;
|
|
37
|
+
repoSize?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* NodeManager — provision and manage IPFS nodes for Hauska SDK
|
|
41
|
+
*
|
|
42
|
+
* Status: Scaffold only. Provider implementations are stubs.
|
|
43
|
+
* Full implementations coming in node-manager v0.2.
|
|
44
|
+
*/
|
|
45
|
+
export declare class NodeManager {
|
|
46
|
+
private config;
|
|
47
|
+
constructor(config: NodeManagerConfig);
|
|
48
|
+
/**
|
|
49
|
+
* Provision a new IPFS node with the configured provider.
|
|
50
|
+
* Returns endpoints once the node is ready.
|
|
51
|
+
*/
|
|
52
|
+
provision(_options?: ProvisionOptions): Promise<NodeEndpoints>;
|
|
53
|
+
/**
|
|
54
|
+
* Get endpoints for an already-running node.
|
|
55
|
+
*/
|
|
56
|
+
getEndpoints(): Promise<NodeEndpoints>;
|
|
57
|
+
/**
|
|
58
|
+
* Check health of a running node.
|
|
59
|
+
*/
|
|
60
|
+
checkHealth(apiUrl: string): Promise<NodeStatus>;
|
|
61
|
+
/**
|
|
62
|
+
* Docker run command for local development.
|
|
63
|
+
* Copy-paste this to get an IPFS node running locally.
|
|
64
|
+
*/
|
|
65
|
+
static dockerDevCommand(port?: number, gatewayPort?: number): string;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAIrC;;;OAGG;IAEG,SAAS,CAAC,QAAQ,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IASxE;;OAEG;IAEG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IAM5C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBtD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,SAAO,EAAE,WAAW,SAAO,GAAG,MAAM;CAWjE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hauska-sdk/node-manager
|
|
3
|
+
*
|
|
4
|
+
* Provision and manage IPFS nodes for Hauska SDK consumers.
|
|
5
|
+
* Supports fly.io, GCP, AWS, and Docker.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { NodeManager } from '@hauska-sdk/node-manager';
|
|
9
|
+
*
|
|
10
|
+
* const manager = new NodeManager({ provider: 'fly.io' });
|
|
11
|
+
* await manager.provision({ region: 'iad', memory: '512mb' });
|
|
12
|
+
* const { apiUrl, gatewayUrl } = await manager.getEndpoints();
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* NodeManager — provision and manage IPFS nodes for Hauska SDK
|
|
16
|
+
*
|
|
17
|
+
* Status: Scaffold only. Provider implementations are stubs.
|
|
18
|
+
* Full implementations coming in node-manager v0.2.
|
|
19
|
+
*/
|
|
20
|
+
export class NodeManager {
|
|
21
|
+
config;
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Provision a new IPFS node with the configured provider.
|
|
27
|
+
* Returns endpoints once the node is ready.
|
|
28
|
+
*/
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
30
|
+
async provision(_options = {}) {
|
|
31
|
+
throw new Error(`NodeManager.provision() not yet implemented for provider: ${this.config.provider}. ` +
|
|
32
|
+
`Coming in @hauska-sdk/node-manager v0.2. ` +
|
|
33
|
+
`For now, run IPFS manually with Docker: ` +
|
|
34
|
+
`docker run -d -p 5001:5001 -p 8080:8080 ipfs/kubo`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get endpoints for an already-running node.
|
|
38
|
+
*/
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
40
|
+
async getEndpoints() {
|
|
41
|
+
throw new Error(`NodeManager.getEndpoints() not yet implemented for provider: ${this.config.provider}.`);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check health of a running node.
|
|
45
|
+
*/
|
|
46
|
+
async checkHealth(apiUrl) {
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(`${apiUrl}/api/v0/id`, { method: "POST" });
|
|
49
|
+
if (!response.ok)
|
|
50
|
+
return { healthy: false };
|
|
51
|
+
const data = (await response.json());
|
|
52
|
+
return {
|
|
53
|
+
healthy: true,
|
|
54
|
+
peerId: data.ID,
|
|
55
|
+
version: data.AgentVersion,
|
|
56
|
+
peers: Array.isArray(data.Peers) ? data.Peers.length : 0,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return { healthy: false };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Docker run command for local development.
|
|
65
|
+
* Copy-paste this to get an IPFS node running locally.
|
|
66
|
+
*/
|
|
67
|
+
static dockerDevCommand(port = 5001, gatewayPort = 8080) {
|
|
68
|
+
return [
|
|
69
|
+
"docker run -d",
|
|
70
|
+
`--name hauska-ipfs`,
|
|
71
|
+
`-p ${port}:5001`,
|
|
72
|
+
`-p ${gatewayPort}:8080`,
|
|
73
|
+
`-v hauska-ipfs-data:/data/ipfs`,
|
|
74
|
+
"ipfs/kubo:latest",
|
|
75
|
+
"--migrate=true --agent-version-suffix=hauska",
|
|
76
|
+
].join(" \\\n ");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgCH;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAoB;IAElC,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,4DAA4D;IAC5D,KAAK,CAAC,SAAS,CAAC,WAA6B,EAAE;QAC7C,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI;YACnF,2CAA2C;YAC3C,0CAA0C;YAC1C,mDAAmD,CACtD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,4DAA4D;IAC5D,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,KAAK,CACb,gEAAgE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CACxF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAIlC,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,OAAO,EAAE,IAAI,CAAC,YAAY;gBAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACzD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI;QACrD,OAAO;YACL,eAAe;YACf,oBAAoB;YACpB,MAAM,IAAI,OAAO;YACjB,MAAM,WAAW,OAAO;YACxB,gCAAgC;YAChC,kBAAkB;YAClB,8CAA8C;SAC/C,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hauska-sdk/node-manager",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Provision and manage IPFS nodes for Hauska SDK — fly.io, GCP, AWS, Docker",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"clean": "rimraf dist",
|
|
17
|
+
"type-check": "tsc --noEmit"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"typescript": "^5.3.3",
|
|
22
|
+
"rimraf": "^5.0.5",
|
|
23
|
+
"@types/node": "^20.11.0"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"hauska",
|
|
27
|
+
"ipfs",
|
|
28
|
+
"node-manager",
|
|
29
|
+
"provisioning",
|
|
30
|
+
"fly.io",
|
|
31
|
+
"gcp",
|
|
32
|
+
"aws",
|
|
33
|
+
"docker"
|
|
34
|
+
],
|
|
35
|
+
"author": "Hauska SDK Team",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public",
|
|
39
|
+
"registry": "https://registry.npmjs.org"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/hauska-sdk/hauska-sdk.git",
|
|
44
|
+
"directory": "packages/adapters/node-manager"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18.0.0",
|
|
48
|
+
"npm": ">=9.0.0"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"README.md"
|
|
53
|
+
]
|
|
54
|
+
}
|