@ogcio/building-blocks-sdk 0.0.15 → 0.0.17
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/client/clients/featureFlags/index.d.ts +3 -1
- package/dist/client/clients/featureFlags/index.d.ts.map +1 -1
- package/dist/client/clients/featureFlags/index.js +23 -15
- package/dist/client/clients/featureFlags/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/clients/featureFlags/index.ts +28 -20
- package/src/unleash-client.d.ts +8 -0
|
@@ -7,7 +7,9 @@ export declare class FeatureFlags extends BaseClient<paths> {
|
|
|
7
7
|
protected serviceName: "featureFlags";
|
|
8
8
|
private unleashConnectionOptions;
|
|
9
9
|
constructor({ baseUrl, getTokenFn }: BaseApiClientParams);
|
|
10
|
-
|
|
10
|
+
private importUnleashClient;
|
|
11
|
+
private initializeConnection;
|
|
12
|
+
isFlagEnabled(name: string, context?: any): Promise<any>;
|
|
11
13
|
getFeatureFlags(projectId?: string): Promise<{
|
|
12
14
|
data: components["schemas"]["projectFeatureSchema"][];
|
|
13
15
|
metadata: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/clients/featureFlags/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,YAAa,SAAQ,UAAU,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,WAAW,iBAAiB;IAEtC,OAAO,CAAC,wBAAwB,CAG9B;gBAEU,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/clients/featureFlags/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,YAAa,SAAQ,UAAU,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,WAAW,iBAAiB;IAEtC,OAAO,CAAC,wBAAwB,CAG9B;gBAEU,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,mBAAmB;YAK1C,mBAAmB;YAUnB,oBAAoB;IAS5B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAezC,eAAe,CAAC,SAAS,SAAqB;cAclB,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,EAAE;;;;;;;;;;;;;;;;CAQlF"}
|
|
@@ -6,28 +6,36 @@ export class FeatureFlags extends BaseClient {
|
|
|
6
6
|
unleashConnectionOptions;
|
|
7
7
|
constructor({ baseUrl, getTokenFn }) {
|
|
8
8
|
super({ baseUrl, getTokenFn });
|
|
9
|
-
|
|
10
|
-
this.unleashConnectionOptions = { url: baseUrl, token };
|
|
9
|
+
this.unleashConnectionOptions = { url: baseUrl };
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
async isFlagEnabled(name, context) {
|
|
11
|
+
async importUnleashClient() {
|
|
14
12
|
try {
|
|
15
|
-
|
|
16
|
-
const client = await startUnleash({
|
|
17
|
-
appName: this.serviceName,
|
|
18
|
-
url: `${this.unleashConnectionOptions.url}/api`,
|
|
19
|
-
refreshInterval: 1000,
|
|
20
|
-
customHeaders: {
|
|
21
|
-
Authorization: this.unleashConnectionOptions.token,
|
|
22
|
-
},
|
|
23
|
-
storageProvider: new InMemStorageProvider(),
|
|
24
|
-
});
|
|
25
|
-
return client.isEnabled(name, context, () => false);
|
|
13
|
+
return await import("unleash-client");
|
|
26
14
|
}
|
|
27
15
|
catch {
|
|
28
16
|
throw new Error("unleash-client is not installed or not configured correctly");
|
|
29
17
|
}
|
|
30
18
|
}
|
|
19
|
+
async initializeConnection() {
|
|
20
|
+
if (this.getTokenFn && !this.unleashConnectionOptions.token) {
|
|
21
|
+
this.unleashConnectionOptions.token = await this.getTokenFn(this.serviceName);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// biome-ignore lint/suspicious/noExplicitAny: We cannot import the types from the unleash-client package
|
|
25
|
+
async isFlagEnabled(name, context) {
|
|
26
|
+
await this.initializeConnection();
|
|
27
|
+
const unleashClient = await this.importUnleashClient();
|
|
28
|
+
const client = await unleashClient.startUnleash({
|
|
29
|
+
appName: this.serviceName,
|
|
30
|
+
url: `${this.unleashConnectionOptions.url}/api`,
|
|
31
|
+
refreshInterval: 1000,
|
|
32
|
+
customHeaders: {
|
|
33
|
+
Authorization: this.unleashConnectionOptions.token ?? "",
|
|
34
|
+
},
|
|
35
|
+
storageProvider: new unleashClient.InMemStorageProvider(),
|
|
36
|
+
});
|
|
37
|
+
return client.isEnabled(name, context, () => false);
|
|
38
|
+
}
|
|
31
39
|
async getFeatureFlags(projectId = DEFAULT_PROJECT_ID) {
|
|
32
40
|
return await this.client
|
|
33
41
|
.GET("/api/admin/projects/{projectId}/features", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/clients/featureFlags/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,OAAO,YAAa,SAAQ,UAAiB;IAEvC,WAAW,GAAG,aAAa,CAAC;IAE9B,wBAAwB,CAG9B;IAEF,YAAY,EAAE,OAAO,EAAE,UAAU,EAAuB;QACtD,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/clients/featureFlags/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,OAAO,YAAa,SAAQ,UAAiB;IAEvC,WAAW,GAAG,aAAa,CAAC;IAE9B,wBAAwB,CAG9B;IAEF,YAAY,EAAE,OAAO,EAAE,UAAU,EAAuB;QACtD,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,wBAAwB,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;YAC5D,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CACzD,IAAI,CAAC,WAAW,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yGAAyG;IACzG,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAa;QAC7C,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,GAAG,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,MAAM;YAC/C,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE;gBACb,aAAa,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE;aACzD;YACD,eAAe,EAAE,IAAI,aAAa,CAAC,oBAAoB,EAAE;SAC1D,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAS,GAAG,kBAAkB;QAClD,OAAO,MAAM,IAAI,CAAC,MAAM;aACrB,GAAG,CAAC,0CAA0C,EAAE;YAC/C,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,SAAS;iBACV;aACF;SACF,CAAC;aACD,IAAI,CACH,CAAC,QAAQ,EAAE,EAAE;YACX,iCAAiC;YACjC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,QAA2D;gBACvE,QAAQ;gBACR,KAAK;aACN,CAAC;QACJ,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CACrC,CAAC;IACN,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -11,33 +11,17 @@ export class FeatureFlags extends BaseClient<paths> {
|
|
|
11
11
|
|
|
12
12
|
private unleashConnectionOptions: {
|
|
13
13
|
url: string | undefined;
|
|
14
|
-
token
|
|
14
|
+
token?: string;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
constructor({ baseUrl, getTokenFn }: BaseApiClientParams) {
|
|
18
18
|
super({ baseUrl, getTokenFn });
|
|
19
|
-
|
|
20
|
-
this.unleashConnectionOptions = { url: baseUrl, token };
|
|
19
|
+
this.unleashConnectionOptions = { url: baseUrl };
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
async isFlagEnabled(name: string, context?: any) {
|
|
22
|
+
private async importUnleashClient() {
|
|
25
23
|
try {
|
|
26
|
-
|
|
27
|
-
"unleash-client"
|
|
28
|
-
);
|
|
29
|
-
type Context = import("unleash-client").Context;
|
|
30
|
-
|
|
31
|
-
const client = await startUnleash({
|
|
32
|
-
appName: this.serviceName,
|
|
33
|
-
url: `${this.unleashConnectionOptions.url}/api`,
|
|
34
|
-
refreshInterval: 1000,
|
|
35
|
-
customHeaders: {
|
|
36
|
-
Authorization: this.unleashConnectionOptions.token,
|
|
37
|
-
},
|
|
38
|
-
storageProvider: new InMemStorageProvider(),
|
|
39
|
-
});
|
|
40
|
-
return client.isEnabled(name, context satisfies Context, () => false);
|
|
24
|
+
return await import("unleash-client");
|
|
41
25
|
} catch {
|
|
42
26
|
throw new Error(
|
|
43
27
|
"unleash-client is not installed or not configured correctly",
|
|
@@ -45,6 +29,30 @@ export class FeatureFlags extends BaseClient<paths> {
|
|
|
45
29
|
}
|
|
46
30
|
}
|
|
47
31
|
|
|
32
|
+
private async initializeConnection() {
|
|
33
|
+
if (this.getTokenFn && !this.unleashConnectionOptions.token) {
|
|
34
|
+
this.unleashConnectionOptions.token = await this.getTokenFn(
|
|
35
|
+
this.serviceName,
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// biome-ignore lint/suspicious/noExplicitAny: We cannot import the types from the unleash-client package
|
|
41
|
+
async isFlagEnabled(name: string, context?: any) {
|
|
42
|
+
await this.initializeConnection();
|
|
43
|
+
const unleashClient = await this.importUnleashClient();
|
|
44
|
+
const client = await unleashClient.startUnleash({
|
|
45
|
+
appName: this.serviceName,
|
|
46
|
+
url: `${this.unleashConnectionOptions.url}/api`,
|
|
47
|
+
refreshInterval: 1000,
|
|
48
|
+
customHeaders: {
|
|
49
|
+
Authorization: this.unleashConnectionOptions.token ?? "",
|
|
50
|
+
},
|
|
51
|
+
storageProvider: new unleashClient.InMemStorageProvider(),
|
|
52
|
+
});
|
|
53
|
+
return client.isEnabled(name, context, () => false);
|
|
54
|
+
}
|
|
55
|
+
|
|
48
56
|
async getFeatureFlags(projectId = DEFAULT_PROJECT_ID) {
|
|
49
57
|
return await this.client
|
|
50
58
|
.GET("/api/admin/projects/{projectId}/features", {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare module "unleash-client" {
|
|
2
|
+
export function startUnleash(options: UnleashConfig): Promise<Unleash>;
|
|
3
|
+
export class InMemStorageProvider<T> implements StorageProvider<T> {
|
|
4
|
+
private store;
|
|
5
|
+
set(key: string, data: T): Promise<void>;
|
|
6
|
+
get(key: string): Promise<T | undefined>;
|
|
7
|
+
}
|
|
8
|
+
}
|