@objectstack/core 4.0.4 → 4.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/README.md +95 -10
- package/dist/index.cjs +172 -507
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -223
- package/dist/index.d.ts +24 -223
- package/dist/index.js +178 -505
- package/dist/index.js.map +1 -1
- package/dist/logger.cjs +177 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/logger.d.cts +26 -0
- package/dist/logger.d.ts +26 -0
- package/dist/logger.js +158 -0
- package/dist/logger.js.map +1 -0
- package/package.json +36 -15
- package/.turbo/turbo-build.log +0 -22
- package/ADVANCED_FEATURES.md +0 -380
- package/API_REGISTRY.md +0 -392
- package/CHANGELOG.md +0 -472
- package/PHASE2_IMPLEMENTATION.md +0 -388
- package/REFACTORING_SUMMARY.md +0 -40
- package/examples/api-registry-example.ts +0 -559
- package/examples/kernel-features-example.ts +0 -311
- package/examples/phase2-integration.ts +0 -357
- package/src/api-registry-plugin.test.ts +0 -393
- package/src/api-registry-plugin.ts +0 -89
- package/src/api-registry.test.ts +0 -1089
- package/src/api-registry.ts +0 -739
- package/src/contracts/data-engine.ts +0 -57
- package/src/contracts/http-server.ts +0 -151
- package/src/contracts/logger.ts +0 -72
- package/src/dependency-resolver.test.ts +0 -287
- package/src/dependency-resolver.ts +0 -390
- package/src/fallbacks/fallbacks.test.ts +0 -281
- package/src/fallbacks/index.ts +0 -26
- package/src/fallbacks/memory-cache.ts +0 -34
- package/src/fallbacks/memory-i18n.ts +0 -112
- package/src/fallbacks/memory-job.ts +0 -23
- package/src/fallbacks/memory-metadata.ts +0 -50
- package/src/fallbacks/memory-queue.ts +0 -28
- package/src/health-monitor.test.ts +0 -81
- package/src/health-monitor.ts +0 -318
- package/src/hot-reload.ts +0 -382
- package/src/index.ts +0 -50
- package/src/kernel-base.ts +0 -273
- package/src/kernel.test.ts +0 -624
- package/src/kernel.ts +0 -631
- package/src/lite-kernel.test.ts +0 -248
- package/src/lite-kernel.ts +0 -137
- package/src/logger.test.ts +0 -116
- package/src/logger.ts +0 -355
- package/src/namespace-resolver.test.ts +0 -130
- package/src/namespace-resolver.ts +0 -188
- package/src/package-manager.test.ts +0 -225
- package/src/package-manager.ts +0 -428
- package/src/plugin-loader.test.ts +0 -421
- package/src/plugin-loader.ts +0 -484
- package/src/qa/adapter.ts +0 -16
- package/src/qa/http-adapter.ts +0 -116
- package/src/qa/index.ts +0 -5
- package/src/qa/runner.ts +0 -189
- package/src/security/index.ts +0 -50
- package/src/security/permission-manager.test.ts +0 -256
- package/src/security/permission-manager.ts +0 -338
- package/src/security/plugin-config-validator.test.ts +0 -276
- package/src/security/plugin-config-validator.ts +0 -193
- package/src/security/plugin-permission-enforcer.test.ts +0 -251
- package/src/security/plugin-permission-enforcer.ts +0 -436
- package/src/security/plugin-signature-verifier.ts +0 -403
- package/src/security/sandbox-runtime.ts +0 -462
- package/src/security/security-scanner.ts +0 -367
- package/src/types.ts +0 -120
- package/src/utils/env.test.ts +0 -62
- package/src/utils/env.ts +0 -53
- package/tsconfig.json +0 -10
- package/vitest.config.ts +0 -10
package/README.md
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
# @objectstack/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> ObjectStack microkernel — dependency injection, plugin lifecycle, event bus, and service registry for metadata-driven runtimes.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@objectstack/core)
|
|
6
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
`@objectstack/core` is the foundation every ObjectStack runtime is built on. It hosts two kernels, a plugin lifecycle, a typed service registry, a structured logger, and a plugin-to-plugin event bus:
|
|
11
|
+
|
|
12
|
+
- **`ObjectKernel`** — full-featured production kernel with hot reload, health monitoring, dependency resolution, and namespace isolation.
|
|
13
|
+
- **`LiteKernel`** — minimal kernel for serverless, edge, and test environments.
|
|
14
|
+
|
|
15
|
+
All other ObjectStack runtime packages (`runtime`, `rest`, `plugin-*`, `driver-*`, `service-*`) plug into a kernel instance.
|
|
11
16
|
|
|
12
17
|
## Installation
|
|
13
18
|
|
|
@@ -15,21 +20,101 @@ The **Kernel** of the ObjectStack architecture. It provides the fundamental buil
|
|
|
15
20
|
pnpm add @objectstack/core
|
|
16
21
|
```
|
|
17
22
|
|
|
18
|
-
##
|
|
23
|
+
## Quick Start
|
|
19
24
|
|
|
20
25
|
```typescript
|
|
21
26
|
import { ObjectKernel } from '@objectstack/core';
|
|
22
27
|
|
|
23
28
|
const kernel = new ObjectKernel();
|
|
24
29
|
|
|
25
|
-
// Register a simple plugin
|
|
26
30
|
kernel.use({
|
|
27
31
|
name: 'my-plugin',
|
|
28
32
|
version: '1.0.0',
|
|
29
33
|
async init(ctx) {
|
|
30
|
-
ctx.logger.info('
|
|
31
|
-
|
|
34
|
+
ctx.logger.info('plugin initializing…');
|
|
35
|
+
ctx.registerService('greeter', { hello: (n: string) => `hi ${n}` });
|
|
36
|
+
},
|
|
37
|
+
async start(ctx) {
|
|
38
|
+
const svc = ctx.getService<{ hello: (s: string) => string }>('greeter')!;
|
|
39
|
+
ctx.logger.info(svc.hello('world'));
|
|
40
|
+
},
|
|
32
41
|
});
|
|
33
42
|
|
|
34
43
|
await kernel.bootstrap();
|
|
44
|
+
// …
|
|
45
|
+
await kernel.shutdown();
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### LiteKernel (serverless/edge/tests)
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { LiteKernel } from '@objectstack/core';
|
|
52
|
+
|
|
53
|
+
const kernel = new LiteKernel();
|
|
54
|
+
await kernel.bootstrap();
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Key Exports
|
|
58
|
+
|
|
59
|
+
| Export | Kind | Description |
|
|
60
|
+
|:---|:---|:---|
|
|
61
|
+
| `ObjectKernel` | class | Production kernel with DI, lifecycle, event bus, hot reload, health monitor. |
|
|
62
|
+
| `LiteKernel` | class | Minimal kernel for constrained runtimes. |
|
|
63
|
+
| `Plugin` | interface | Plugin contract (`init`, `start`, `stop`, lifecycle hooks). |
|
|
64
|
+
| `PluginContext` | interface | `{ logger, registerService, getService, eventBus, kernel }`. |
|
|
65
|
+
| `ObjectLogger` | class | Structured logger over pino; swappable backends. |
|
|
66
|
+
| `ApiRegistry` | class | Runtime route registry (consumed by `@objectstack/rest`). |
|
|
67
|
+
| `QA` | namespace | Built-in kernel self-tests. |
|
|
68
|
+
| `PackageManager` | class | Per-package DI namespace resolver. |
|
|
69
|
+
|
|
70
|
+
## Plugin lifecycle
|
|
71
|
+
|
|
35
72
|
```
|
|
73
|
+
use() → init() → start() → [running] → stop() → unload()
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- **`init(ctx)`** — register services, wire dependencies. Do not make network calls.
|
|
77
|
+
- **`start(ctx)`** — resolve other services, begin work. Called after every plugin's `init()`.
|
|
78
|
+
- **`stop(ctx)`** — graceful shutdown, flush, close connections.
|
|
79
|
+
- **`kernel.unload(name)`** — runtime removal; pairs with `AppPlugin.onDisable()`.
|
|
80
|
+
|
|
81
|
+
## Kernel choice
|
|
82
|
+
|
|
83
|
+
| Kernel | Use when |
|
|
84
|
+
|:---|:---|
|
|
85
|
+
| `ObjectKernel` | Default. Production servers, Studio, tests that need plugin composition. |
|
|
86
|
+
| `LiteKernel` | Cloudflare Workers, Vercel Edge, Vitest unit tests, footprint-sensitive sandboxes. |
|
|
87
|
+
|
|
88
|
+
`EnhancedObjectKernel` has been **removed**. Migrate to `ObjectKernel`.
|
|
89
|
+
|
|
90
|
+
## Observability
|
|
91
|
+
|
|
92
|
+
- `ObjectLogger` is backed by pino; control verbosity with `LOG_LEVEL=info|debug|trace`.
|
|
93
|
+
- `kernel.getHealth()` returns per-plugin health snapshots.
|
|
94
|
+
- EventBus: `ctx.eventBus.on('plugin.started', …)`, `.emit(…)`.
|
|
95
|
+
|
|
96
|
+
## When to use
|
|
97
|
+
|
|
98
|
+
- ✅ Building an ObjectStack application (always).
|
|
99
|
+
- ✅ Authoring a plugin, driver, or service.
|
|
100
|
+
|
|
101
|
+
## When not to use
|
|
102
|
+
|
|
103
|
+
- ❌ You only need the schemas — import [`@objectstack/spec`](../spec) alone.
|
|
104
|
+
- ❌ You only need a REST client — import [`@objectstack/client`](../client).
|
|
105
|
+
|
|
106
|
+
## Related Packages
|
|
107
|
+
|
|
108
|
+
- [`@objectstack/spec`](../spec) — protocol definitions.
|
|
109
|
+
- [`@objectstack/runtime`](../runtime) — `DriverPlugin` / `AppPlugin` scaffolds.
|
|
110
|
+
- [`@objectstack/rest`](../rest) — auto-generated REST layer.
|
|
111
|
+
|
|
112
|
+
## Links
|
|
113
|
+
|
|
114
|
+
- 📖 Docs: <https://objectstack.ai/docs>
|
|
115
|
+
- 📚 API Reference: <https://objectstack.ai/docs/references/kernel>
|
|
116
|
+
- 🤖 Skill: [`skills/objectstack-plugin/SKILL.md`](../../skills/objectstack-plugin/SKILL.md)
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
Apache-2.0 © ObjectStack
|