@ogcio/building-blocks-sdk 0.0.27 → 0.1.1

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/README.md CHANGED
@@ -26,7 +26,7 @@ Install the package via:
26
26
  npm install @ogcio/building-blocks-sdk
27
27
  ```
28
28
 
29
- SDK initialization:
29
+ To initialise the SDK, give the desired configuration to `getBuildingBlockSDK`:
30
30
 
31
31
  ```typescript
32
32
  const sdk = getBuildingBlockSDK({
@@ -38,7 +38,7 @@ const sdk = getBuildingBlockSDK({
38
38
  });
39
39
  ```
40
40
 
41
- This snippet creates the SDK with configuration for the upload API building block. The SDK accepts a configuration for each building block API.
41
+ This snippet above creates an SDK for the upload API building block. The SDK accepts a configuration for each building block API.
42
42
 
43
43
  At the present time available building blocks are:
44
44
 
@@ -48,6 +48,9 @@ At the present time available building blocks are:
48
48
  - profile
49
49
  - scheduler
50
50
  - analytics
51
+ - feature-flags
52
+
53
+ Please note that the type of the `sdk` variable only registers the building blocks that are present in the configuration. This is because the SDK does not create an instance for all available building blocks, even the ones not requested in the configuration.
51
54
 
52
55
  ### Authentication
53
56
 
@@ -186,7 +189,6 @@ npm test
186
189
 
187
190
  For local development, you should have the Feature Flags service running.
188
191
  Refer to the [unleash](https://github.com/ogcio/unleash) repository for instructions on how to run the service.
189
- You can also find examples on how to run Unleash with different auth strategies in the [unleash-examples](https://github.com/ogcio/unleash-examples/tree/feat/oidc-auth) repository.
190
192
 
191
193
  ### Usage
192
194
 
@@ -205,7 +207,7 @@ const sdk = getBuildingBlockSDK({
205
207
  baseUrl,
206
208
  },
207
209
  },
208
- getTokenFn: () => token,
210
+ getTokenFn: () => Promise.resolve(token),
209
211
  });
210
212
  ```
211
213
 
@@ -224,19 +226,18 @@ const isEnabled = await sdk.featureFlags.isFlagEnabled("feature-name", {
224
226
  });
225
227
  ```
226
228
 
227
- _Note_: The `isFlagEnabled` is asynchronous because if the client is not connected yet,
228
- it will wait for the connection to be established before checking the flag.
229
- Once the client is connected, the flag will be checked synchronously.
229
+ _Note_: The `isFlagEnabled` is asynchronous because if the client is not connected yet, it will wait for the connection to be established before checking the flag. Once the client is connected, the flag will be checked synchronously. Only the first call made with the SDK will initiate a connection, all subsequent calls will use the connection already obtained.
230
230
 
231
231
  ### Next build error resolution
232
232
 
233
233
  When `next build` is run, it performs a static analysis of the code and tries to retrieve the contents of all dependencies, including those imported dynamically.
234
234
 
235
- So, if `unleash-client` is not installed, it causes a build error.
235
+ IF any peer dependencies defined in the package.json (for example `unleash-client`) are not installed the build will fail.
236
236
 
237
- To prevent this you can add this webpack configuration to your next configuration, to mark it as an external package so it won't be included in the bundle.
237
+ To prevent this you can add this webpack configuration to your next configuration, to mark missing peer dependencies as an external package so they won't be included in the bundle.
238
238
 
239
239
  ```
240
+ // Example for unleash-client
240
241
  ...
241
242
  webpack: (config, { isServer }) => {
242
243
  if (isServer) {
@@ -248,4 +249,4 @@ webpack: (config, { isServer }) => {
248
249
  ...
249
250
  ```
250
251
 
251
- Then, once `unleash-client` is needed and installed, we can remove that configuration, and everything start working as expected.
252
+ You can safely remove any external dependency from the weback config once it has been installed.
@@ -21,7 +21,7 @@ global.fetch = async () => ({
21
21
  });
22
22
  describe("FeatureFlags", () => {
23
23
  const baseUrl = "http://fakehost";
24
- const getTokenFn = () => "test-token";
24
+ const getTokenFn = () => Promise.resolve("test-token");
25
25
  let featureFlags;
26
26
  beforeEach(async () => {
27
27
  featureFlags = new FeatureFlags({ baseUrl, getTokenFn });
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/client/clients/featureFlags/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAEhF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACnB,SAAS,EAAE,EAAE,CAAC,EAAE,CACd,CACE,IAA+B,EAC/B,QAAiB,EACjB,cAA6B,EAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CACxB;KACF,CAAC;IACF,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAC;AAEJ,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB,oBAAoB;AACpB,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CACxB,CAAC;IACC,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,aAAa;IAC/B,OAAO,EAAE,IAAI,OAAO,EAAE;CACvB,CAAa,CAAC;AAEjB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,iBAAiB,CAAC;IAClC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;IACtC,IAAI,YAA0B,CAAC;IAE/B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,aAAa,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/client/clients/featureFlags/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAEhF,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACnB,SAAS,EAAE,EAAE,CAAC,EAAE,CACd,CACE,IAA+B,EAC/B,QAAiB,EACjB,cAA6B,EAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CACxB;KACF,CAAC;IACF,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAC;AAEJ,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB,oBAAoB;AACpB,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CACxB,CAAC;IACC,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,aAAa;IAC/B,OAAO,EAAE,IAAI,OAAO,EAAE;CACvB,CAAa,CAAC;AAEjB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,iBAAiB,CAAC;IAClC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,YAA0B,CAAC;IAE/B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,aAAa,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,174 @@
1
+ import { Analytics } from "@ogcio/analytics-sdk";
2
+ import { beforeEach, describe, expect, expectTypeOf, it, vi } from "vitest";
3
+ import { FeatureFlags } from "../client/clients/featureFlags/index.js";
4
+ import { Messaging } from "../client/clients/messaging/index.js";
5
+ import { Payments } from "../client/clients/payments/index.js";
6
+ import { Profile } from "../client/clients/profile/index.js";
7
+ import { Scheduler } from "../client/clients/scheduler/index.js";
8
+ import { Upload } from "../client/clients/upload/index.js";
9
+ import { getBuildingBlockSDK } from "../index.js";
10
+ vi.mock("@ogcio/analytics-sdk", () => ({
11
+ Analytics: vi.fn(),
12
+ }));
13
+ vi.mock("../client/clients/featureFlags/index.js", () => ({
14
+ FeatureFlags: vi.fn(),
15
+ }));
16
+ vi.mock("../client/clients/messaging/index.js", () => ({
17
+ Messaging: vi.fn(),
18
+ }));
19
+ vi.mock("../client/clients/payments/index.js", () => ({
20
+ Payments: vi.fn(),
21
+ }));
22
+ vi.mock("../client/clients/profile/index.js", () => ({
23
+ Profile: vi.fn(),
24
+ }));
25
+ vi.mock("../client/clients/scheduler/index.js", () => ({
26
+ Scheduler: vi.fn(),
27
+ }));
28
+ vi.mock("../client/clients/upload/index.js", () => ({
29
+ Upload: vi.fn(),
30
+ }));
31
+ describe("getBuildingBlockSDK", () => {
32
+ const getTokenFn = vi.fn().mockResolvedValue("test-token");
33
+ const baseUrl = "http://test.com";
34
+ beforeEach(() => {
35
+ vi.clearAllMocks();
36
+ });
37
+ it("should create SDK with all services when all configs provided", () => {
38
+ const params = {
39
+ services: {
40
+ analytics: {
41
+ baseUrl,
42
+ trackingWebsiteId: "website-id",
43
+ organizationId: "org-id",
44
+ },
45
+ featureFlags: { baseUrl },
46
+ messaging: { baseUrl },
47
+ payments: { baseUrl },
48
+ profile: { baseUrl },
49
+ scheduler: { baseUrl },
50
+ upload: { baseUrl },
51
+ },
52
+ getTokenFn,
53
+ };
54
+ const sdk = getBuildingBlockSDK(params);
55
+ expect(Analytics).toHaveBeenCalledWith({
56
+ baseUrl,
57
+ trackingWebsiteId: "website-id",
58
+ organizationId: "org-id",
59
+ getTokenFn,
60
+ });
61
+ expect(FeatureFlags).toHaveBeenCalledWith({
62
+ baseUrl,
63
+ getTokenFn,
64
+ });
65
+ expect(Messaging).toHaveBeenCalledWith({ baseUrl, getTokenFn });
66
+ expect(Payments).toHaveBeenCalledWith({ baseUrl, getTokenFn });
67
+ expect(Profile).toHaveBeenCalledWith({ baseUrl, getTokenFn });
68
+ expect(Scheduler).toHaveBeenCalledWith({ baseUrl, getTokenFn });
69
+ expect(Upload).toHaveBeenCalledWith({ baseUrl, getTokenFn });
70
+ expect(Object.keys(sdk)).toHaveLength(7);
71
+ });
72
+ it("should create SDK with only specified services", () => {
73
+ const params = {
74
+ services: {
75
+ analytics: {
76
+ baseUrl,
77
+ trackingWebsiteId: "website-id",
78
+ organizationId: "org-id",
79
+ },
80
+ messaging: { baseUrl },
81
+ },
82
+ getTokenFn,
83
+ };
84
+ const sdk = getBuildingBlockSDK(params);
85
+ expect(Analytics).toHaveBeenCalledWith({
86
+ baseUrl,
87
+ trackingWebsiteId: "website-id",
88
+ organizationId: "org-id",
89
+ getTokenFn,
90
+ });
91
+ expect(Messaging).toHaveBeenCalledWith({ baseUrl, getTokenFn });
92
+ expect(FeatureFlags).not.toHaveBeenCalled();
93
+ expect(Payments).not.toHaveBeenCalled();
94
+ expect(Profile).not.toHaveBeenCalled();
95
+ expect(Scheduler).not.toHaveBeenCalled();
96
+ expect(Upload).not.toHaveBeenCalled();
97
+ expect(Object.keys(sdk)).toHaveLength(2);
98
+ expect(sdk).toHaveProperty("analytics");
99
+ expect(sdk).toHaveProperty("messaging");
100
+ });
101
+ it("should pass additional config parameters to services", () => {
102
+ const params = {
103
+ services: {
104
+ analytics: {
105
+ baseUrl,
106
+ trackingWebsiteId: "website-id",
107
+ organizationId: "org-id",
108
+ },
109
+ },
110
+ getTokenFn,
111
+ };
112
+ getBuildingBlockSDK(params);
113
+ expect(Analytics).toHaveBeenCalledWith({
114
+ baseUrl,
115
+ trackingWebsiteId: "website-id",
116
+ organizationId: "org-id",
117
+ getTokenFn,
118
+ });
119
+ });
120
+ it("should create empty SDK when no services configured", () => {
121
+ const params = {
122
+ services: {},
123
+ getTokenFn,
124
+ };
125
+ const sdk = getBuildingBlockSDK(params);
126
+ expect(Object.keys(sdk)).toHaveLength(0);
127
+ expect(Analytics).not.toHaveBeenCalled();
128
+ expect(FeatureFlags).not.toHaveBeenCalled();
129
+ expect(Messaging).not.toHaveBeenCalled();
130
+ expect(Payments).not.toHaveBeenCalled();
131
+ expect(Profile).not.toHaveBeenCalled();
132
+ expect(Scheduler).not.toHaveBeenCalled();
133
+ expect(Upload).not.toHaveBeenCalled();
134
+ });
135
+ });
136
+ describe("getBuildingBlockSDK type tests", () => {
137
+ it("should return type with only configured services", () => {
138
+ const params = {
139
+ services: {
140
+ analytics: {
141
+ baseUrl: "test",
142
+ trackingWebsiteId: "test",
143
+ organizationId: "test",
144
+ },
145
+ messaging: { baseUrl: "test" },
146
+ },
147
+ getTokenFn: async () => "token",
148
+ };
149
+ expectTypeOf().toMatchTypeOf();
150
+ });
151
+ it("should return empty object type when no services configured", () => {
152
+ const params = {
153
+ services: {},
154
+ getTokenFn: async () => "token",
155
+ };
156
+ // biome-ignore lint/complexity/noBannedTypes: it's for testing purposes
157
+ expectTypeOf().toMatchTypeOf();
158
+ });
159
+ it("should not allow undefined baseUrl in service config", () => {
160
+ // biome-ignore lint/correctness/noUnusedVariables: it's for testing purposes
161
+ const params = {
162
+ services: {
163
+ analytics: {
164
+ // @ts-expect-error - baseUrl cannot be undefined
165
+ baseUrl: undefined,
166
+ trackingWebsiteId: "test",
167
+ organizationId: "test",
168
+ },
169
+ },
170
+ getTokenFn: async () => "token",
171
+ };
172
+ });
173
+ });
174
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import createClient from "openapi-fetch";
2
- import type { BaseApiClientParams, SERVICE_NAME, TokenFunction } from "../types/index.js";
2
+ import type { SERVICE_NAME, TokenFunction } from "../types/index.js";
3
3
  export declare abstract class BaseClient<T extends {}> {
4
4
  private baseUrl?;
5
5
  private initialized;
@@ -7,7 +7,10 @@ export declare abstract class BaseClient<T extends {}> {
7
7
  protected getTokenFn?: TokenFunction;
8
8
  protected serviceName: SERVICE_NAME | undefined;
9
9
  protected client: ReturnType<typeof createClient<T>>;
10
- constructor({ baseUrl, getTokenFn }: BaseApiClientParams);
10
+ constructor({ baseUrl, getTokenFn, }: {
11
+ baseUrl: string;
12
+ getTokenFn?: TokenFunction;
13
+ });
11
14
  deleteToken(): void;
12
15
  protected getToken(): Promise<string | undefined>;
13
16
  isInitialized(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAGN,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,8BAAsB,UAAU,CAAC,CAAC,SAAS,EAAE;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC;IAEpB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IAEhD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,mBAAmB;IA6BjD,WAAW;cAIF,QAAQ;IASjB,aAAa;CAGrB"}
1
+ {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAErE,8BAAsB,UAAU,CAAC,CAAC,SAAS,EAAE;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC;IAEpB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IAEhD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzC,EACV,OAAO,EACP,UAAU,GACX,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,aAAa,CAAC;KAC5B;IA6BM,WAAW;cAIF,QAAQ;IASjB,aAAa;CAGrB"}
@@ -6,7 +6,7 @@ export class BaseClient {
6
6
  getTokenFn;
7
7
  serviceName;
8
8
  client;
9
- constructor({ baseUrl, getTokenFn }) {
9
+ constructor({ baseUrl, getTokenFn, }) {
10
10
  this.initialized = false;
11
11
  if (baseUrl) {
12
12
  this.baseUrl = baseUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAGN,MAAM,eAAe,CAAC;AAQvB,MAAM,OAAgB,UAAU;IACtB,OAAO,CAAU;IACjB,WAAW,CAAC;IAEV,KAAK,CAAU;IACf,UAAU,CAAiB;IAC3B,WAAW,CAA2B;IAEtC,MAAM,CAAqC;IAErD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAuB;QACtD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,GAAe;YACjC,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAA2B,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAA2B,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAG9D,MAAM,OAAgB,UAAU;IACtB,OAAO,CAAU;IACjB,WAAW,CAAC;IAEV,KAAK,CAAU;IACf,UAAU,CAAiB;IAC3B,WAAW,CAA2B;IAEtC,MAAM,CAAqC;IAErD,YAAY,EACV,OAAO,EACP,UAAU,GAIX;QACC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,cAAc,GAAe;YACjC,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAA2B,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAA2B,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -1,12 +1,14 @@
1
1
  import type createClient from "openapi-fetch";
2
- import type { BaseApiClientParams } from "../../../types/index.js";
2
+ import type { FeatureFlagsConfig, TokenFunction } from "../../../types/index.js";
3
3
  import { BaseClient } from "../../base-client.js";
4
4
  import type { components, paths } from "./schema.js";
5
5
  export declare class FeatureFlags extends BaseClient<paths> {
6
6
  client: ReturnType<typeof createClient<paths>>;
7
7
  protected serviceName: "featureFlags";
8
8
  private unleashConnectionOptions;
9
- constructor({ baseUrl, getTokenFn }: BaseApiClientParams);
9
+ constructor({ baseUrl, getTokenFn, }: FeatureFlagsConfig & {
10
+ getTokenFn: TokenFunction;
11
+ });
10
12
  private getUnleashItems;
11
13
  private initializeConnection;
12
14
  isFlagEnabled(name: string, context?: any): Promise<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;AAGlD,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"}
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,EACV,kBAAkB,EAClB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,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,EACV,OAAO,EACP,UAAU,GACX,EAAE,kBAAkB,GAAG;QAAE,UAAU,EAAE,aAAa,CAAA;KAAE;YAKvC,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"}
@@ -5,7 +5,7 @@ import { DEFAULT_PROJECT_ID } from "./const.js";
5
5
  export class FeatureFlags extends BaseClient {
6
6
  serviceName = FEATURE_FLAGS;
7
7
  unleashConnectionOptions;
8
- constructor({ baseUrl, getTokenFn }) {
8
+ constructor({ baseUrl, getTokenFn, }) {
9
9
  super({ baseUrl, getTokenFn });
10
10
  this.unleashConnectionOptions = { url: baseUrl };
11
11
  }
@@ -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,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,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,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3D,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,QAA2D;gBACvE,QAAQ;gBACR,KAAK;aACN,CAAC;QACJ,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAChC,CAAC;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/clients/featureFlags/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,OAAO,YAAa,SAAQ,UAAiB;IAEvC,WAAW,GAAG,aAAa,CAAC;IAE9B,wBAAwB,CAG9B;IAEF,YAAY,EACV,OAAO,EACP,UAAU,GACyC;QACnD,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,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3D,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,QAA2D;gBACvE,QAAQ;gBACR,KAAK;aACN,CAAC;QACJ,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAChC,CAAC;IACN,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- export type { BuildingBlocksSDK } from "./types/index.js";
2
1
  export { getM2MTokenFn } from "./client/auth/index.js";
3
2
  import type { BuildingBlockSDKParams, BuildingBlocksSDK } from "./types/index.js";
4
- export declare const getBuildingBlockSDK: (params: BuildingBlockSDKParams) => BuildingBlocksSDK;
3
+ type DefinedServices<T extends BuildingBlockSDKParams> = {
4
+ [K in keyof BuildingBlocksSDK as K extends keyof T["services"] ? T["services"][K] extends undefined ? never : K : never]: BuildingBlocksSDK[K];
5
+ };
6
+ export declare const getBuildingBlockSDK: <T extends BuildingBlockSDKParams>(params: T) => DefinedServices<T>;
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,mBAAmB,WACtB,sBAAsB,KAC7B,iBAgCF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAG1B,KAAK,eAAe,CAAC,CAAC,SAAS,sBAAsB,IAAI;KACtD,CAAC,IAAI,MAAM,iBAAiB,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,UAAU,CAAC,GAC1D,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAChC,KAAK,GACL,CAAC,GACH,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC;CACjC,CAAC;AAaF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,sBAAsB,UAC1D,CAAC,KACR,eAAe,CAAC,CAAC,CAqBnB,CAAC"}
package/dist/index.js CHANGED
@@ -6,37 +6,23 @@ import { Profile } from "./client/clients/profile/index.js";
6
6
  import { Scheduler } from "./client/clients/scheduler/index.js";
7
7
  import { Upload } from "./client/clients/upload/index.js";
8
8
  export { getM2MTokenFn } from "./client/auth/index.js";
9
+ const createService = (ServiceClass, config, getTokenFn) => {
10
+ if (!config)
11
+ return undefined;
12
+ return new ServiceClass({ ...config, getTokenFn });
13
+ };
9
14
  export const getBuildingBlockSDK = (params) => {
10
15
  const { services, getTokenFn } = params;
11
- return {
12
- analytics: new Analytics({
13
- ...services.analytics,
14
- getTokenFn,
15
- }),
16
- messaging: new Messaging({
17
- ...services.messaging,
18
- getTokenFn,
19
- }),
20
- payments: new Payments({
21
- ...services.payments,
22
- getTokenFn,
23
- }),
24
- profile: new Profile({
25
- ...services.profile,
26
- getTokenFn,
27
- }),
28
- scheduler: new Scheduler({
29
- ...services.scheduler,
30
- getTokenFn,
31
- }),
32
- upload: new Upload({
33
- ...services.upload,
34
- getTokenFn,
35
- }),
36
- featureFlags: new FeatureFlags({
37
- ...services.featureFlags,
38
- getTokenFn,
39
- }),
16
+ const sdk = {
17
+ analytics: createService(Analytics, services.analytics, getTokenFn),
18
+ messaging: createService(Messaging, services.messaging, getTokenFn),
19
+ payments: createService(Payments, services.payments, getTokenFn),
20
+ profile: createService(Profile, services.profile, getTokenFn),
21
+ scheduler: createService(Scheduler, services.scheduler, getTokenFn),
22
+ upload: createService(Upload, services.upload, getTokenFn),
23
+ featureFlags: createService(FeatureFlags, services.featureFlags, getTokenFn),
40
24
  };
25
+ // Remove undefined services
26
+ return Object.fromEntries(Object.entries(sdk).filter(([_, value]) => value !== undefined));
41
27
  };
42
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAA8B,EACX,EAAE;IACrB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACxC,OAAO;QACL,SAAS,EAAE,IAAI,SAAS,CAAC;YACvB,GAAG,QAAQ,CAAC,SAAS;YACrB,UAAU;SACX,CAAC;QACF,SAAS,EAAE,IAAI,SAAS,CAAC;YACvB,GAAG,QAAQ,CAAC,SAAS;YACrB,UAAU;SACX,CAAC;QACF,QAAQ,EAAE,IAAI,QAAQ,CAAC;YACrB,GAAG,QAAQ,CAAC,QAAQ;YACpB,UAAU;SACX,CAAC;QACF,OAAO,EAAE,IAAI,OAAO,CAAC;YACnB,GAAG,QAAQ,CAAC,OAAO;YACnB,UAAU;SACX,CAAC;QACF,SAAS,EAAE,IAAI,SAAS,CAAC;YACvB,GAAG,QAAQ,CAAC,SAAS;YACrB,UAAU;SACX,CAAC;QACF,MAAM,EAAE,IAAI,MAAM,CAAC;YACjB,GAAG,QAAQ,CAAC,MAAM;YAClB,UAAU;SACX,CAAC;QACF,YAAY,EAAE,IAAI,YAAY,CAAC;YAC7B,GAAG,QAAQ,CAAC,YAAY;YACxB,UAAU;SACX,CAAC;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAkBvD,MAAM,aAAa,GAAG,CACpB,YAEyB,EACzB,MAA+B,EAC/B,UAAyB,EACS,EAAE;IACpC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAS,EACW,EAAE;IACtB,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAExC,MAAM,GAAG,GAAG;QACV,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;QACnE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;QACnE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;QAChE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7D,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;QACnE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;QAC1D,YAAY,EAAE,aAAa,CACzB,YAAY,EACZ,QAAQ,CAAC,YAAY,EACrB,UAAU,CACX;KACF,CAAC;IAEF,4BAA4B;IAC5B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC1C,CAAC;AAC1B,CAAC,CAAC"}
@@ -1,53 +1,46 @@
1
- import type { Analytics } from "@ogcio/analytics-sdk";
1
+ import type { Analytics, AnalyticsOptions } from "@ogcio/analytics-sdk";
2
2
  import type { FeatureFlags } from "../client/clients/featureFlags/index.js";
3
3
  import type { Messaging } from "../client/clients/messaging/index.js";
4
4
  import type { Payments } from "../client/clients/payments/index.js";
5
5
  import type { Profile } from "../client/clients/profile/index.js";
6
6
  import type { Scheduler } from "../client/clients/scheduler/index.js";
7
7
  import type { Upload } from "../client/clients/upload/index.js";
8
- export declare const ANALYTICS: "analytics";
9
- export declare const MESSAGING: "messaging";
10
- export declare const PAYMENTS: "payments";
11
- export declare const PROFILE: "profile";
12
- export declare const SCHEDULER: "scheduler";
13
- export declare const UPLOAD: "upload";
14
- export declare const FEATURE_FLAGS: "featureFlags";
15
- export type SERVICE_NAME = typeof ANALYTICS | typeof MESSAGING | typeof PAYMENTS | typeof PROFILE | typeof SCHEDULER | typeof UPLOAD | typeof FEATURE_FLAGS;
16
- export type TokenFunction = (serviceName: SERVICE_NAME) => Promise<string> | string;
17
- export type M2MParams = {
18
- getOrganizationTokenParams?: GetOrganizationTokenParams;
19
- getAccessTokenParams?: GetAccessTokenParams;
20
- };
21
- export type M2MTokenFnConfig = {
22
- services: {
23
- [key in SERVICE_NAME]?: M2MParams;
24
- };
25
- };
26
- export type SDKClientParams = {
27
- baseUrl?: string;
28
- };
29
- export type BaseApiClientParams = SDKClientParams & {
30
- getTokenFn?: TokenFunction;
31
- };
32
- type ServiceClients = {
33
- analytics: typeof Analytics;
34
- messaging: typeof Messaging;
35
- payments: typeof Payments;
36
- profile: typeof Profile;
37
- scheduler: typeof Scheduler;
38
- upload: typeof Upload;
39
- featureFlags: typeof FeatureFlags;
40
- };
41
- export type BuildingBlocksSDK = {
42
- [key in keyof ServiceClients]: InstanceType<ServiceClients[key]>;
43
- };
44
- export type BuildingBlockSDKParams = {
45
- services: {
46
- [key in keyof ServiceClients]?: ConstructorParameters<ServiceClients[key]>[0];
47
- };
48
- getTokenFn?: TokenFunction;
49
- };
50
- export interface TokenResponseBody {
8
+ declare const ANALYTICS: "analytics";
9
+ declare const MESSAGING: "messaging";
10
+ declare const PAYMENTS: "payments";
11
+ declare const PROFILE: "profile";
12
+ declare const SCHEDULER: "scheduler";
13
+ declare const UPLOAD: "upload";
14
+ declare const FEATURE_FLAGS: "featureFlags";
15
+ type SERVICE_NAME = typeof ANALYTICS | typeof MESSAGING | typeof PAYMENTS | typeof PROFILE | typeof SCHEDULER | typeof UPLOAD | typeof FEATURE_FLAGS;
16
+ interface AnalyticsConfig extends AnalyticsOptions {
17
+ }
18
+ interface ServiceBaseConfig {
19
+ baseUrl: string;
20
+ }
21
+ interface MessagingConfig extends ServiceBaseConfig {
22
+ }
23
+ interface PaymentsConfig extends ServiceBaseConfig {
24
+ }
25
+ interface ProfileConfig extends ServiceBaseConfig {
26
+ }
27
+ interface SchedulerConfig extends ServiceBaseConfig {
28
+ }
29
+ interface UploadConfig extends ServiceBaseConfig {
30
+ }
31
+ interface FeatureFlagsConfig extends ServiceBaseConfig {
32
+ }
33
+ interface Services {
34
+ analytics?: AnalyticsConfig;
35
+ messaging?: MessagingConfig;
36
+ payments?: PaymentsConfig;
37
+ profile?: ProfileConfig;
38
+ scheduler?: SchedulerConfig;
39
+ upload?: UploadConfig;
40
+ featureFlags?: FeatureFlagsConfig;
41
+ }
42
+ type TokenFunction = (serviceName: SERVICE_NAME) => Promise<string>;
43
+ interface TokenResponseBody {
51
44
  access_token: string;
52
45
  expires_in: number;
53
46
  token_type: string;
@@ -59,11 +52,34 @@ interface GetTokenBaseParams {
59
52
  applicationSecret: string;
60
53
  scopes?: string[];
61
54
  }
62
- export interface GetAccessTokenParams extends GetTokenBaseParams {
55
+ interface GetAccessTokenParams extends GetTokenBaseParams {
63
56
  resource: string;
64
57
  }
65
- export interface GetOrganizationTokenParams extends GetTokenBaseParams {
58
+ interface GetOrganizationTokenParams extends GetTokenBaseParams {
66
59
  organizationId: string;
67
60
  }
68
- export {};
61
+ type M2MParams = {
62
+ getOrganizationTokenParams?: GetOrganizationTokenParams;
63
+ getAccessTokenParams?: GetAccessTokenParams;
64
+ };
65
+ type M2MTokenFnConfig = {
66
+ services: {
67
+ [key in SERVICE_NAME]?: M2MParams;
68
+ };
69
+ };
70
+ interface BuildingBlockSDKParams {
71
+ services: Services;
72
+ getTokenFn: TokenFunction;
73
+ }
74
+ interface BuildingBlocksSDK {
75
+ analytics: Analytics;
76
+ messaging: Messaging;
77
+ payments: Payments;
78
+ profile: Profile;
79
+ scheduler: Scheduler;
80
+ upload: Upload;
81
+ featureFlags: FeatureFlags;
82
+ }
83
+ export { ANALYTICS, MESSAGING, PAYMENTS, PROFILE, SCHEDULER, UPLOAD, FEATURE_FLAGS, };
84
+ export type { BuildingBlockSDKParams, BuildingBlocksSDK, Analytics, AnalyticsConfig, Messaging, MessagingConfig, Payments, PaymentsConfig, Profile, ProfileConfig, Scheduler, SchedulerConfig, Upload, UploadConfig, FeatureFlags, FeatureFlagsConfig, Services, TokenFunction, SERVICE_NAME, TokenResponseBody, GetTokenBaseParams, GetAccessTokenParams, GetOrganizationTokenParams, M2MParams, M2MTokenFnConfig, };
69
85
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- export const ANALYTICS = "analytics";
2
- export const MESSAGING = "messaging";
3
- export const PAYMENTS = "payments";
4
- export const PROFILE = "profile";
5
- export const SCHEDULER = "scheduler";
6
- export const UPLOAD = "upload";
7
- export const FEATURE_FLAGS = "featureFlags";
1
+ const ANALYTICS = "analytics";
2
+ const MESSAGING = "messaging";
3
+ const PAYMENTS = "payments";
4
+ const PROFILE = "profile";
5
+ const SCHEDULER = "scheduler";
6
+ const UPLOAD = "upload";
7
+ const FEATURE_FLAGS = "featureFlags";
8
+ export { ANALYTICS, MESSAGING, PAYMENTS, PROFILE, SCHEDULER, UPLOAD, FEATURE_FLAGS, };
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAmB,CAAC;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,SAAkB,CAAC;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG,QAAiB,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,cAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AASA,MAAM,SAAS,GAAG,WAAoB,CAAC;AACvC,MAAM,SAAS,GAAG,WAAoB,CAAC;AACvC,MAAM,QAAQ,GAAG,UAAmB,CAAC;AACrC,MAAM,OAAO,GAAG,SAAkB,CAAC;AACnC,MAAM,SAAS,GAAG,WAAoB,CAAC;AACvC,MAAM,MAAM,GAAG,QAAiB,CAAC;AACjC,MAAM,aAAa,GAAG,cAAuB,CAAC;AAoF9C,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,aAAa,GACd,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ogcio/building-blocks-sdk",
3
- "version": "0.0.27",
3
+ "version": "0.1.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "test": "vitest run --coverage --reporter=junit --outputFile=results.xml",
9
+ "test:local": "vitest",
9
10
  "test:e2e": "cd ./e2e && bru run --env local",
10
11
  "test:regression:e2e": "cd ./e2e && mkdir -p test-results && bru run --env dev --output ./test-results/results.xml --format junit",
11
12
  "build": "rm -rf dist && tsc -p tsconfig.prod.json",
@@ -19,7 +20,7 @@
19
20
  "prepare": "husky || true"
20
21
  },
21
22
  "dependencies": {
22
- "@ogcio/analytics-sdk": "0.1.0-beta.4",
23
+ "@ogcio/analytics-sdk": "0.1.0-beta.5",
23
24
  "@sinclair/typebox": "^0.34.3",
24
25
  "commander": "^12.1.0",
25
26
  "http-errors": "^2.0.0",
@@ -33,7 +33,7 @@ global.fetch = async () =>
33
33
 
34
34
  describe("FeatureFlags", () => {
35
35
  const baseUrl = "http://fakehost";
36
- const getTokenFn = () => "test-token";
36
+ const getTokenFn = () => Promise.resolve("test-token");
37
37
  let featureFlags: FeatureFlags;
38
38
 
39
39
  beforeEach(async () => {
@@ -0,0 +1,213 @@
1
+ import { Analytics } from "@ogcio/analytics-sdk";
2
+ import { beforeEach, describe, expect, expectTypeOf, it, vi } from "vitest";
3
+ import { FeatureFlags } from "../client/clients/featureFlags/index.js";
4
+ import { Messaging } from "../client/clients/messaging/index.js";
5
+ import { Payments } from "../client/clients/payments/index.js";
6
+ import { Profile } from "../client/clients/profile/index.js";
7
+ import { Scheduler } from "../client/clients/scheduler/index.js";
8
+ import { Upload } from "../client/clients/upload/index.js";
9
+ import { getBuildingBlockSDK } from "../index.js";
10
+ import type { BuildingBlockSDKParams } from "../types/index.js";
11
+
12
+ vi.mock("@ogcio/analytics-sdk", () => ({
13
+ Analytics: vi.fn(),
14
+ }));
15
+
16
+ vi.mock("../client/clients/featureFlags/index.js", () => ({
17
+ FeatureFlags: vi.fn(),
18
+ }));
19
+
20
+ vi.mock("../client/clients/messaging/index.js", () => ({
21
+ Messaging: vi.fn(),
22
+ }));
23
+
24
+ vi.mock("../client/clients/payments/index.js", () => ({
25
+ Payments: vi.fn(),
26
+ }));
27
+
28
+ vi.mock("../client/clients/profile/index.js", () => ({
29
+ Profile: vi.fn(),
30
+ }));
31
+
32
+ vi.mock("../client/clients/scheduler/index.js", () => ({
33
+ Scheduler: vi.fn(),
34
+ }));
35
+
36
+ vi.mock("../client/clients/upload/index.js", () => ({
37
+ Upload: vi.fn(),
38
+ }));
39
+
40
+ describe("getBuildingBlockSDK", () => {
41
+ const getTokenFn = vi.fn().mockResolvedValue("test-token");
42
+ const baseUrl = "http://test.com";
43
+
44
+ beforeEach(() => {
45
+ vi.clearAllMocks();
46
+ });
47
+
48
+ it("should create SDK with all services when all configs provided", () => {
49
+ const params = {
50
+ services: {
51
+ analytics: {
52
+ baseUrl,
53
+ trackingWebsiteId: "website-id",
54
+ organizationId: "org-id",
55
+ },
56
+ featureFlags: { baseUrl },
57
+ messaging: { baseUrl },
58
+ payments: { baseUrl },
59
+ profile: { baseUrl },
60
+ scheduler: { baseUrl },
61
+ upload: { baseUrl },
62
+ },
63
+ getTokenFn,
64
+ };
65
+
66
+ const sdk = getBuildingBlockSDK(params);
67
+
68
+ expect(Analytics).toHaveBeenCalledWith({
69
+ baseUrl,
70
+ trackingWebsiteId: "website-id",
71
+ organizationId: "org-id",
72
+ getTokenFn,
73
+ });
74
+ expect(FeatureFlags).toHaveBeenCalledWith({
75
+ baseUrl,
76
+ getTokenFn,
77
+ });
78
+ expect(Messaging).toHaveBeenCalledWith({ baseUrl, getTokenFn });
79
+ expect(Payments).toHaveBeenCalledWith({ baseUrl, getTokenFn });
80
+ expect(Profile).toHaveBeenCalledWith({ baseUrl, getTokenFn });
81
+ expect(Scheduler).toHaveBeenCalledWith({ baseUrl, getTokenFn });
82
+ expect(Upload).toHaveBeenCalledWith({ baseUrl, getTokenFn });
83
+
84
+ expect(Object.keys(sdk)).toHaveLength(7);
85
+ });
86
+
87
+ it("should create SDK with only specified services", () => {
88
+ const params = {
89
+ services: {
90
+ analytics: {
91
+ baseUrl,
92
+ trackingWebsiteId: "website-id",
93
+ organizationId: "org-id",
94
+ },
95
+ messaging: { baseUrl },
96
+ },
97
+ getTokenFn,
98
+ };
99
+
100
+ const sdk = getBuildingBlockSDK(params);
101
+
102
+ expect(Analytics).toHaveBeenCalledWith({
103
+ baseUrl,
104
+ trackingWebsiteId: "website-id",
105
+ organizationId: "org-id",
106
+ getTokenFn,
107
+ });
108
+ expect(Messaging).toHaveBeenCalledWith({ baseUrl, getTokenFn });
109
+ expect(FeatureFlags).not.toHaveBeenCalled();
110
+ expect(Payments).not.toHaveBeenCalled();
111
+ expect(Profile).not.toHaveBeenCalled();
112
+ expect(Scheduler).not.toHaveBeenCalled();
113
+ expect(Upload).not.toHaveBeenCalled();
114
+
115
+ expect(Object.keys(sdk)).toHaveLength(2);
116
+ expect(sdk).toHaveProperty("analytics");
117
+ expect(sdk).toHaveProperty("messaging");
118
+ });
119
+
120
+ it("should pass additional config parameters to services", () => {
121
+ const params = {
122
+ services: {
123
+ analytics: {
124
+ baseUrl,
125
+ trackingWebsiteId: "website-id",
126
+ organizationId: "org-id",
127
+ },
128
+ },
129
+ getTokenFn,
130
+ };
131
+
132
+ getBuildingBlockSDK(params);
133
+
134
+ expect(Analytics).toHaveBeenCalledWith({
135
+ baseUrl,
136
+ trackingWebsiteId: "website-id",
137
+ organizationId: "org-id",
138
+ getTokenFn,
139
+ });
140
+ });
141
+
142
+ it("should create empty SDK when no services configured", () => {
143
+ const params = {
144
+ services: {},
145
+ getTokenFn,
146
+ };
147
+
148
+ const sdk = getBuildingBlockSDK(params);
149
+
150
+ expect(Object.keys(sdk)).toHaveLength(0);
151
+ expect(Analytics).not.toHaveBeenCalled();
152
+ expect(FeatureFlags).not.toHaveBeenCalled();
153
+ expect(Messaging).not.toHaveBeenCalled();
154
+ expect(Payments).not.toHaveBeenCalled();
155
+ expect(Profile).not.toHaveBeenCalled();
156
+ expect(Scheduler).not.toHaveBeenCalled();
157
+ expect(Upload).not.toHaveBeenCalled();
158
+ });
159
+ });
160
+
161
+ describe("getBuildingBlockSDK type tests", () => {
162
+ it("should return type with only configured services", () => {
163
+ const params = {
164
+ services: {
165
+ analytics: {
166
+ baseUrl: "test",
167
+ trackingWebsiteId: "test",
168
+ organizationId: "test",
169
+ },
170
+ messaging: { baseUrl: "test" },
171
+ },
172
+ getTokenFn: async () => "token",
173
+ } satisfies BuildingBlockSDKParams;
174
+
175
+ type Result = ReturnType<typeof getBuildingBlockSDK<typeof params>>;
176
+
177
+ expectTypeOf<Result>().toMatchTypeOf<{
178
+ analytics: Analytics;
179
+ messaging: Messaging;
180
+ }>();
181
+
182
+ // @ts-expect-error - Property 'featureFlags' should not exist on type Result
183
+ // biome-ignore lint/correctness/noUnusedVariables: it's for testing purposes
184
+ type ShouldFail = Result["featureFlags"];
185
+ });
186
+
187
+ it("should return empty object type when no services configured", () => {
188
+ const params = {
189
+ services: {},
190
+ getTokenFn: async () => "token",
191
+ } satisfies BuildingBlockSDKParams;
192
+
193
+ type Result = ReturnType<typeof getBuildingBlockSDK<typeof params>>;
194
+
195
+ // biome-ignore lint/complexity/noBannedTypes: it's for testing purposes
196
+ expectTypeOf<Result>().toMatchTypeOf<{}>();
197
+ });
198
+
199
+ it("should not allow undefined baseUrl in service config", () => {
200
+ // biome-ignore lint/correctness/noUnusedVariables: it's for testing purposes
201
+ const params: BuildingBlockSDKParams = {
202
+ services: {
203
+ analytics: {
204
+ // @ts-expect-error - baseUrl cannot be undefined
205
+ baseUrl: undefined,
206
+ trackingWebsiteId: "test",
207
+ organizationId: "test",
208
+ },
209
+ },
210
+ getTokenFn: async () => "token",
211
+ };
212
+ });
213
+ });
@@ -1,13 +1,5 @@
1
- import createClient, {
2
- type Middleware,
3
- type FetchResponse,
4
- } from "openapi-fetch";
5
- import type {
6
- BaseApiClientParams,
7
- SERVICE_NAME,
8
- TokenFunction,
9
- } from "../types/index.js";
10
- import type { DataResponseValue } from "./utils/client-utils.js";
1
+ import createClient, { type Middleware } from "openapi-fetch";
2
+ import type { SERVICE_NAME, TokenFunction } from "../types/index.js";
11
3
 
12
4
  export abstract class BaseClient<T extends {}> {
13
5
  private baseUrl?: string;
@@ -19,7 +11,13 @@ export abstract class BaseClient<T extends {}> {
19
11
 
20
12
  protected client: ReturnType<typeof createClient<T>>;
21
13
 
22
- constructor({ baseUrl, getTokenFn }: BaseApiClientParams) {
14
+ constructor({
15
+ baseUrl,
16
+ getTokenFn,
17
+ }: {
18
+ baseUrl: string;
19
+ getTokenFn?: TokenFunction;
20
+ }) {
23
21
  this.initialized = false;
24
22
  if (baseUrl) {
25
23
  this.baseUrl = baseUrl;
@@ -1,5 +1,8 @@
1
1
  import type createClient from "openapi-fetch";
2
- import type { BaseApiClientParams } from "../../../types/index.js";
2
+ import type {
3
+ FeatureFlagsConfig,
4
+ TokenFunction,
5
+ } from "../../../types/index.js";
3
6
  import { FEATURE_FLAGS } from "../../../types/index.js";
4
7
  import { BaseClient } from "../../base-client.js";
5
8
  import { formatError, formatResponse } from "../../utils/client-utils.js";
@@ -15,7 +18,10 @@ export class FeatureFlags extends BaseClient<paths> {
15
18
  token?: string;
16
19
  };
17
20
 
18
- constructor({ baseUrl, getTokenFn }: BaseApiClientParams) {
21
+ constructor({
22
+ baseUrl,
23
+ getTokenFn,
24
+ }: FeatureFlagsConfig & { getTokenFn: TokenFunction }) {
19
25
  super({ baseUrl, getTokenFn });
20
26
  this.unleashConnectionOptions = { url: baseUrl };
21
27
  }
package/src/index.ts CHANGED
@@ -6,46 +6,56 @@ import { Payments } from "./client/clients/payments/index.js";
6
6
  import { Profile } from "./client/clients/profile/index.js";
7
7
  import { Scheduler } from "./client/clients/scheduler/index.js";
8
8
  import { Upload } from "./client/clients/upload/index.js";
9
- export type { BuildingBlocksSDK } from "./types/index.js";
10
9
  export { getM2MTokenFn } from "./client/auth/index.js";
11
10
 
12
11
  import type {
13
12
  BuildingBlockSDKParams,
14
13
  BuildingBlocksSDK,
14
+ Services,
15
+ TokenFunction,
15
16
  } from "./types/index.js";
16
17
 
17
- export const getBuildingBlockSDK = (
18
- params: BuildingBlockSDKParams,
19
- ): BuildingBlocksSDK => {
18
+ // Create type that only includes services that are defined in params
19
+ type DefinedServices<T extends BuildingBlockSDKParams> = {
20
+ [K in keyof BuildingBlocksSDK as K extends keyof T["services"]
21
+ ? T["services"][K] extends undefined
22
+ ? never
23
+ : K
24
+ : never]: BuildingBlocksSDK[K];
25
+ };
26
+
27
+ const createService = <K extends keyof Services>(
28
+ ServiceClass: new (
29
+ config: Services[K] & { getTokenFn: TokenFunction },
30
+ ) => BuildingBlocksSDK[K],
31
+ config: Services[K] | undefined,
32
+ getTokenFn: TokenFunction,
33
+ ): BuildingBlocksSDK[K] | undefined => {
34
+ if (!config) return undefined;
35
+ return new ServiceClass({ ...config, getTokenFn });
36
+ };
37
+
38
+ export const getBuildingBlockSDK = <T extends BuildingBlockSDKParams>(
39
+ params: T,
40
+ ): DefinedServices<T> => {
20
41
  const { services, getTokenFn } = params;
21
- return {
22
- analytics: new Analytics({
23
- ...services.analytics,
24
- getTokenFn,
25
- }),
26
- messaging: new Messaging({
27
- ...services.messaging,
28
- getTokenFn,
29
- }),
30
- payments: new Payments({
31
- ...services.payments,
32
- getTokenFn,
33
- }),
34
- profile: new Profile({
35
- ...services.profile,
36
- getTokenFn,
37
- }),
38
- scheduler: new Scheduler({
39
- ...services.scheduler,
40
- getTokenFn,
41
- }),
42
- upload: new Upload({
43
- ...services.upload,
44
- getTokenFn,
45
- }),
46
- featureFlags: new FeatureFlags({
47
- ...services.featureFlags,
42
+
43
+ const sdk = {
44
+ analytics: createService(Analytics, services.analytics, getTokenFn),
45
+ messaging: createService(Messaging, services.messaging, getTokenFn),
46
+ payments: createService(Payments, services.payments, getTokenFn),
47
+ profile: createService(Profile, services.profile, getTokenFn),
48
+ scheduler: createService(Scheduler, services.scheduler, getTokenFn),
49
+ upload: createService(Upload, services.upload, getTokenFn),
50
+ featureFlags: createService(
51
+ FeatureFlags,
52
+ services.featureFlags,
48
53
  getTokenFn,
49
- }),
54
+ ),
50
55
  };
56
+
57
+ // Remove undefined services
58
+ return Object.fromEntries(
59
+ Object.entries(sdk).filter(([_, value]) => value !== undefined),
60
+ ) as DefinedServices<T>;
51
61
  };
@@ -1,4 +1,5 @@
1
- import type { Analytics } from "@ogcio/analytics-sdk";
1
+ import type { Analytics, AnalyticsOptions } from "@ogcio/analytics-sdk";
2
+
2
3
  import type { FeatureFlags } from "../client/clients/featureFlags/index.js";
3
4
  import type { Messaging } from "../client/clients/messaging/index.js";
4
5
  import type { Payments } from "../client/clients/payments/index.js";
@@ -6,15 +7,15 @@ import type { Profile } from "../client/clients/profile/index.js";
6
7
  import type { Scheduler } from "../client/clients/scheduler/index.js";
7
8
  import type { Upload } from "../client/clients/upload/index.js";
8
9
 
9
- export const ANALYTICS = "analytics" as const;
10
- export const MESSAGING = "messaging" as const;
11
- export const PAYMENTS = "payments" as const;
12
- export const PROFILE = "profile" as const;
13
- export const SCHEDULER = "scheduler" as const;
14
- export const UPLOAD = "upload" as const;
15
- export const FEATURE_FLAGS = "featureFlags" as const;
10
+ const ANALYTICS = "analytics" as const;
11
+ const MESSAGING = "messaging" as const;
12
+ const PAYMENTS = "payments" as const;
13
+ const PROFILE = "profile" as const;
14
+ const SCHEDULER = "scheduler" as const;
15
+ const UPLOAD = "upload" as const;
16
+ const FEATURE_FLAGS = "featureFlags" as const;
16
17
 
17
- export type SERVICE_NAME =
18
+ type SERVICE_NAME =
18
19
  | typeof ANALYTICS
19
20
  | typeof MESSAGING
20
21
  | typeof PAYMENTS
@@ -23,53 +24,32 @@ export type SERVICE_NAME =
23
24
  | typeof UPLOAD
24
25
  | typeof FEATURE_FLAGS;
25
26
 
26
- export type TokenFunction = (
27
- serviceName: SERVICE_NAME,
28
- ) => Promise<string> | string;
29
-
30
- export type M2MParams = {
31
- getOrganizationTokenParams?: GetOrganizationTokenParams;
32
- getAccessTokenParams?: GetAccessTokenParams;
33
- };
34
-
35
- export type M2MTokenFnConfig = {
36
- services: {
37
- [key in SERVICE_NAME]?: M2MParams;
38
- };
39
- };
27
+ interface AnalyticsConfig extends AnalyticsOptions {}
40
28
 
41
- export type SDKClientParams = {
42
- baseUrl?: string;
43
- };
29
+ interface ServiceBaseConfig {
30
+ baseUrl: string;
31
+ }
44
32
 
45
- export type BaseApiClientParams = SDKClientParams & {
46
- getTokenFn?: TokenFunction;
47
- };
33
+ interface MessagingConfig extends ServiceBaseConfig {}
34
+ interface PaymentsConfig extends ServiceBaseConfig {}
35
+ interface ProfileConfig extends ServiceBaseConfig {}
36
+ interface SchedulerConfig extends ServiceBaseConfig {}
37
+ interface UploadConfig extends ServiceBaseConfig {}
38
+ interface FeatureFlagsConfig extends ServiceBaseConfig {}
48
39
 
49
- type ServiceClients = {
50
- analytics: typeof Analytics;
51
- messaging: typeof Messaging;
52
- payments: typeof Payments;
53
- profile: typeof Profile;
54
- scheduler: typeof Scheduler;
55
- upload: typeof Upload;
56
- featureFlags: typeof FeatureFlags;
57
- };
40
+ interface Services {
41
+ analytics?: AnalyticsConfig;
42
+ messaging?: MessagingConfig;
43
+ payments?: PaymentsConfig;
44
+ profile?: ProfileConfig;
45
+ scheduler?: SchedulerConfig;
46
+ upload?: UploadConfig;
47
+ featureFlags?: FeatureFlagsConfig;
48
+ }
58
49
 
59
- export type BuildingBlocksSDK = {
60
- [key in keyof ServiceClients]: InstanceType<ServiceClients[key]>;
61
- };
50
+ type TokenFunction = (serviceName: SERVICE_NAME) => Promise<string>;
62
51
 
63
- export type BuildingBlockSDKParams = {
64
- services: {
65
- [key in keyof ServiceClients]?: ConstructorParameters<
66
- ServiceClients[key]
67
- >[0];
68
- };
69
- getTokenFn?: TokenFunction;
70
- };
71
-
72
- export interface TokenResponseBody {
52
+ interface TokenResponseBody {
73
53
  access_token: string;
74
54
  expires_in: number;
75
55
  token_type: string;
@@ -83,10 +63,74 @@ interface GetTokenBaseParams {
83
63
  scopes?: string[];
84
64
  }
85
65
 
86
- export interface GetAccessTokenParams extends GetTokenBaseParams {
66
+ interface GetAccessTokenParams extends GetTokenBaseParams {
87
67
  resource: string;
88
68
  }
89
69
 
90
- export interface GetOrganizationTokenParams extends GetTokenBaseParams {
70
+ interface GetOrganizationTokenParams extends GetTokenBaseParams {
91
71
  organizationId: string;
92
72
  }
73
+
74
+ type M2MParams = {
75
+ getOrganizationTokenParams?: GetOrganizationTokenParams;
76
+ getAccessTokenParams?: GetAccessTokenParams;
77
+ };
78
+
79
+ type M2MTokenFnConfig = {
80
+ services: {
81
+ [key in SERVICE_NAME]?: M2MParams;
82
+ };
83
+ };
84
+
85
+ interface BuildingBlockSDKParams {
86
+ services: Services;
87
+ getTokenFn: TokenFunction;
88
+ }
89
+
90
+ interface BuildingBlocksSDK {
91
+ analytics: Analytics;
92
+ messaging: Messaging;
93
+ payments: Payments;
94
+ profile: Profile;
95
+ scheduler: Scheduler;
96
+ upload: Upload;
97
+ featureFlags: FeatureFlags;
98
+ }
99
+
100
+ export {
101
+ ANALYTICS,
102
+ MESSAGING,
103
+ PAYMENTS,
104
+ PROFILE,
105
+ SCHEDULER,
106
+ UPLOAD,
107
+ FEATURE_FLAGS,
108
+ };
109
+
110
+ export type {
111
+ BuildingBlockSDKParams,
112
+ BuildingBlocksSDK,
113
+ Analytics,
114
+ AnalyticsConfig,
115
+ Messaging,
116
+ MessagingConfig,
117
+ Payments,
118
+ PaymentsConfig,
119
+ Profile,
120
+ ProfileConfig,
121
+ Scheduler,
122
+ SchedulerConfig,
123
+ Upload,
124
+ UploadConfig,
125
+ FeatureFlags,
126
+ FeatureFlagsConfig,
127
+ Services,
128
+ TokenFunction,
129
+ SERVICE_NAME,
130
+ TokenResponseBody,
131
+ GetTokenBaseParams,
132
+ GetAccessTokenParams,
133
+ GetOrganizationTokenParams,
134
+ M2MParams,
135
+ M2MTokenFnConfig,
136
+ };