@olane/o-core 0.8.5 → 0.8.6
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.
|
@@ -2,6 +2,7 @@ import { Libp2pConfig } from '@olane/o-config';
|
|
|
2
2
|
import { oAddress } from '../../router/o-address.js';
|
|
3
3
|
import { NodeType } from './node-type.enum.js';
|
|
4
4
|
import { oDependency, oMethod } from '@olane/o-protocol';
|
|
5
|
+
import type { oTokenManager } from '../../auth/o-token-manager.js';
|
|
5
6
|
export interface oCoreConfig {
|
|
6
7
|
address: oAddress;
|
|
7
8
|
leader: oAddress | null;
|
|
@@ -19,6 +20,7 @@ export interface oCoreConfig {
|
|
|
19
20
|
cwd?: string;
|
|
20
21
|
systemName?: string;
|
|
21
22
|
joinToken?: string;
|
|
23
|
+
tokenManager?: oTokenManager;
|
|
22
24
|
/**
|
|
23
25
|
* Internal flag - bypasses nested address validation.
|
|
24
26
|
* Should only be used by framework internals or tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o-core.config.d.ts","sourceRoot":"","sources":["../../../../src/core/interfaces/o-core.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"o-core.config.d.ts","sourceRoot":"","sources":["../../../../src/core/interfaces/o-core.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
|
|
@@ -18,6 +18,7 @@ import { oNotificationEvent, EventFilter, NotificationHandler, Subscription } fr
|
|
|
18
18
|
import { UseOptions } from './interfaces/use-options.interface.js';
|
|
19
19
|
import { UseStreamOptions } from './interfaces/use-stream-options.interface.js';
|
|
20
20
|
import { UseDataConfig } from './interfaces/use-data.config.js';
|
|
21
|
+
import { oTokenManager } from '../auth/o-token-manager.js';
|
|
21
22
|
export declare abstract class oCore extends oObject {
|
|
22
23
|
readonly config: oCoreConfig;
|
|
23
24
|
address: oAddress;
|
|
@@ -29,6 +30,7 @@ export declare abstract class oCore extends oObject {
|
|
|
29
30
|
requestManager?: oRequestManager;
|
|
30
31
|
router: oRouter;
|
|
31
32
|
notificationManager: oNotificationManager;
|
|
33
|
+
tokenManager?: oTokenManager;
|
|
32
34
|
private heartbeatInterval?;
|
|
33
35
|
constructor(config: oCoreConfig);
|
|
34
36
|
get isLeader(): boolean;
|
|
@@ -97,8 +99,15 @@ export declare abstract class oCore extends oObject {
|
|
|
97
99
|
*/
|
|
98
100
|
private validateRunning;
|
|
99
101
|
/**
|
|
100
|
-
* Injects _auth
|
|
101
|
-
*
|
|
102
|
+
* Injects _auth into request params if not already present.
|
|
103
|
+
*
|
|
104
|
+
* Resolution order:
|
|
105
|
+
* 1. AsyncLocalStorage context (propagated auth from an incoming request)
|
|
106
|
+
* 2. Node-level tokenManager (the node's own identity)
|
|
107
|
+
*
|
|
108
|
+
* This ensures every outbound request carries auth — whether it originates
|
|
109
|
+
* from within a request chain or from a node-initiated call (registration,
|
|
110
|
+
* heartbeat, etc.).
|
|
102
111
|
*/
|
|
103
112
|
private injectAuthContext;
|
|
104
113
|
useSelf(data?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o-core.d.ts","sourceRoot":"","sources":["../../../src/core/o-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"o-core.d.ts","sourceRoot":"","sources":["../../../src/core/o-core.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/o-core.js
CHANGED
|
@@ -20,6 +20,9 @@ export class oCore extends oObject {
|
|
|
20
20
|
config.address.validateNotNested();
|
|
21
21
|
}
|
|
22
22
|
this.address = config.address || new oAddress('o://node');
|
|
23
|
+
if (config.tokenManager) {
|
|
24
|
+
this.tokenManager = config.tokenManager;
|
|
25
|
+
}
|
|
23
26
|
}
|
|
24
27
|
get isLeader() {
|
|
25
28
|
return this.config.type === NodeType.LEADER;
|
|
@@ -100,7 +103,7 @@ export class oCore extends oObject {
|
|
|
100
103
|
if (!this.requestManager) {
|
|
101
104
|
throw new Error('Request manager is not initialized');
|
|
102
105
|
}
|
|
103
|
-
const enriched = this.injectAuthContext(data);
|
|
106
|
+
const enriched = await this.injectAuthContext(data);
|
|
104
107
|
if (address?.toStaticAddress().equals(this.address.toStaticAddress())) {
|
|
105
108
|
return this.useSelf(enriched);
|
|
106
109
|
}
|
|
@@ -117,14 +120,35 @@ export class oCore extends oObject {
|
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
/**
|
|
120
|
-
* Injects _auth
|
|
121
|
-
*
|
|
123
|
+
* Injects _auth into request params if not already present.
|
|
124
|
+
*
|
|
125
|
+
* Resolution order:
|
|
126
|
+
* 1. AsyncLocalStorage context (propagated auth from an incoming request)
|
|
127
|
+
* 2. Node-level tokenManager (the node's own identity)
|
|
128
|
+
*
|
|
129
|
+
* This ensures every outbound request carries auth — whether it originates
|
|
130
|
+
* from within a request chain or from a node-initiated call (registration,
|
|
131
|
+
* heartbeat, etc.).
|
|
122
132
|
*/
|
|
123
|
-
injectAuthContext(data) {
|
|
133
|
+
async injectAuthContext(data) {
|
|
124
134
|
if (!data)
|
|
125
135
|
return data;
|
|
126
|
-
|
|
127
|
-
if (
|
|
136
|
+
// Already has explicit _auth — don't overwrite
|
|
137
|
+
if (data.params?._auth)
|
|
138
|
+
return data;
|
|
139
|
+
// 1. Propagated auth from incoming request context
|
|
140
|
+
let auth = oRequestContext.getAuth();
|
|
141
|
+
// 2. Fallback: node's own identity via tokenManager
|
|
142
|
+
if (!auth && this.tokenManager) {
|
|
143
|
+
try {
|
|
144
|
+
await this.tokenManager.getTokenResult();
|
|
145
|
+
auth = this.tokenManager.toAuthContext() ?? undefined;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
this.logger.debug('Failed to get token from tokenManager:', error);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (!auth)
|
|
128
152
|
return data;
|
|
129
153
|
return {
|
|
130
154
|
...data,
|
|
@@ -136,7 +160,7 @@ export class oCore extends oObject {
|
|
|
136
160
|
}
|
|
137
161
|
async useSelf(data) {
|
|
138
162
|
this.validateRunning();
|
|
139
|
-
const enriched = this.injectAuthContext(data);
|
|
163
|
+
const enriched = await this.injectAuthContext(data);
|
|
140
164
|
const request = new oRequest({
|
|
141
165
|
method: enriched?.method,
|
|
142
166
|
params: {
|
|
@@ -171,7 +195,7 @@ export class oCore extends oObject {
|
|
|
171
195
|
if (!this.requestManager) {
|
|
172
196
|
throw new Error('Request manager is not initialized');
|
|
173
197
|
}
|
|
174
|
-
const enriched = this.injectAuthContext(data);
|
|
198
|
+
const enriched = await this.injectAuthContext(data);
|
|
175
199
|
// extract child address with transports
|
|
176
200
|
if (!childAddress.transports) {
|
|
177
201
|
const child = this.hierarchyManager.getChild(childAddress);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@olane/o-core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -63,12 +63,12 @@
|
|
|
63
63
|
"typescript": "^5.8.3"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@olane/o-protocol": "0.8.
|
|
66
|
+
"@olane/o-protocol": "0.8.6",
|
|
67
67
|
"chalk": "^5.4.1",
|
|
68
68
|
"debug": "^4.4.1",
|
|
69
69
|
"dotenv": "^16.5.0",
|
|
70
70
|
"multiformats": "^13.3.7",
|
|
71
71
|
"stream-json": "^1.9.1"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "530f7e3c8576d9427f4181b91bdfb6ae1843cffa"
|
|
74
74
|
}
|