@xemahq/xema-service-nest 0.2.2 → 0.2.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"xema-service-module.d.ts","sourceRoot":"","sources":["../../src/lib/xema-service-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAmBrF,OAAO,EACL,aAAa,EACb,UAAU,EAEV,KAAK,4BAA4B,EAClC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAQpC,MAAM,WAAW,wBAAwB;IAMvC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAE7B,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IAKnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAMpC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CACrC,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAE1E,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CAC9C;AAsCD,qBAAa,iBAAiB;WACd,QAAQ,CACpB,UAAU,EAAE,sBAAsB,EAClC,OAAO,GAAE,wBAA6B,GACrC,aAAa;CAejB"}
1
+ {"version":3,"file":"xema-service-module.d.ts","sourceRoot":"","sources":["../../src/lib/xema-service-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAoBrF,OAAO,EACL,aAAa,EACb,UAAU,EAEV,KAAK,4BAA4B,EAClC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAQpC,MAAM,WAAW,wBAAwB;IAMvC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAE7B,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IAKnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAMpC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CACrC,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAE1E,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CAC9C;AAsCD,qBAAa,iBAAiB;WACd,QAAQ,CACpB,UAAU,EAAE,sBAAsB,EAClC,OAAO,GAAE,wBAA6B,GACrC,aAAa;CAejB"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XemaServiceModule = void 0;
4
+ const core_1 = require("@nestjs/core");
4
5
  const config_1 = require("@nestjs/config");
5
6
  const identity_client_1 = require("@xemahq/identity-client");
6
7
  const service_registry_1 = require("@xemahq/kernel-contracts/service-registry");
@@ -29,12 +30,25 @@ function buildServiceRegistryModule(descriptor, consumes) {
29
30
  return service_registry_nest_1.ServiceRegistryModule.forRootAsync({
30
31
  imports: [config_1.ConfigModule],
31
32
  consumes,
32
- useFactory: (config) => ({
33
+ useFactory: (config, moduleRef) => ({
33
34
  adapter: service_registry_nest_1.ServiceRegistryAdapterKind.KernelState,
34
35
  kernelStateFactory: () => (0, kernel_state_runtime_1.createKernelState)({
35
36
  profile: (0, service_registry_nest_1.parseKernelStateProfile)(config.get('XEMA_KERNEL_STATE_PROFILE')),
36
37
  }),
37
38
  consumes,
39
+ tokenProvider: {
40
+ getToken: async (_targetService) => {
41
+ const bootstrap = moduleRef.get(identity_client_1.IdentityBootstrapService, {
42
+ strict: false,
43
+ });
44
+ const token = await bootstrap.getAccessToken();
45
+ if (typeof token !== 'string' || token.length === 0) {
46
+ throw new Error('[xema-service-nest] IdentityBootstrapService.getAccessToken() ' +
47
+ 'returned no service token; cannot authenticate the typed-client call.');
48
+ }
49
+ return token;
50
+ },
51
+ },
38
52
  descriptor: {
39
53
  name: descriptor.name,
40
54
  semver: descriptor.semver,
@@ -50,7 +64,7 @@ function buildServiceRegistryModule(descriptor, consumes) {
50
64
  requiresServices: consumes,
51
65
  },
52
66
  }),
53
- inject: [config_1.ConfigService],
67
+ inject: [config_1.ConfigService, core_1.ModuleRef],
54
68
  });
55
69
  }
56
70
  function buildIdentityBootstrapModule(descriptor) {
@@ -1 +1 @@
1
- {"version":3,"file":"xema-service-module.js","sourceRoot":"","sources":["../../src/lib/xema-service-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xema-service-module.js","sourceRoot":"","sources":["../../src/lib/xema-service-module.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/xema-service-nest",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Xema platform service-bootstrap SDK. `XemaServiceModule.forBiome(descriptor)` composes the full platform service stack — Service Registry, Identity bootstrap, Auth (JWT verification + request context), and the Xema runtime route/capability scanner — behind a single call, so a biome API is auth-correct in ~5 lines and never re-wires authentication.",
5
5
  "keywords": [
6
6
  "xema",
@@ -60,14 +60,14 @@
60
60
  "rxjs": "7.8.2",
61
61
  "ts-jest": "^29.4.9",
62
62
  "typescript": "5.9.3",
63
- "@xemahq/kernel-contracts": "^0.13.0"
63
+ "@xemahq/kernel-contracts": "^0.14.0"
64
64
  },
65
65
  "dependencies": {
66
- "@xemahq/identity-client": "^0.3.2",
66
+ "@xemahq/identity-client": "^0.3.4",
67
67
  "@xemahq/kernel-state-runtime": "^0.1.5",
68
68
  "@xemahq/platform-common": "^0.2.4",
69
- "@xemahq/service-registry-nest": "0.1.9",
70
- "@xemahq/xema-decorators": "0.1.5"
69
+ "@xemahq/service-registry-nest": "^0.1.9",
70
+ "@xemahq/xema-decorators": "^0.2.0"
71
71
  },
72
72
  "exports": {
73
73
  ".": {
@@ -1,4 +1,5 @@
1
1
  import type { DynamicModule, ModuleMetadata, FactoryProvider } from '@nestjs/common';
2
+ import { ModuleRef } from '@nestjs/core';
2
3
  import { ConfigModule, ConfigService } from '@nestjs/config';
3
4
  import {
4
5
  IdentityBootstrapModule,
@@ -130,7 +131,7 @@ function buildServiceRegistryModule(
130
131
  imports: [ConfigModule],
131
132
  // Authoritative for typed-client provider creation (must be sync).
132
133
  consumes,
133
- useFactory: (config: ConfigService) => ({
134
+ useFactory: (config: ConfigService, moduleRef: ModuleRef) => ({
134
135
  adapter: ServiceRegistryAdapterKind.KernelState,
135
136
  kernelStateFactory: () =>
136
137
  createKernelState({
@@ -139,6 +140,31 @@ function buildServiceRegistryModule(
139
140
  ),
140
141
  }),
141
142
  consumes,
143
+ // Typed clients (`@InjectService`) authenticate service-to-service with the
144
+ // SAME Keycloak service-account JWT the orval clients use — minted by the
145
+ // IdentityBootstrapService this module ALSO wires (see
146
+ // buildIdentityBootstrapModule). Without this they would fall back to the
147
+ // SDK's EnvServiceTokenProvider (env XEMA_SERVICE_TOKEN), which is unset in
148
+ // production → every typed-client call fails to mint a bearer.
149
+ //
150
+ // Resolved LAZILY via ModuleRef so there is no module-init ordering/cycle:
151
+ // getToken runs at request time (an outbound typed-client call), long after
152
+ // bootstrap. getAccessToken() itself waits-for-ready + refreshes the JWT.
153
+ tokenProvider: {
154
+ getToken: async (_targetService: string): Promise<string> => {
155
+ const bootstrap = moduleRef.get(IdentityBootstrapService, {
156
+ strict: false,
157
+ });
158
+ const token = await bootstrap.getAccessToken();
159
+ if (typeof token !== 'string' || token.length === 0) {
160
+ throw new Error(
161
+ '[xema-service-nest] IdentityBootstrapService.getAccessToken() ' +
162
+ 'returned no service token; cannot authenticate the typed-client call.',
163
+ );
164
+ }
165
+ return token;
166
+ },
167
+ },
142
168
  descriptor: {
143
169
  name: descriptor.name,
144
170
  semver: descriptor.semver,
@@ -154,7 +180,7 @@ function buildServiceRegistryModule(
154
180
  requiresServices: consumes,
155
181
  },
156
182
  }),
157
- inject: [ConfigService],
183
+ inject: [ConfigService, ModuleRef],
158
184
  });
159
185
  }
160
186