@kb-labs/marketplace-app 0.1.1
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/package.json +36 -0
- package/src/bootstrap.ts +57 -0
- package/src/index.ts +11 -0
- package/src/manifest.ts +20 -0
- package/tsconfig.build.json +10 -0
- package/tsconfig.json +7 -0
- package/tsup.config.ts +8 -0
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kb-labs/marketplace-app",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "KB Labs Marketplace service — Fastify entrypoint",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"clean": "rimraf dist",
|
|
9
|
+
"build": "tsup",
|
|
10
|
+
"dev": "tsx watch src/index.ts",
|
|
11
|
+
"start": "node dist/index.js",
|
|
12
|
+
"type-check": "tsc --noEmit",
|
|
13
|
+
"lint": "eslint .",
|
|
14
|
+
"lint:fix": "eslint . --fix",
|
|
15
|
+
"test": "vitest run --passWithNoTests -c ../../vitest.config.ts"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@kb-labs/marketplace-api": "^0.1.1",
|
|
19
|
+
"@kb-labs/marketplace-core": "^0.1.1",
|
|
20
|
+
"@kb-labs/marketplace-npm": "^0.1.1",
|
|
21
|
+
"@kb-labs/shared-http": "^1.3.0",
|
|
22
|
+
"@kb-labs/core-runtime": "^1.5.0",
|
|
23
|
+
"@kb-labs/core-platform": "^1.5.0",
|
|
24
|
+
"@kb-labs/core-sys": "^1.5.0",
|
|
25
|
+
"fastify": "^5.3.3"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"tsup": "^8.5.0",
|
|
29
|
+
"tsx": "^4.20.5",
|
|
30
|
+
"@kb-labs/devkit": "link:../../../../infra/kb-labs-devkit",
|
|
31
|
+
"@types/node": "^24.3.3"
|
|
32
|
+
},
|
|
33
|
+
"kb": {
|
|
34
|
+
"manifest": "./dist/manifest.js"
|
|
35
|
+
}
|
|
36
|
+
}
|
package/src/bootstrap.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @kb-labs/marketplace-app/bootstrap
|
|
3
|
+
* Server bootstrap: initPlatform → MarketplaceService → Fastify server.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { platform, createServiceBootstrap, loadEnvFromRoot } from '@kb-labs/core-runtime';
|
|
7
|
+
import { createCorrelatedLogger } from '@kb-labs/shared-http';
|
|
8
|
+
import { findRepoRoot } from '@kb-labs/core-sys';
|
|
9
|
+
import { createServer } from '@kb-labs/marketplace-api';
|
|
10
|
+
import { MarketplaceService } from '@kb-labs/marketplace-core';
|
|
11
|
+
import { NpmPackageSource } from '@kb-labs/marketplace-npm';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_PORT = 5070;
|
|
14
|
+
const DEFAULT_HOST = '0.0.0.0';
|
|
15
|
+
|
|
16
|
+
export async function bootstrap(cwd: string): Promise<void> {
|
|
17
|
+
const repoRoot = await findRepoRoot(cwd);
|
|
18
|
+
loadEnvFromRoot(repoRoot);
|
|
19
|
+
|
|
20
|
+
const port = parseInt(process.env.KB_MARKETPLACE_PORT ?? String(DEFAULT_PORT), 10);
|
|
21
|
+
const host = process.env.KB_MARKETPLACE_HOST ?? DEFAULT_HOST;
|
|
22
|
+
|
|
23
|
+
// Init platform (logger, cache, adapters)
|
|
24
|
+
await createServiceBootstrap({ appId: 'marketplace', repoRoot });
|
|
25
|
+
|
|
26
|
+
const log = createCorrelatedLogger(platform.logger, {
|
|
27
|
+
serviceId: 'marketplace',
|
|
28
|
+
logsSource: 'marketplace',
|
|
29
|
+
layer: 'marketplace',
|
|
30
|
+
service: 'marketplace-app',
|
|
31
|
+
operation: 'marketplace.bootstrap',
|
|
32
|
+
});
|
|
33
|
+
log.info('Bootstrapping marketplace service', { repoRoot, port, host });
|
|
34
|
+
|
|
35
|
+
// Create marketplace service
|
|
36
|
+
const service = new MarketplaceService({
|
|
37
|
+
root: repoRoot,
|
|
38
|
+
source: new NpmPackageSource(),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Create and start Fastify server
|
|
42
|
+
const server = await createServer({ service, port, logger: platform.logger });
|
|
43
|
+
|
|
44
|
+
await server.listen({ port, host });
|
|
45
|
+
log.info(`Marketplace service listening on http://${host}:${port}`);
|
|
46
|
+
log.info(`OpenAPI docs: http://localhost:${port}/docs`);
|
|
47
|
+
|
|
48
|
+
// Graceful shutdown
|
|
49
|
+
const shutdown = async (signal: string) => {
|
|
50
|
+
log.info(`Received ${signal}, shutting down...`);
|
|
51
|
+
await server.close();
|
|
52
|
+
process.exit(0);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
56
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
57
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @kb-labs/marketplace-app
|
|
3
|
+
* Marketplace service entry point.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { bootstrap } from './bootstrap.js';
|
|
7
|
+
|
|
8
|
+
bootstrap(process.cwd()).catch((error) => {
|
|
9
|
+
console.error('Failed to start marketplace service:', error);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
package/src/manifest.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ServiceManifest } from '@kb-labs/plugin-contracts';
|
|
2
|
+
|
|
3
|
+
export const manifest: ServiceManifest = {
|
|
4
|
+
schema: 'kb.service/1',
|
|
5
|
+
id: 'marketplace',
|
|
6
|
+
name: 'Marketplace',
|
|
7
|
+
version: '1.0.0',
|
|
8
|
+
description: 'Unified entity marketplace — install, manage, discover',
|
|
9
|
+
runtime: {
|
|
10
|
+
entry: 'dist/index.js',
|
|
11
|
+
port: 5070,
|
|
12
|
+
healthCheck: '/health',
|
|
13
|
+
},
|
|
14
|
+
env: {
|
|
15
|
+
PORT: { description: 'HTTP port', default: '5070' },
|
|
16
|
+
NODE_ENV: { description: 'Environment mode', default: 'development' },
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default manifest;
|
package/tsconfig.json
ADDED