Skip to content

Commit b924069

Browse files
authored
Merge pull request #1484 from polywrap/pileks/bugfix/client-config-builder-wrapper-cache
`ClientConfigBuilder` - move wrapperCache and resolver from constructor to buildCoreConfig
2 parents 4811d71 + 6a54ba1 commit b924069

5 files changed

Lines changed: 34 additions & 41 deletions

File tree

packages/js/client-config-builder/README.md

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ Initialize a ClientConfigBuilder using the [constructor](#constructor)
1313
```typescript
1414
// start with a blank slate (typical usage)
1515
const builder = new ClientConfigBuilder();
16-
17-
// instantiate a builder with a custom cache and/or resolver
18-
const _builder = new ClientConfigBuilder(
19-
new WrapperCache(),
20-
RecursiveResolver.from([])
21-
);
2216
```
2317

2418
### Configure
@@ -63,7 +57,13 @@ Finally, build a ClientConfig or CoreClientConfig to pass to the PolywrapClient
6357
const clientConfig = builder.build();
6458

6559
// accepted by either the PolywrapClient or the PolywrapCoreClient
66-
const coreClientConfig = builder.buildCoreConfig();
60+
let coreClientConfig = builder.buildCoreConfig();
61+
62+
// build with a custom cache and/or resolver
63+
coreClientConfig = builder.buildCoreConfig(
64+
new WrapperCache(),
65+
RecursiveResolver.from([])
66+
);
6767
```
6868

6969
### Example
@@ -197,14 +197,8 @@ export interface ClientConfig {
197197
```ts
198198
/**
199199
* Instantiate a ClientConfigBuilder
200-
*
201-
* @param _wrapperCache?: a wrapper cache to be used in place of the default wrapper cache
202-
* @param _resolver?: a uri resolver to be used in place of any added redirects, wrappers, packages, and resolvers when building a CoreClientConfig
203200
*/
204-
constructor(
205-
private readonly _wrapperCache?: IWrapperCache,
206-
private readonly _resolver?: IUriResolver<unknown>
207-
)
201+
constructor()
208202
```
209203

210204
### add

packages/js/client-config-builder/examples/quickstart.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,9 @@ export function initialize(): ClientConfigBuilder {
1111
// $start: quickstart-initialize
1212
// start with a blank slate (typical usage)
1313
const builder = new ClientConfigBuilder();
14-
15-
// instantiate a builder with a custom cache and/or resolver
16-
const _builder = new ClientConfigBuilder(
17-
new WrapperCache(),
18-
RecursiveResolver.from([])
19-
);
2014
// $end
2115

22-
return builder ?? _builder;
16+
return builder;
2317
}
2418

2519
export function configure(): ClientConfigBuilder {
@@ -66,7 +60,13 @@ export function build():
6660
const clientConfig = builder.build();
6761

6862
// accepted by either the PolywrapClient or the PolywrapCoreClient
69-
const coreClientConfig = builder.buildCoreConfig();
63+
let coreClientConfig = builder.buildCoreConfig();
64+
65+
// build with a custom cache and/or resolver
66+
coreClientConfig = builder.buildCoreConfig(
67+
new WrapperCache(),
68+
RecursiveResolver.from([])
69+
);
7070
// $end
7171

7272
return builder ?? clientConfig ?? coreClientConfig;

packages/js/client-config-builder/src/BaseClientConfigBuilder.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import {
1212
IUriRedirect,
1313
IUriWrapper,
1414
IUriPackage,
15+
IUriResolver,
1516
} from "@polywrap/core-js";
16-
import { UriResolverLike } from "@polywrap/uri-resolvers-js";
17+
import { IWrapperCache, UriResolverLike } from "@polywrap/uri-resolvers-js";
1718

1819
export abstract class BaseClientConfigBuilder implements IClientConfigBuilder {
1920
protected _config: BuilderConfig = {
@@ -26,7 +27,10 @@ export abstract class BaseClientConfigBuilder implements IClientConfigBuilder {
2627
};
2728

2829
abstract addDefaults(): IClientConfigBuilder;
29-
abstract buildCoreConfig(): CoreClientConfig;
30+
abstract buildCoreConfig(
31+
wrapperCache?: IWrapperCache,
32+
resolver?: IUriResolver<unknown>
33+
): CoreClientConfig;
3034

3135
get config(): BuilderConfig {
3236
return this._config;

packages/js/client-config-builder/src/ClientConfigBuilder.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,26 @@ export class ClientConfigBuilder extends BaseClientConfigBuilder {
1616
// $start: ClientConfigBuilder-constructor
1717
/**
1818
* Instantiate a ClientConfigBuilder
19-
*
20-
* @param _wrapperCache?: a wrapper cache to be used in place of the default wrapper cache
21-
* @param _resolver?: a uri resolver to be used in place of any added redirects, wrappers, packages, and resolvers when building a CoreClientConfig
2219
*/
23-
constructor(
24-
private readonly _wrapperCache?: IWrapperCache,
25-
private readonly _resolver?: IUriResolver<unknown>
26-
) /* $ */ {
20+
constructor() /* $ */ {
2721
super();
2822
}
2923

3024
addDefaults(): IClientConfigBuilder {
3125
return this.add(getDefaultConfig());
3226
}
3327

34-
buildCoreConfig(): CoreClientConfig {
28+
buildCoreConfig(
29+
wrapperCache?: IWrapperCache,
30+
resolver?: IUriResolver<unknown>
31+
): CoreClientConfig {
3532
const clientConfig = this.build();
3633

3734
return {
3835
envs: clientConfig.envs,
3936
interfaces: clientConfig.interfaces,
4037
resolver:
41-
this._resolver ??
38+
resolver ??
4239
RecursiveResolver.from(
4340
PackageToWrapperCacheResolver.from(
4441
[
@@ -50,7 +47,7 @@ export class ClientConfigBuilder extends BaseClientConfigBuilder {
5047
...clientConfig.resolvers,
5148
new ExtendableUriResolver(),
5249
],
53-
this._wrapperCache ?? new WrapperCache()
50+
wrapperCache ?? new WrapperCache()
5451
)
5552
),
5653
};

packages/js/client-config-builder/src/helpers/buildPolywrapCoreClientConfig.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,7 @@ export function buildPolywrapCoreClientConfig<
151151
noDefaults = false
152152
): CoreClientConfig {
153153
if (!builder) {
154-
if (config && "wrapperCache" in config) {
155-
builder = new ClientConfigBuilder(config.wrapperCache);
156-
} else {
157-
builder = new ClientConfigBuilder();
158-
}
154+
builder = new ClientConfigBuilder();
159155
}
160156

161157
if (!noDefaults) {
@@ -168,7 +164,9 @@ export function buildPolywrapCoreClientConfig<
168164
builder.add(sanitizeConfig(config));
169165
}
170166

171-
const sanitizedConfig = builder.buildCoreConfig();
167+
if (config && "wrapperCache" in config) {
168+
return builder.buildCoreConfig(config.wrapperCache);
169+
}
172170

173-
return sanitizedConfig;
171+
return builder.buildCoreConfig();
174172
}

0 commit comments

Comments
 (0)