@ogcio/building-blocks-sdk 0.0.15 → 0.0.18
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 +24 -15
- package/dist/client/clients/featureFlags/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/clients/featureFlags/index.ts +29 -17
- 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 getUnleashItems;
|
|
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,eAAe;YAcf,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,37 @@ 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 getUnleashItems() {
|
|
14
12
|
try {
|
|
15
|
-
const {
|
|
16
|
-
|
|
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
|
+
const { startUnleash, InMemStorageProvider } = await import("unleash-client");
|
|
14
|
+
return { startUnleash, InMemStorageProvider };
|
|
26
15
|
}
|
|
27
16
|
catch {
|
|
28
17
|
throw new Error("unleash-client is not installed or not configured correctly");
|
|
29
18
|
}
|
|
30
19
|
}
|
|
20
|
+
async initializeConnection() {
|
|
21
|
+
if (this.getTokenFn && !this.unleashConnectionOptions.token) {
|
|
22
|
+
this.unleashConnectionOptions.token = await this.getTokenFn(this.serviceName);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// biome-ignore lint/suspicious/noExplicitAny: We cannot import the types from the unleash-client package
|
|
26
|
+
async isFlagEnabled(name, context) {
|
|
27
|
+
await this.initializeConnection();
|
|
28
|
+
const unleashItems = await this.getUnleashItems();
|
|
29
|
+
const client = await unleashItems.startUnleash({
|
|
30
|
+
appName: this.serviceName,
|
|
31
|
+
url: `${this.unleashConnectionOptions.url}/api`,
|
|
32
|
+
refreshInterval: 1000,
|
|
33
|
+
customHeaders: {
|
|
34
|
+
Authorization: this.unleashConnectionOptions.token ?? "",
|
|
35
|
+
},
|
|
36
|
+
storageProvider: new unleashItems.InMemStorageProvider(),
|
|
37
|
+
});
|
|
38
|
+
return client.isEnabled(name, context, () => false);
|
|
39
|
+
}
|
|
31
40
|
async getFeatureFlags(projectId = DEFAULT_PROJECT_ID) {
|
|
32
41
|
return await this.client
|
|
33
42
|
.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,
|
|
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,eAAe;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CACzD,gBAAgB,CACjB,CAAC;YAEF,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;QAChD,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,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC7C,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,YAAY,CAAC,oBAAoB,EAAE;SACzD,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,21 @@ 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 getUnleashItems() {
|
|
25
23
|
try {
|
|
26
|
-
const {
|
|
24
|
+
const { startUnleash, InMemStorageProvider } = await import(
|
|
27
25
|
"unleash-client"
|
|
28
26
|
);
|
|
29
|
-
type Context = import("unleash-client").Context;
|
|
30
27
|
|
|
31
|
-
|
|
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);
|
|
28
|
+
return { startUnleash, InMemStorageProvider };
|
|
41
29
|
} catch {
|
|
42
30
|
throw new Error(
|
|
43
31
|
"unleash-client is not installed or not configured correctly",
|
|
@@ -45,6 +33,30 @@ export class FeatureFlags extends BaseClient<paths> {
|
|
|
45
33
|
}
|
|
46
34
|
}
|
|
47
35
|
|
|
36
|
+
private async initializeConnection() {
|
|
37
|
+
if (this.getTokenFn && !this.unleashConnectionOptions.token) {
|
|
38
|
+
this.unleashConnectionOptions.token = await this.getTokenFn(
|
|
39
|
+
this.serviceName,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// biome-ignore lint/suspicious/noExplicitAny: We cannot import the types from the unleash-client package
|
|
45
|
+
async isFlagEnabled(name: string, context?: any) {
|
|
46
|
+
await this.initializeConnection();
|
|
47
|
+
const unleashItems = await this.getUnleashItems();
|
|
48
|
+
const client = await unleashItems.startUnleash({
|
|
49
|
+
appName: this.serviceName,
|
|
50
|
+
url: `${this.unleashConnectionOptions.url}/api`,
|
|
51
|
+
refreshInterval: 1000,
|
|
52
|
+
customHeaders: {
|
|
53
|
+
Authorization: this.unleashConnectionOptions.token ?? "",
|
|
54
|
+
},
|
|
55
|
+
storageProvider: new unleashItems.InMemStorageProvider(),
|
|
56
|
+
});
|
|
57
|
+
return client.isEnabled(name, context, () => false);
|
|
58
|
+
}
|
|
59
|
+
|
|
48
60
|
async getFeatureFlags(projectId = DEFAULT_PROJECT_ID) {
|
|
49
61
|
return await this.client
|
|
50
62
|
.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
|
+
}
|