@xemahq/service-registry-nest 0.2.0 → 0.3.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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/identity-backed-service-token-provider.d.ts +7 -1
- package/dist/lib/identity-backed-service-token-provider.d.ts.map +1 -1
- package/dist/lib/identity-backed-service-token-provider.js +17 -1
- package/dist/lib/identity-backed-service-token-provider.js.map +1 -1
- package/dist/lib/service-token-provider.d.ts +2 -2
- package/dist/lib/service-token-provider.d.ts.map +1 -1
- package/dist/lib/service-token-provider.js +6 -1
- package/dist/lib/service-token-provider.js.map +1 -1
- package/dist/lib/typed-service-client.d.ts +7 -4
- package/dist/lib/typed-service-client.d.ts.map +1 -1
- package/dist/lib/typed-service-client.js +4 -3
- package/dist/lib/typed-service-client.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -11,5 +11,5 @@ export { resolveHttpUrlEagerly, type EagerResolveOptions } from './lib/resolve-h
|
|
|
11
11
|
export { KernelStateServiceRegistry } from './lib/service-registry-impl';
|
|
12
12
|
export { EnvServiceTokenProvider, SERVICE_TOKEN_ENV_VAR, type ServiceTokenProvider, } from './lib/service-token-provider';
|
|
13
13
|
export { ServiceUnavailableError } from './lib/service-unavailable.error';
|
|
14
|
-
export { TypedServiceClient, TypedServiceClientMethod, type TypedServiceClientOptions, } from './lib/typed-service-client';
|
|
14
|
+
export { TypedServiceClient, TypedServiceClientMethod, type TypedServiceClientOptions, type ScopedRequestInit, } from './lib/typed-service-client';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,UAAU,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kCAAkC,EAClC,KAAK,mBAAmB,GACzB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,UAAU,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kCAAkC,EAClC,KAAK,mBAAmB,GACzB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAI4B;AAH1B,0HAAA,0BAA0B,OAAA;AAC1B,gIAAA,gCAAgC,OAAA;AAChC,kHAAA,kBAAkB,OAAA;AAEpB,yEAKuC;AAJrC,mIAAA,wBAAwB,OAAA;AACxB,0IAAA,+BAA+B,OAAA;AAC/B,mIAAA,wBAAwB,OAAA;AAG1B,2EAGwC;AAFtC,yHAAA,aAAa,OAAA;AACb,mIAAA,uBAAuB,OAAA;AAEzB,+DAGkC;AAFhC,wHAAA,kBAAkB,OAAA;AAGpB,yEAOuC;AANrC,mIAAA,wBAAwB,OAAA;AACxB,gIAAA,qBAAqB,OAAA;AACrB,iIAAA,sBAAsB,OAAA;AACtB,uIAAA,4BAA4B,OAAA;AAI9B,uGAGsD;AAFpD,4JAAA,kCAAkC,OAAA;AAGpC,qEAAwE;AAA/D,kIAAA,yBAAyB,OAAA;AAClC,+EAA2E;AAAlE,qIAAA,uBAAuB,OAAA;AAChC,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AACvB,2EAAiG;AAAxF,iIAAA,qBAAqB,OAAA;AAC9B,qEAAyE;AAAhE,mIAAA,0BAA0B,OAAA;AACnC,uEAIsC;AAHpC,iIAAA,uBAAuB,OAAA;AACvB,+HAAA,qBAAqB,OAAA;AAGvB,6EAA0E;AAAjE,oIAAA,uBAAuB,OAAA;AAChC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAI4B;AAH1B,0HAAA,0BAA0B,OAAA;AAC1B,gIAAA,gCAAgC,OAAA;AAChC,kHAAA,kBAAkB,OAAA;AAEpB,yEAKuC;AAJrC,mIAAA,wBAAwB,OAAA;AACxB,0IAAA,+BAA+B,OAAA;AAC/B,mIAAA,wBAAwB,OAAA;AAG1B,2EAGwC;AAFtC,yHAAA,aAAa,OAAA;AACb,mIAAA,uBAAuB,OAAA;AAEzB,+DAGkC;AAFhC,wHAAA,kBAAkB,OAAA;AAGpB,yEAOuC;AANrC,mIAAA,wBAAwB,OAAA;AACxB,gIAAA,qBAAqB,OAAA;AACrB,iIAAA,sBAAsB,OAAA;AACtB,uIAAA,4BAA4B,OAAA;AAI9B,uGAGsD;AAFpD,4JAAA,kCAAkC,OAAA;AAGpC,qEAAwE;AAA/D,kIAAA,yBAAyB,OAAA;AAClC,+EAA2E;AAAlE,qIAAA,uBAAuB,OAAA;AAChC,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AACvB,2EAAiG;AAAxF,iIAAA,qBAAqB,OAAA;AAC9B,qEAAyE;AAAhE,mIAAA,0BAA0B,OAAA;AACnC,uEAIsC;AAHpC,iIAAA,uBAAuB,OAAA;AACvB,+HAAA,qBAAqB,OAAA;AAGvB,6EAA0E;AAAjE,oIAAA,uBAAuB,OAAA;AAChC,mEAKoC;AAJlC,0HAAA,kBAAkB,OAAA;AAClB,gIAAA,wBAAwB,OAAA"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import type { ServiceTokenProvider } from './service-token-provider';
|
|
2
2
|
export interface IdentityTokenSource {
|
|
3
3
|
getAccessToken(): Promise<string>;
|
|
4
|
+
getScopedAccessToken?(params: {
|
|
5
|
+
scopedClaims: Record<string, string>;
|
|
6
|
+
realm?: string;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
accessToken: string;
|
|
9
|
+
}>;
|
|
4
10
|
}
|
|
5
11
|
export declare class IdentityBackedServiceTokenProvider implements ServiceTokenProvider {
|
|
6
12
|
private readonly identity;
|
|
7
13
|
constructor(identity: IdentityTokenSource);
|
|
8
|
-
getToken(targetService: string): Promise<string>;
|
|
14
|
+
getToken(targetService: string, scopedClaims?: Record<string, string>): Promise<string>;
|
|
9
15
|
}
|
|
10
16
|
//# sourceMappingURL=identity-backed-service-token-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-backed-service-token-provider.d.ts","sourceRoot":"","sources":["../../src/lib/identity-backed-service-token-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAiBrE,MAAM,WAAW,mBAAmB;IAClC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"identity-backed-service-token-provider.d.ts","sourceRoot":"","sources":["../../src/lib/identity-backed-service-token-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAiBrE,MAAM,WAAW,mBAAmB;IAClC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAQlC,oBAAoB,CAAC,CAAC,MAAM,EAAE;QAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtC;AAyBD,qBACa,kCACX,YAAW,oBAAoB;IAEZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,mBAAmB;IAEpD,QAAQ,CACnB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC;CAkCnB"}
|
|
@@ -16,7 +16,23 @@ let IdentityBackedServiceTokenProvider = class IdentityBackedServiceTokenProvide
|
|
|
16
16
|
constructor(identity) {
|
|
17
17
|
this.identity = identity;
|
|
18
18
|
}
|
|
19
|
-
async getToken(targetService) {
|
|
19
|
+
async getToken(targetService, scopedClaims) {
|
|
20
|
+
if (scopedClaims && Object.keys(scopedClaims).length > 0) {
|
|
21
|
+
if (typeof this.identity.getScopedAccessToken !== 'function') {
|
|
22
|
+
throw new Error('[service-registry-nest] scoped claims were requested for ' +
|
|
23
|
+
`"${targetService}" (${Object.keys(scopedClaims).join(', ')}) but the ` +
|
|
24
|
+
'identity source does not support getScopedAccessToken(); refusing to ' +
|
|
25
|
+
'downgrade to an unscoped token.');
|
|
26
|
+
}
|
|
27
|
+
const { accessToken } = await this.identity.getScopedAccessToken({
|
|
28
|
+
scopedClaims,
|
|
29
|
+
});
|
|
30
|
+
if (typeof accessToken !== 'string' || accessToken.length === 0) {
|
|
31
|
+
throw new Error('[service-registry-nest] identity bootstrap getScopedAccessToken() ' +
|
|
32
|
+
`returned no token; cannot mint a scoped bearer for "${targetService}".`);
|
|
33
|
+
}
|
|
34
|
+
return accessToken;
|
|
35
|
+
}
|
|
20
36
|
const token = await this.identity.getAccessToken();
|
|
21
37
|
if (typeof token !== 'string' || token.length === 0) {
|
|
22
38
|
throw new Error('[service-registry-nest] identity bootstrap getAccessToken() ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-backed-service-token-provider.js","sourceRoot":"","sources":["../../src/lib/identity-backed-service-token-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"identity-backed-service-token-provider.js","sourceRoot":"","sources":["../../src/lib/identity-backed-service-token-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AA0DrC,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAGT;IAApC,YAAoC,QAA6B;QAA7B,aAAQ,GAAR,QAAQ,CAAqB;IAAG,CAAC;IAE9D,KAAK,CAAC,QAAQ,CACnB,aAAqB,EACrB,YAAqC;QAErC,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAEzD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CACb,2DAA2D;oBACzD,IAAI,aAAa,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;oBACvE,uEAAuE;oBACvE,iCAAiC,CACpC,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAC/D,YAAY;aACb,CAAC,CAAC;YACH,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CACb,oEAAoE;oBAClE,uDAAuD,aAAa,IAAI,CAC3E,CAAC;YACJ,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,8DAA8D;gBAC5D,wDAAwD,aAAa,KAAK;gBAC1E,iEAAiE;gBACjE,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AA1CY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,mBAAU,GAAE;;GACA,kCAAkC,CA0C9C"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export interface ServiceTokenProvider {
|
|
2
|
-
getToken(targetService: string): Promise<string>;
|
|
2
|
+
getToken(targetService: string, scopedClaims?: Record<string, string>): Promise<string>;
|
|
3
3
|
}
|
|
4
4
|
export declare const SERVICE_TOKEN_ENV_VAR: "XEMA_SERVICE_TOKEN";
|
|
5
5
|
export declare class EnvServiceTokenProvider implements ServiceTokenProvider {
|
|
6
|
-
getToken(targetService: string): Promise<string>;
|
|
6
|
+
getToken(targetService: string, scopedClaims?: Record<string, string>): Promise<string>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=service-token-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-token-provider.d.ts","sourceRoot":"","sources":["../../src/lib/service-token-provider.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"service-token-provider.d.ts","sourceRoot":"","sources":["../../src/lib/service-token-provider.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IAWnC,QAAQ,CACN,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAWD,eAAO,MAAM,qBAAqB,EAAG,oBAA6B,CAAC;AAWnE,qBAAa,uBAAwB,YAAW,oBAAoB;IACrD,QAAQ,CACnB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC;CAoBnB"}
|
|
@@ -3,7 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EnvServiceTokenProvider = exports.SERVICE_TOKEN_ENV_VAR = void 0;
|
|
4
4
|
exports.SERVICE_TOKEN_ENV_VAR = 'XEMA_SERVICE_TOKEN';
|
|
5
5
|
class EnvServiceTokenProvider {
|
|
6
|
-
async getToken(targetService) {
|
|
6
|
+
async getToken(targetService, scopedClaims) {
|
|
7
|
+
if (scopedClaims && Object.keys(scopedClaims).length > 0) {
|
|
8
|
+
throw new Error(`[service-registry-nest] ${exports.SERVICE_TOKEN_ENV_VAR} provider cannot mint ` +
|
|
9
|
+
`scoped claims (${Object.keys(scopedClaims).join(', ')}) for ` +
|
|
10
|
+
`"${targetService}"; wire an identity-backed ServiceTokenProvider.`);
|
|
11
|
+
}
|
|
7
12
|
const token = process.env[exports.SERVICE_TOKEN_ENV_VAR];
|
|
8
13
|
if (typeof token !== 'string' || token.length === 0) {
|
|
9
14
|
throw new Error(`[service-registry-nest] ${exports.SERVICE_TOKEN_ENV_VAR} is not set; ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-token-provider.js","sourceRoot":"","sources":["../../src/lib/service-token-provider.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"service-token-provider.js","sourceRoot":"","sources":["../../src/lib/service-token-provider.ts"],"names":[],"mappings":";;;AAoCa,QAAA,qBAAqB,GAAG,oBAA6B,CAAC;AAWnE,MAAa,uBAAuB;IAC3B,KAAK,CAAC,QAAQ,CACnB,aAAqB,EACrB,YAAqC;QAKrC,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,2BAA2B,6BAAqB,wBAAwB;gBACtE,kBAAkB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9D,IAAI,aAAa,kDAAkD,CACtE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,6BAAqB,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,2BAA2B,6BAAqB,eAAe;gBAC7D,mCAAmC,aAAa,IAAI,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAxBD,0DAwBC"}
|
|
@@ -12,15 +12,18 @@ export interface TypedServiceClientOptions {
|
|
|
12
12
|
readonly registry: ServiceRegistry;
|
|
13
13
|
readonly tokenProvider: ServiceTokenProvider;
|
|
14
14
|
}
|
|
15
|
+
export type ScopedRequestInit = RequestInit & {
|
|
16
|
+
scopedClaims?: Record<string, string>;
|
|
17
|
+
};
|
|
15
18
|
export declare class TypedServiceClient {
|
|
16
19
|
private readonly opts;
|
|
17
20
|
constructor(opts: TypedServiceClientOptions);
|
|
18
21
|
get<T>(path: string, init?: RequestInit): Promise<T>;
|
|
19
|
-
post<TResponse, TBody = unknown>(path: string, body: TBody, init?:
|
|
20
|
-
put<TResponse, TBody = unknown>(path: string, body: TBody, init?:
|
|
21
|
-
patch<TResponse, TBody = unknown>(path: string, body: TBody, init?:
|
|
22
|
+
post<TResponse, TBody = unknown>(path: string, body: TBody, init?: ScopedRequestInit): Promise<TResponse>;
|
|
23
|
+
put<TResponse, TBody = unknown>(path: string, body: TBody, init?: ScopedRequestInit): Promise<TResponse>;
|
|
24
|
+
patch<TResponse, TBody = unknown>(path: string, body: TBody, init?: ScopedRequestInit): Promise<TResponse>;
|
|
22
25
|
delete<T>(path: string, init?: RequestInit): Promise<T>;
|
|
23
|
-
request<T>(method: TypedServiceClientMethod, path: string, init?:
|
|
26
|
+
request<T>(method: TypedServiceClientMethod, path: string, init?: ScopedRequestInit): Promise<T>;
|
|
24
27
|
private requestWithBody;
|
|
25
28
|
}
|
|
26
29
|
//# sourceMappingURL=typed-service-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-service-client.d.ts","sourceRoot":"","sources":["../../src/lib/typed-service-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,2CAA2C,CAAC;AAMnD,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAiBD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"typed-service-client.d.ts","sourceRoot":"","sources":["../../src/lib/typed-service-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,2CAA2C,CAAC;AAMnD,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAiBD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;CAC9C;AAQD,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAkBF,qBAAa,kBAAkB;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,yBAAyB;IAE5D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpD,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,EACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EACX,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,SAAS,CAAC;IASd,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,EACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EACX,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,SAAS,CAAC;IASd,KAAK,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,EACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EACX,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,SAAS,CAAC;IASd,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,CAAC,CAAC;IAiDb,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -34,11 +34,12 @@ class TypedServiceClient {
|
|
|
34
34
|
return this.request(TypedServiceClientMethod.Delete, path, init);
|
|
35
35
|
}
|
|
36
36
|
async request(method, path, init) {
|
|
37
|
+
const { scopedClaims, ...requestInit } = init ?? {};
|
|
37
38
|
const resolved = await this.opts.registry.resolve(this.opts.serviceName);
|
|
38
39
|
const baseUrl = pickHttpEndpoint(resolved);
|
|
39
|
-
const token = await this.opts.tokenProvider.getToken(this.opts.serviceName);
|
|
40
|
+
const token = await this.opts.tokenProvider.getToken(this.opts.serviceName, scopedClaims);
|
|
40
41
|
const url = joinUrl(baseUrl, path);
|
|
41
|
-
const headers = new Headers(
|
|
42
|
+
const headers = new Headers(requestInit.headers);
|
|
42
43
|
headers.set('Authorization', `Bearer ${token}`);
|
|
43
44
|
if (!headers.has('Accept')) {
|
|
44
45
|
headers.set('Accept', 'application/json');
|
|
@@ -46,7 +47,7 @@ class TypedServiceClient {
|
|
|
46
47
|
let lastError;
|
|
47
48
|
for (let attempt = 1; attempt <= MAX_RETRY_ATTEMPTS; attempt += 1) {
|
|
48
49
|
try {
|
|
49
|
-
const response = await fetch(url, { ...
|
|
50
|
+
const response = await fetch(url, { ...requestInit, method, headers });
|
|
50
51
|
if (response.ok) {
|
|
51
52
|
return (await parseResponse(response));
|
|
52
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-service-client.js","sourceRoot":"","sources":["../../src/lib/typed-service-client.ts"],"names":[],"mappings":";;;AAAA,2EAAsE;AAEtE,gFAKmD;AAMnD,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAClC,uCAAW,CAAA;IACX,yCAAa,CAAA;IACb,uCAAW,CAAA;IACX,2CAAe,CAAA;IACf,6CAAiB,CAAA;AACnB,CAAC,EANW,wBAAwB,wCAAxB,wBAAwB,QAMnC;AAOD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAQ7B,MAAM,mBAAmB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"typed-service-client.js","sourceRoot":"","sources":["../../src/lib/typed-service-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/service-registry-nest",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "NestJS runtime SDK for the Xema OS Service Registry (Phase B.2). Provides `ServiceRegistryModule.forRootAsync()` — registers the host service's `ServiceDescriptor` against KernelState at boot, renews the lease on a heartbeat, removes the entry on shutdown, and exposes the `@InjectService(name)` decorator that hands consumers a typed HTTP client whose base URL is resolved dynamically from the registry on every call. The SDK is adapter-agnostic; the `KernelState` instance is injected via a factory so the same code runs against a SQLite-backed dev adapter and an etcd-backed cluster adapter.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"reflect-metadata": "0.2.2",
|
|
22
22
|
"ts-jest": "^29.4.9",
|
|
23
23
|
"typescript": "5.9.3",
|
|
24
|
-
"@xemahq/kernel-contracts": "^0.
|
|
24
|
+
"@xemahq/kernel-contracts": "^0.22.3"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@nestjs/common": "^10 || ^11",
|