@brostark/solutions-client 1.1.8 → 1.1.10

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.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { generateLiveAPI } from "./api/v1/live";
2
+ import { generateSearchAPI } from "./api/v1/search";
3
+ import { generateVideoAPI } from "./api/v1/video";
1
4
  import { ApiVersion } from "./constant";
2
5
  /**
3
6
  * Options for creating the client
@@ -8,31 +11,16 @@ export interface CreateClientOptions {
8
11
  /** The API version (default: DEFAULT_API_VERSION) */
9
12
  version?: ApiVersion;
10
13
  }
14
+ export interface BrostarkSolutionsClient {
15
+ live: ReturnType<typeof generateLiveAPI>;
16
+ video: ReturnType<typeof generateVideoAPI>;
17
+ search: ReturnType<typeof generateSearchAPI>;
18
+ }
11
19
  /**
12
20
  * Creates an instance of the API client
13
21
  * @param apiKey - The API key for authentication
14
22
  * @param options - The configuration options for the client
15
23
  * @returns An object containing the different APIs available
16
24
  */
17
- export declare function createClient(apiKey: string, options?: CreateClientOptions): {
18
- live: {
19
- createLive: () => Promise<any>;
20
- getActiveLive: () => Promise<any>;
21
- };
22
- video: {
23
- list: (options?: import("./lib/types").ListOptions) => Promise<any>;
24
- upload: (file: File) => Promise<any>;
25
- get: (id: string) => Promise<any>;
26
- stream: (filename: string) => Promise<string>;
27
- remove: (id: string) => Promise<any>;
28
- };
29
- search: {
30
- listCollections: (options?: import("./lib/types").ListOptions) => Promise<any>;
31
- createCollection: (params: import("./lib/types").BrostarkSolutions.Search.CreateCollectionParams) => Promise<any>;
32
- deleteCollection: (name: string) => Promise<any>;
33
- upsertDocuments: (collectionName: string, documents: Record<string, unknown>[]) => Promise<any>;
34
- deleteDocument: (collectionName: string, documentId: string) => Promise<any>;
35
- query: (collectionName: string, query: import("./lib/types").BrostarkSolutions.Search.SearchQuery) => Promise<import("./lib/types").BrostarkSolutions.Search.SearchResult>;
36
- };
37
- };
25
+ export declare function createClient(apiKey: string, options?: CreateClientOptions): BrostarkSolutionsClient;
38
26
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAyC,MAAM,YAAY,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;;;;;;;;;;;;;;;;;;;;EAa7E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAyC,MAAM,YAAY,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IACzC,KAAK,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC3C,MAAM,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,uBAAuB,CAavG"}
package/dist/helper.d.ts CHANGED
@@ -6,4 +6,11 @@
6
6
  * @returns The adjusted limit
7
7
  */
8
8
  export declare const setLimit: (limit: number, min: number, max: number) => number;
9
+ /**
10
+ * Builds URL with query string without relying on URL/URLSearchParams (React Native compatible)
11
+ * @param baseUrl - The base URL
12
+ * @param params - The parameters to add to the URL
13
+ * @returns The URL with the query string
14
+ */
15
+ export declare const buildUrlWithParams: (baseUrl: string, params?: Record<string, unknown>) => string;
9
16
  //# sourceMappingURL=helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,WAE/D,CAAA"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,WAE/D,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAiBtF,CAAA"}
package/dist/helper.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setLimit = void 0;
3
+ exports.buildUrlWithParams = exports.setLimit = void 0;
4
4
  /**
5
5
  * Sets a limit between a minimum and maximum value
6
6
  * @param limit - The desired limit
@@ -12,3 +12,24 @@ const setLimit = (limit, min, max) => {
12
12
  return Math.min(Math.max(limit, min), max);
13
13
  };
14
14
  exports.setLimit = setLimit;
15
+ /**
16
+ * Builds URL with query string without relying on URL/URLSearchParams (React Native compatible)
17
+ * @param baseUrl - The base URL
18
+ * @param params - The parameters to add to the URL
19
+ * @returns The URL with the query string
20
+ */
21
+ const buildUrlWithParams = (baseUrl, params) => {
22
+ if (!params || Object.keys(params).length === 0) {
23
+ return baseUrl;
24
+ }
25
+ const search = Object.entries(params)
26
+ .filter(([, value]) => value !== undefined && value !== null)
27
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
28
+ .join("&");
29
+ if (!search) {
30
+ return baseUrl;
31
+ }
32
+ const separator = baseUrl.includes("?") ? "&" : "?";
33
+ return `${baseUrl}${separator}${search}`;
34
+ };
35
+ exports.buildUrlWithParams = buildUrlWithParams;
@@ -1 +1 @@
1
- {"version":3,"file":"httpRequest.d.ts","sourceRoot":"","sources":["../../src/lib/httpRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,cAAc,iBAkDxF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,WAAW,iBAOnF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,iBAI5D,CAAA;AAGD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,OAAO,iBAK5E,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,iBAI/D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,IAAI,iBAQ3E,CAAA"}
1
+ {"version":3,"file":"httpRequest.d.ts","sourceRoot":"","sources":["../../src/lib/httpRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAGF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,cAAc,iBA2CxF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,WAAW,iBAOnF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,iBAI5D,CAAA;AAGD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,OAAO,iBAK5E,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,iBAI/D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,IAAI,iBAQ3E,CAAA"}
@@ -12,14 +12,7 @@ const constant_1 = require("../constant");
12
12
  */
13
13
  const httpRequest = async (apiUrl, apiKey, options) => {
14
14
  const { headers, params, data, ...rest } = options;
15
- const url = new URL(apiUrl);
16
- if (params) {
17
- for (const [key, value] of Object.entries(params)) {
18
- if (value !== undefined && value !== null) {
19
- url.searchParams.set(key, String(value));
20
- }
21
- }
22
- }
15
+ const url = (0, helper_1.buildUrlWithParams)(apiUrl, params);
23
16
  const config = {
24
17
  mode: "cors",
25
18
  method: "GET",
@@ -42,7 +35,7 @@ const httpRequest = async (apiUrl, apiKey, options) => {
42
35
  }
43
36
  }
44
37
  config.headers = finalHeaders;
45
- const response = await fetch(url.toString(), config);
38
+ const response = await fetch(url, config);
46
39
  if (!response.ok) {
47
40
  const errorData = await response.json().catch(() => ({ message: response.statusText }));
48
41
  throw new Error(errorData || "HTTP request failed");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brostark/solutions-client",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
package/src/client.ts CHANGED
@@ -13,13 +13,19 @@ export interface CreateClientOptions {
13
13
  version?: ApiVersion;
14
14
  }
15
15
 
16
+ export interface BrostarkSolutionsClient {
17
+ live: ReturnType<typeof generateLiveAPI>;
18
+ video: ReturnType<typeof generateVideoAPI>;
19
+ search: ReturnType<typeof generateSearchAPI>;
20
+ }
21
+
16
22
  /**
17
23
  * Creates an instance of the API client
18
24
  * @param apiKey - The API key for authentication
19
25
  * @param options - The configuration options for the client
20
26
  * @returns An object containing the different APIs available
21
27
  */
22
- export function createClient(apiKey: string, options: CreateClientOptions = {}) {
28
+ export function createClient(apiKey: string, options: CreateClientOptions = {}): BrostarkSolutionsClient {
23
29
  const {
24
30
  host = DEFAULT_API_HOST,
25
31
  version = DEFAULT_API_VERSION,
package/src/helper.ts CHANGED
@@ -8,3 +8,29 @@
8
8
  export const setLimit = (limit: number, min: number, max: number) => {
9
9
  return Math.min(Math.max(limit, min), max);
10
10
  }
11
+
12
+
13
+ /**
14
+ * Builds URL with query string without relying on URL/URLSearchParams (React Native compatible)
15
+ * @param baseUrl - The base URL
16
+ * @param params - The parameters to add to the URL
17
+ * @returns The URL with the query string
18
+ */
19
+ export const buildUrlWithParams = (baseUrl: string, params?: Record<string, unknown>): string => {
20
+ if (!params || Object.keys(params).length === 0) {
21
+ return baseUrl;
22
+ }
23
+
24
+ const search = Object.entries(params)
25
+ .filter(([, value]) => value !== undefined && value !== null)
26
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
27
+ .join("&");
28
+
29
+ if (!search) {
30
+ return baseUrl;
31
+ }
32
+
33
+ const separator = baseUrl.includes("?") ? "&" : "?";
34
+
35
+ return `${baseUrl}${separator}${search}`;
36
+ }
@@ -1,5 +1,5 @@
1
1
  import { ListOptions } from "./types";
2
- import { setLimit } from "../helper";
2
+ import { buildUrlWithParams, setLimit } from "../helper";
3
3
  import { MAX_LIMIT } from "../constant";
4
4
 
5
5
  type RequestOptions = Omit<RequestInit, "body"> & {
@@ -7,6 +7,7 @@ type RequestOptions = Omit<RequestInit, "body"> & {
7
7
  data?: unknown;
8
8
  };
9
9
 
10
+
10
11
  /**
11
12
  * Base function to make an HTTP request
12
13
  * @param apiUrl - The API URL
@@ -17,14 +18,7 @@ type RequestOptions = Omit<RequestInit, "body"> & {
17
18
  export const httpRequest = async (apiUrl: string, apiKey: string, options: RequestOptions) => {
18
19
  const { headers, params, data, ...rest } = options;
19
20
 
20
- const url = new URL(apiUrl);
21
- if (params) {
22
- for (const [key, value] of Object.entries(params)) {
23
- if (value !== undefined && value !== null) {
24
- url.searchParams.set(key, String(value));
25
- }
26
- }
27
- }
21
+ const url = buildUrlWithParams(apiUrl, params);
28
22
 
29
23
  const config: RequestInit = {
30
24
  mode: "cors",
@@ -51,7 +45,7 @@ export const httpRequest = async (apiUrl: string, apiKey: string, options: Reque
51
45
 
52
46
  config.headers = finalHeaders;
53
47
 
54
- const response = await fetch(url.toString(), config);
48
+ const response = await fetch(url, config);
55
49
 
56
50
  if (!response.ok) {
57
51
  const errorData = await response.json().catch(() => ({ message: response.statusText }));