Skip to content

Commit 2c1d9bd

Browse files
authored
Web bundle is not possible anymore (#849)
* fix: remove default dependency in Transport.ts * fix: do not use undici in consumption * chore: undo change * fix: remove export * fix: add node logger
1 parent 5203444 commit 2c1d9bd

10 files changed

Lines changed: 60 additions & 57 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export interface ConsumptionConfig {
22
setDefaultOwnIdentityAttributes: boolean;
3+
fetchInstance?: typeof fetch;
34
}

packages/consumption/src/modules/openid4vc/OpenId4VcController.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ export class OpenId4VcController extends ConsumptionBaseController {
1111
super(ConsumptionControllerName.OpenId4VcController, parent);
1212
}
1313

14+
private get fetchInstance(): typeof fetch {
15+
return this.parent.consumptionConfig.fetchInstance ?? fetch;
16+
}
17+
1418
public async fetchCredentialOffer(credentialOfferUrl: string): Promise<{ data: string }> {
15-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
19+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
1620
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
1721
const res = await holder.resolveCredentialOffer(credentialOfferUrl);
1822
return {
@@ -25,7 +29,7 @@ export class OpenId4VcController extends ConsumptionBaseController {
2529
requestedCredentialOffers: string[],
2630
pinCode?: string
2731
): Promise<{ data: string; id: string; type: string; displayInformation: string | undefined }> {
28-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
32+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
2933
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
3034
const credentialOffer = JSON.parse(fetchedCredentialOffer);
3135
const credentials = await holder.requestAndStoreCredentials(credentialOffer, { credentialsToRequest: requestedCredentialOffers, txCode: pinCode });
@@ -43,7 +47,7 @@ export class OpenId4VcController extends ConsumptionBaseController {
4347
}
4448

4549
public async processCredentialOffer(credentialOffer: string): Promise<{ data: string; id: string; type: string; displayInformation: string | undefined }> {
46-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
50+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
4751
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
4852
const res = await holder.resolveCredentialOffer(credentialOffer);
4953
const credentials = await holder.requestAndStoreCredentials(res, { credentialsToRequest: Object.keys(res.offeredCredentialConfigurations) });
@@ -63,7 +67,7 @@ export class OpenId4VcController extends ConsumptionBaseController {
6367
public async resolveAuthorizationRequest(
6468
requestUrl: string
6569
): Promise<{ authorizationRequest: OpenId4VpResolvedAuthorizationRequest; usedCredentials: { id: string; data: string; type: string; displayInformation?: string }[] }> {
66-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
70+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
6771
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
6872
const authorizationRequest = await holder.resolveAuthorizationRequest(requestUrl);
6973

@@ -90,7 +94,7 @@ export class OpenId4VcController extends ConsumptionBaseController {
9094
public async acceptAuthorizationRequest(
9195
authorizationRequest: OpenId4VpResolvedAuthorizationRequest
9296
): Promise<{ status: number; message: string | Record<string, unknown> | null }> {
93-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
97+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
9498
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
9599
// parse the credential type to be sdjwt
96100

@@ -101,7 +105,7 @@ export class OpenId4VcController extends ConsumptionBaseController {
101105
}
102106

103107
public async getVerifiableCredentials(ids?: string[]): Promise<{ id: string; data: string; type: string; displayInformation?: string }[]> {
104-
const holder = new Holder(this.parent.accountController, this.parent.attributes);
108+
const holder = new Holder(this.parent.accountController, this.parent.attributes, this.fetchInstance);
105109
await holder.initializeAgent("96213c3d7fc8d4d6754c7a0fd969598e");
106110

107111
const credentials = await holder.getVerifiableCredentials(ids);

packages/consumption/src/modules/openid4vc/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ export * from "./local/EnmeshedHolderFileSystem";
33
export * from "./local/EnmeshedHolderKeyManagmentService";
44
export * from "./local/EnmeshedStorageService";
55
export * from "./local/Holder";
6-
export * from "./local/LocalAgentDependencies";
76
export * from "./OpenId4VcController";

packages/consumption/src/modules/openid4vc/local/BaseAgent.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ import {
1212
} from "@credo-ts/core";
1313
import { KeyManagementModuleConfig } from "@credo-ts/core/build/modules/kms";
1414
import { AccountController } from "@nmshd/transport";
15+
import { EventEmitter } from "events";
16+
import webSocket from "ws";
1517
import { AttributesController } from "../../attributes";
18+
import { EnmeshedHolderFileSystem } from "./EnmeshedHolderFileSystem";
1619
import { EnmshedHolderKeyManagmentService } from "./EnmeshedHolderKeyManagmentService";
1720
import { EnmeshedStorageService } from "./EnmeshedStorageService";
18-
import { agentDependencies } from "./LocalAgentDependencies";
1921

2022
export class BaseAgent<AgentModules extends ModulesMap> {
2123
public config: InitConfig;
@@ -30,7 +32,8 @@ export class BaseAgent<AgentModules extends ModulesMap> {
3032
public readonly name: string,
3133
public readonly modules: AgentModules,
3234
public readonly accountController: AccountController,
33-
public readonly attributeController: AttributesController
35+
public readonly attributeController: AttributesController,
36+
fetchInstance: typeof fetch
3437
) {
3538
this.name = name;
3639
this.port = port;
@@ -49,7 +52,15 @@ export class BaseAgent<AgentModules extends ModulesMap> {
4952
this.agent = new Agent(
5053
{
5154
config,
52-
dependencies: agentDependencies,
55+
dependencies: {
56+
// eslint-disable-next-line @typescript-eslint/naming-convention
57+
FileSystem: EnmeshedHolderFileSystem,
58+
// eslint-disable-next-line @typescript-eslint/naming-convention
59+
EventEmitterClass: EventEmitter,
60+
fetch: fetchInstance,
61+
// eslint-disable-next-line @typescript-eslint/naming-convention
62+
WebSocketClass: webSocket
63+
},
5364
modules
5465
},
5566
dependencyManager

packages/consumption/src/modules/openid4vc/local/Holder.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ export class Holder extends BaseAgent<ReturnType<typeof getOpenIdHolderModules>>
4646
redirectUri: "http://localhost:3000/redirect"
4747
};
4848

49-
public constructor(accountController: AccountController, attributeController: AttributesController) {
50-
super(3000, `OpenId4VcHolder ${Math.random().toString()}`, getOpenIdHolderModules(), accountController, attributeController);
49+
public constructor(accountController: AccountController, attributeController: AttributesController, fetchInstance: typeof fetch) {
50+
super(3000, `OpenId4VcHolder ${Math.random().toString()}`, getOpenIdHolderModules(), accountController, attributeController, fetchInstance);
5151
}
5252

5353
public async getVerifiableCredentials(ids: string[] | undefined): Promise<OwnIdentityAttribute[]> {

packages/consumption/src/modules/openid4vc/local/LocalAgentDependencies.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

packages/consumption/test/modules/requests/RequestsIntegrationTest.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import {
5050
ValidationResult
5151
} from "../../../src";
5252

53+
import { NodeLoggerFactory } from "@js-soft/node-logger";
5354
import { TestUtil } from "../../core/TestUtil";
5455
import { MockEventBus } from "../MockEventBus";
5556
import { TestObjectFactory } from "./testHelpers/TestObjectFactory";
@@ -78,6 +79,26 @@ export class RequestsTestsContext {
7879
config,
7980
new EventEmitter2EventBus(() => {
8081
// noop
82+
}),
83+
new NodeLoggerFactory({
84+
appenders: {
85+
consoleAppender: {
86+
type: "stdout",
87+
layout: { type: "pattern", pattern: "%[[%p] %c - %m%]" }
88+
},
89+
console: {
90+
type: "logLevelFilter",
91+
level: "Warn",
92+
appender: "consoleAppender"
93+
}
94+
},
95+
96+
categories: {
97+
default: {
98+
appenders: ["console"],
99+
level: "TRACE"
100+
}
101+
}
81102
})
82103
).init();
83104

packages/runtime/test/consumption/openid4vc.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@ import { OpenId4VpResolvedAuthorizationRequest } from "@credo-ts/openid4vc";
22
import axios, { AxiosInstance } from "axios";
33
import path from "path";
44
import { DockerComposeEnvironment, StartedDockerComposeEnvironment, Wait } from "testcontainers";
5+
import { Agent as UndiciAgent, fetch as undiciFetch } from "undici";
56
import { ConsumptionServices } from "../../src";
67
import { RuntimeServiceProvider } from "../lib";
78

8-
const runtimeServiceProvider = new RuntimeServiceProvider();
9+
const fetchInstance: typeof fetch = (async (input, init) => {
10+
const response = await undiciFetch(input as any, { ...(init as any), dispatcher: new UndiciAgent({}) });
11+
return response;
12+
}) as typeof fetch;
13+
14+
const runtimeServiceProvider = new RuntimeServiceProvider(fetchInstance);
915
let consumptionServices: ConsumptionServices;
1016
let axiosInstance: AxiosInstance;
1117
let dockerComposeStack: StartedDockerComposeEnvironment | undefined;

packages/runtime/test/lib/RuntimeServiceProvider.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ export interface LaunchConfiguration {
2424
}
2525

2626
export class RuntimeServiceProvider {
27+
public constructor(private readonly fetchInstance?: typeof fetch) {}
28+
2729
private readonly runtimes: TestRuntime[] = [];
2830

2931
public static get transportConfig(): Omit<IConfigOverwrite, "supportedIdentityVersion"> {
@@ -75,7 +77,8 @@ export class RuntimeServiceProvider {
7577
const runtime = new TestRuntime(
7678
config,
7779
{
78-
setDefaultOwnIdentityAttributes: launchConfiguration.enableDefaultOwnIdentityAttributes ?? false
80+
setDefaultOwnIdentityAttributes: launchConfiguration.enableDefaultOwnIdentityAttributes ?? false,
81+
fetchInstance: this.fetchInstance
7982
},
8083
launchConfiguration.useCorrelator ? correlator : undefined
8184
);

packages/transport/src/core/Transport.ts

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { ILogger, ILoggerFactory } from "@js-soft/logging-abstractions";
2-
import { NodeLoggerFactory } from "@js-soft/node-logger";
32
import { EventBus } from "@js-soft/ts-utils";
43
import { SodiumWrapper } from "@nmshd/crypto";
54
import { AgentOptions } from "http";
@@ -85,26 +84,7 @@ export class Transport {
8584
public constructor(
8685
customConfig: IConfigOverwrite,
8786
public readonly eventBus: EventBus,
88-
loggerFactory: ILoggerFactory = new NodeLoggerFactory({
89-
appenders: {
90-
consoleAppender: {
91-
type: "stdout",
92-
layout: { type: "pattern", pattern: "%[[%p] %c - %m%]" }
93-
},
94-
console: {
95-
type: "logLevelFilter",
96-
level: "Warn",
97-
appender: "consoleAppender"
98-
}
99-
},
100-
101-
categories: {
102-
default: {
103-
appenders: ["console"],
104-
level: "TRACE"
105-
}
106-
}
107-
}),
87+
loggerFactory: ILoggerFactory,
10888
public readonly correlator?: ICorrelator
10989
) {
11090
this._config = _.defaultsDeep({}, customConfig, Transport.defaultConfig);

0 commit comments

Comments
 (0)