@b10cks/client 0.9.6 → 0.10.0

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/index.d.ts CHANGED
@@ -2,19 +2,30 @@ export declare class ApiClient {
2
2
  private readonly baseUrl;
3
3
  private readonly token;
4
4
  private readonly vid;
5
- private rv;
6
5
  private readonly fetchClient;
6
+ private readonly getRvFn?;
7
+ private readonly setRvFn?;
7
8
  constructor(options: B10cksApiClientOptions, url: URL);
8
9
  get<T>(endpoint: Endpoint, params?: Omit<IBBaseQueryParams, 'token'>): Promise<T>;
9
10
  getAll<T>(endpoint: Endpoint, params?: Omit<IBBaseQueryParams, 'token'>): Promise<T[]>;
11
+ setRv(value: string | number): void;
12
+ getRv(): string | number;
10
13
  private buildUrl;
11
14
  }
12
15
 
13
16
  export declare interface B10cksApiClientOptions {
14
17
  baseUrl: string;
15
18
  token: string;
19
+ rv?: string | number;
16
20
  version?: 'draft' | 'published';
17
21
  fetchClient: FetchClient;
22
+ getRv?: () => string | number;
23
+ setRv?: (value: string | number) => void;
24
+ }
25
+
26
+ export declare interface B10cksApiClientRvOptions {
27
+ getRv?: () => string | number;
28
+ setRv?: (value: string | number) => void;
18
29
  }
19
30
 
20
31
  export declare type Endpoint = 'blocks' | 'contents' | `contents/${string}` | `datasources/${string}/entries` | 'datasources' | 'spaces/me';
@@ -39,6 +50,7 @@ export declare interface IBBlock {
39
50
 
40
51
  declare interface IBCollectionResponse<T> {
41
52
  data: T[];
53
+ rv?: string | number;
42
54
  links: {
43
55
  first: string | null;
44
56
  last: string | null;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));class c{baseUrl;token;vid;rv=0;fetchClient;constructor(e,s){this.baseUrl=e.baseUrl.endsWith("/")?e.baseUrl.slice(0,-1):e.baseUrl,this.token=e.token,this.fetchClient=e.fetchClient,this.vid=s.searchParams.get("b10cks_vid")||e.version||"published",this.rv=s.searchParams.get("b10cks_rv")??this.rv}async get(e,s={}){const t=this.buildUrl(e,{vid:this.vid,...s,rv:this.rv,token:this.token}),r=await this.fetchClient(t);return r.rv&&(this.rv=r.rv),r}async getAll(e,s={}){const t=await this.get(e,{...s,page:1});if(!t.meta||t.meta.last_page<=1)return"data"in t?t.data:t;const r=Array.from({length:t.meta.last_page},(i,l)=>this.get(e,{...s,page:l+1}));return(await Promise.all(r)).flatMap(i=>i.data)}buildUrl(e,s){const t=new URL(`${this.baseUrl}/v1/${e}`);return Object.entries(s).forEach(([r,a])=>{a!=null&&t.searchParams.append(r,String(a))}),t.toString()}}exports.ApiClient=c;exports.types=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));let a=0;class v{baseUrl;token;vid;fetchClient;getRvFn;setRvFn;constructor(e,s){this.baseUrl=e.baseUrl.endsWith("/")?e.baseUrl.slice(0,-1):e.baseUrl,this.token=e.token,this.fetchClient=e.fetchClient,this.getRvFn=e.getRv,this.setRvFn=e.setRv,this.vid=s.searchParams.get("b10cks_vid")||e.version||"published",this.setRv(s.searchParams.get("b10cks_rv")||e.rv||a)}async get(e,s={}){const t=this.buildUrl(e,{vid:this.vid,...s,rv:this.getRv(),token:this.token}),r=await this.fetchClient(t);return r.rv&&this.setRv(r.rv),r}async getAll(e,s={}){const t=await this.get(e,{...s,page:1});if(t.rv&&this.setRv(t.rv),!t.meta||t.meta.last_page<=1)return"data"in t?t.data:t;const r=Array.from({length:t.meta.last_page},(n,l)=>this.get(e,{...s,page:l+1}));return(await Promise.all(r)).flatMap(n=>n.data)}setRv(e){this.setRvFn?this.setRvFn(e):a=e}getRv(){return this.getRvFn?this.getRvFn():a}buildUrl(e,s){const t=new URL(`${this.baseUrl}/v1/${e}`);return Object.entries(s).forEach(([r,i])=>{i!=null&&t.searchParams.append(r,String(i))}),t.toString()}}exports.ApiClient=v;exports.types=h;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { B10cksApiClientOptions, IBBaseQueryParams, IBCollectionResponse, IBMeta, IBResponse, } from './types'\n\nexport type FetchClient = typeof fetch\nexport type Endpoint = 'blocks' | 'contents' | `contents/${string}` | `datasources/${string}/entries` | 'datasources' | 'spaces/me'\n\nexport * as types from './types'\nexport type { IBBlock, IBResponse, IBContent, B10cksApiClientOptions } from './types'\n\nexport class ApiClient {\n private readonly baseUrl: string\n private readonly token: string\n private readonly vid: string | null\n private rv: string | number = 0\n private readonly fetchClient: FetchClient\n\n constructor(options: B10cksApiClientOptions, url: URL) {\n this.baseUrl = options.baseUrl.endsWith('/') ? options.baseUrl.slice(0, -1) : options.baseUrl\n this.token = options.token\n this.fetchClient = options.fetchClient\n\n this.vid = url.searchParams.get('b10cks_vid') || options.version || 'published'\n this.rv = url.searchParams.get('b10cks_rv') ?? this.rv\n }\n\n async get<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T> {\n const url = this.buildUrl(endpoint, {\n vid: this.vid,\n ...params,\n rv: this.rv,\n token: this.token\n })\n\n const response = await this.fetchClient(url) as unknown as IBResponse<T>\n if (response.rv) {\n this.rv = response.rv\n }\n\n return response as T\n }\n\n async getAll<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T[]> {\n const response = await this.get<IBCollectionResponse<T> & { meta?: IBMeta }>(\n endpoint,\n { ...params, page: 1 }\n )\n\n if (!response.meta || response.meta.last_page <= 1) {\n return 'data' in response ? response.data : (response as unknown as T[])\n }\n\n const pageRequests = Array.from(\n { length: response.meta.last_page },\n (_, i) => this.get<IBCollectionResponse<T>>(endpoint, { ...params, page: i + 1 })\n )\n\n const allResponses = await Promise.all(pageRequests)\n\n return allResponses.flatMap(r => r.data)\n }\n\n private buildUrl(endpoint: string, params: Record<string, unknown>): string {\n const url = new URL(`${this.baseUrl}/v1/${endpoint}`)\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n })\n\n return url.toString()\n }\n}"],"names":["ApiClient","options","url","endpoint","params","response","pageRequests","_","i","r","key","value"],"mappings":"mLAQO,MAAMA,CAAU,CACJ,QACA,MACA,IACT,GAAsB,EACb,YAEjB,YAAYC,EAAiCC,EAAU,CACrD,KAAK,QAAUD,EAAQ,QAAQ,SAAS,GAAG,EAAIA,EAAQ,QAAQ,MAAM,EAAG,EAAE,EAAIA,EAAQ,QACtF,KAAK,MAAQA,EAAQ,MACrB,KAAK,YAAcA,EAAQ,YAE3B,KAAK,IAAMC,EAAI,aAAa,IAAI,YAAY,GAAKD,EAAQ,SAAW,YACpE,KAAK,GAAKC,EAAI,aAAa,IAAI,WAAW,GAAK,KAAK,EACtD,CAEA,MAAM,IAAOC,EAAoBC,EAA2C,GAAgB,CAC1F,MAAMF,EAAM,KAAK,SAASC,EAAU,CAClC,IAAK,KAAK,IACV,GAAGC,EACH,GAAI,KAAK,GACT,MAAO,KAAK,KAAA,CACb,EAEKC,EAAW,MAAM,KAAK,YAAYH,CAAG,EAC3C,OAAIG,EAAS,KACX,KAAK,GAAKA,EAAS,IAGdA,CACT,CAEA,MAAM,OAAUF,EAAoBC,EAA2C,GAAkB,CAC/F,MAAMC,EAAW,MAAM,KAAK,IAC1BF,EACA,CAAE,GAAGC,EAAQ,KAAM,CAAA,CAAE,EAGvB,GAAI,CAACC,EAAS,MAAQA,EAAS,KAAK,WAAa,EAC/C,MAAO,SAAUA,EAAWA,EAAS,KAAQA,EAG/C,MAAMC,EAAe,MAAM,KACzB,CAAE,OAAQD,EAAS,KAAK,SAAA,EACxB,CAACE,EAAGC,IAAM,KAAK,IAA6BL,EAAU,CAAE,GAAGC,EAAQ,KAAMI,EAAI,CAAA,CAAG,CAAA,EAKlF,OAFqB,MAAM,QAAQ,IAAIF,CAAY,GAE/B,QAAQG,GAAKA,EAAE,IAAI,CACzC,CAEQ,SAASN,EAAkBC,EAAyC,CAC1E,MAAMF,EAAM,IAAI,IAAI,GAAG,KAAK,OAAO,OAAOC,CAAQ,EAAE,EAEpD,cAAO,QAAQC,CAAM,EAAE,QAAQ,CAAC,CAACM,EAAKC,CAAK,IAAM,CACpBA,GAAU,MACnCT,EAAI,aAAa,OAAOQ,EAAK,OAAOC,CAAK,CAAC,CAE9C,CAAC,EAEMT,EAAI,SAAA,CACb,CACF"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { B10cksApiClientOptions, IBBaseQueryParams, IBCollectionResponse, IBMeta, IBResponse, } from './types'\n\nexport type FetchClient = typeof fetch\nexport type Endpoint = 'blocks' | 'contents' | `contents/${string}` | `datasources/${string}/entries` | 'datasources' | 'spaces/me'\n\nexport interface B10cksApiClientRvOptions {\n getRv?: () => string | number\n setRv?: (value: string | number) => void\n}\n\nexport * as types from './types'\nexport type { IBBlock, IBResponse, IBContent, B10cksApiClientOptions } from './types'\nlet rv: string | number = 0\n\nexport class ApiClient {\n private readonly baseUrl: string\n private readonly token: string\n private readonly vid: string | null\n private readonly fetchClient: FetchClient\n private readonly getRvFn?: () => string | number\n private readonly setRvFn?: (value: string | number) => void\n\n constructor(options: B10cksApiClientOptions, url: URL) {\n this.baseUrl = options.baseUrl.endsWith('/') ? options.baseUrl.slice(0, -1) : options.baseUrl\n this.token = options.token\n this.fetchClient = options.fetchClient\n this.getRvFn = options.getRv\n this.setRvFn = options.setRv\n\n this.vid = url.searchParams.get('b10cks_vid') || options.version || 'published'\n this.setRv(url.searchParams.get('b10cks_rv') || options.rv || rv)\n }\n\n async get<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T> {\n const url = this.buildUrl(endpoint, {\n vid: this.vid,\n ...params,\n rv: this.getRv(),\n token: this.token\n })\n\n const response = await this.fetchClient(url) as unknown as IBResponse<T>\n if (response.rv) {\n this.setRv(response.rv)\n }\n\n return response as T\n }\n\n async getAll<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T[]> {\n const response = await this.get<IBCollectionResponse<T> & { meta?: IBMeta }>(\n endpoint,\n { ...params, page: 1 }\n )\n if (response.rv) {\n this.setRv(response.rv)\n }\n\n if (!response.meta || response.meta.last_page <= 1) {\n return 'data' in response ? response.data : (response as unknown as T[])\n }\n\n const pageRequests = Array.from(\n { length: response.meta.last_page },\n (_, i) => this.get<IBCollectionResponse<T>>(endpoint, { ...params, page: i + 1 })\n )\n\n const allResponses = await Promise.all(pageRequests)\n\n return allResponses.flatMap(r => r.data)\n }\n\n setRv(value: string | number) {\n if (this.setRvFn) {\n this.setRvFn(value)\n } else {\n rv = value\n }\n }\n\n getRv() {\n if (this.getRvFn) {\n return this.getRvFn()\n }\n return rv\n }\n\n private buildUrl(endpoint: string, params: Record<string, unknown>): string {\n const url = new URL(`${this.baseUrl}/v1/${endpoint}`)\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n })\n\n return url.toString()\n }\n}"],"names":["rv","ApiClient","options","url","endpoint","params","response","pageRequests","_","i","r","value","key"],"mappings":"mLAYA,IAAIA,EAAsB,EAEnB,MAAMC,CAAU,CACJ,QACA,MACA,IACA,YACA,QACA,QAEjB,YAAYC,EAAiCC,EAAU,CACrD,KAAK,QAAUD,EAAQ,QAAQ,SAAS,GAAG,EAAIA,EAAQ,QAAQ,MAAM,EAAG,EAAE,EAAIA,EAAQ,QACtF,KAAK,MAAQA,EAAQ,MACrB,KAAK,YAAcA,EAAQ,YAC3B,KAAK,QAAUA,EAAQ,MACvB,KAAK,QAAUA,EAAQ,MAEvB,KAAK,IAAMC,EAAI,aAAa,IAAI,YAAY,GAAKD,EAAQ,SAAW,YACpE,KAAK,MAAMC,EAAI,aAAa,IAAI,WAAW,GAAKD,EAAQ,IAAMF,CAAE,CAClE,CAEA,MAAM,IAAOI,EAAoBC,EAA2C,GAAgB,CAC1F,MAAMF,EAAM,KAAK,SAASC,EAAU,CAClC,IAAK,KAAK,IACV,GAAGC,EACH,GAAI,KAAK,MAAA,EACT,MAAO,KAAK,KAAA,CACb,EAEKC,EAAW,MAAM,KAAK,YAAYH,CAAG,EAC3C,OAAIG,EAAS,IACX,KAAK,MAAMA,EAAS,EAAE,EAGjBA,CACT,CAEA,MAAM,OAAUF,EAAoBC,EAA2C,GAAkB,CAC/F,MAAMC,EAAW,MAAM,KAAK,IAC1BF,EACA,CAAE,GAAGC,EAAQ,KAAM,CAAA,CAAE,EAMvB,GAJIC,EAAS,IACX,KAAK,MAAMA,EAAS,EAAE,EAGpB,CAACA,EAAS,MAAQA,EAAS,KAAK,WAAa,EAC/C,MAAO,SAAUA,EAAWA,EAAS,KAAQA,EAG/C,MAAMC,EAAe,MAAM,KACzB,CAAE,OAAQD,EAAS,KAAK,SAAA,EACxB,CAACE,EAAGC,IAAM,KAAK,IAA6BL,EAAU,CAAE,GAAGC,EAAQ,KAAMI,EAAI,CAAA,CAAG,CAAA,EAKlF,OAFqB,MAAM,QAAQ,IAAIF,CAAY,GAE/B,QAAQG,GAAKA,EAAE,IAAI,CACzC,CAEA,MAAMC,EAAwB,CACxB,KAAK,QACP,KAAK,QAAQA,CAAK,EAElBX,EAAKW,CAET,CAEA,OAAQ,CACN,OAAI,KAAK,QACA,KAAK,QAAA,EAEPX,CACT,CAEQ,SAASI,EAAkBC,EAAyC,CAC1E,MAAMF,EAAM,IAAI,IAAI,GAAG,KAAK,OAAO,OAAOC,CAAQ,EAAE,EAEpD,cAAO,QAAQC,CAAM,EAAE,QAAQ,CAAC,CAACO,EAAKD,CAAK,IAAM,CACpBA,GAAU,MACnCR,EAAI,aAAa,OAAOS,EAAK,OAAOD,CAAK,CAAC,CAE9C,CAAC,EAEMR,EAAI,SAAA,CACb,CACF"}
package/dist/index.mjs CHANGED
@@ -1,46 +1,54 @@
1
- const c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1
+ const v = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2
2
  __proto__: null
3
3
  }, Symbol.toStringTag, { value: "Module" }));
4
- class h {
4
+ let a = 0;
5
+ class c {
5
6
  baseUrl;
6
7
  token;
7
8
  vid;
8
- rv = 0;
9
9
  fetchClient;
10
- constructor(e, s) {
11
- this.baseUrl = e.baseUrl.endsWith("/") ? e.baseUrl.slice(0, -1) : e.baseUrl, this.token = e.token, this.fetchClient = e.fetchClient, this.vid = s.searchParams.get("b10cks_vid") || e.version || "published", this.rv = s.searchParams.get("b10cks_rv") ?? this.rv;
10
+ getRvFn;
11
+ setRvFn;
12
+ constructor(t, s) {
13
+ this.baseUrl = t.baseUrl.endsWith("/") ? t.baseUrl.slice(0, -1) : t.baseUrl, this.token = t.token, this.fetchClient = t.fetchClient, this.getRvFn = t.getRv, this.setRvFn = t.setRv, this.vid = s.searchParams.get("b10cks_vid") || t.version || "published", this.setRv(s.searchParams.get("b10cks_rv") || t.rv || a);
12
14
  }
13
- async get(e, s = {}) {
14
- const t = this.buildUrl(e, {
15
+ async get(t, s = {}) {
16
+ const e = this.buildUrl(t, {
15
17
  vid: this.vid,
16
18
  ...s,
17
- rv: this.rv,
19
+ rv: this.getRv(),
18
20
  token: this.token
19
- }), r = await this.fetchClient(t);
20
- return r.rv && (this.rv = r.rv), r;
21
+ }), r = await this.fetchClient(e);
22
+ return r.rv && this.setRv(r.rv), r;
21
23
  }
22
- async getAll(e, s = {}) {
23
- const t = await this.get(
24
- e,
24
+ async getAll(t, s = {}) {
25
+ const e = await this.get(
26
+ t,
25
27
  { ...s, page: 1 }
26
28
  );
27
- if (!t.meta || t.meta.last_page <= 1)
28
- return "data" in t ? t.data : t;
29
+ if (e.rv && this.setRv(e.rv), !e.meta || e.meta.last_page <= 1)
30
+ return "data" in e ? e.data : e;
29
31
  const r = Array.from(
30
- { length: t.meta.last_page },
31
- (i, l) => this.get(e, { ...s, page: l + 1 })
32
+ { length: e.meta.last_page },
33
+ (n, l) => this.get(t, { ...s, page: l + 1 })
32
34
  );
33
- return (await Promise.all(r)).flatMap((i) => i.data);
35
+ return (await Promise.all(r)).flatMap((n) => n.data);
34
36
  }
35
- buildUrl(e, s) {
36
- const t = new URL(`${this.baseUrl}/v1/${e}`);
37
- return Object.entries(s).forEach(([r, a]) => {
38
- a != null && t.searchParams.append(r, String(a));
39
- }), t.toString();
37
+ setRv(t) {
38
+ this.setRvFn ? this.setRvFn(t) : a = t;
39
+ }
40
+ getRv() {
41
+ return this.getRvFn ? this.getRvFn() : a;
42
+ }
43
+ buildUrl(t, s) {
44
+ const e = new URL(`${this.baseUrl}/v1/${t}`);
45
+ return Object.entries(s).forEach(([r, i]) => {
46
+ i != null && e.searchParams.append(r, String(i));
47
+ }), e.toString();
40
48
  }
41
49
  }
42
50
  export {
43
- h as ApiClient,
44
- c as types
51
+ c as ApiClient,
52
+ v as types
45
53
  };
46
54
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { B10cksApiClientOptions, IBBaseQueryParams, IBCollectionResponse, IBMeta, IBResponse, } from './types'\n\nexport type FetchClient = typeof fetch\nexport type Endpoint = 'blocks' | 'contents' | `contents/${string}` | `datasources/${string}/entries` | 'datasources' | 'spaces/me'\n\nexport * as types from './types'\nexport type { IBBlock, IBResponse, IBContent, B10cksApiClientOptions } from './types'\n\nexport class ApiClient {\n private readonly baseUrl: string\n private readonly token: string\n private readonly vid: string | null\n private rv: string | number = 0\n private readonly fetchClient: FetchClient\n\n constructor(options: B10cksApiClientOptions, url: URL) {\n this.baseUrl = options.baseUrl.endsWith('/') ? options.baseUrl.slice(0, -1) : options.baseUrl\n this.token = options.token\n this.fetchClient = options.fetchClient\n\n this.vid = url.searchParams.get('b10cks_vid') || options.version || 'published'\n this.rv = url.searchParams.get('b10cks_rv') ?? this.rv\n }\n\n async get<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T> {\n const url = this.buildUrl(endpoint, {\n vid: this.vid,\n ...params,\n rv: this.rv,\n token: this.token\n })\n\n const response = await this.fetchClient(url) as unknown as IBResponse<T>\n if (response.rv) {\n this.rv = response.rv\n }\n\n return response as T\n }\n\n async getAll<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T[]> {\n const response = await this.get<IBCollectionResponse<T> & { meta?: IBMeta }>(\n endpoint,\n { ...params, page: 1 }\n )\n\n if (!response.meta || response.meta.last_page <= 1) {\n return 'data' in response ? response.data : (response as unknown as T[])\n }\n\n const pageRequests = Array.from(\n { length: response.meta.last_page },\n (_, i) => this.get<IBCollectionResponse<T>>(endpoint, { ...params, page: i + 1 })\n )\n\n const allResponses = await Promise.all(pageRequests)\n\n return allResponses.flatMap(r => r.data)\n }\n\n private buildUrl(endpoint: string, params: Record<string, unknown>): string {\n const url = new URL(`${this.baseUrl}/v1/${endpoint}`)\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n })\n\n return url.toString()\n }\n}"],"names":["ApiClient","options","url","endpoint","params","response","pageRequests","_","i","r","key","value"],"mappings":";;;AAQO,MAAMA,EAAU;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACT,KAAsB;AAAA,EACb;AAAA,EAEjB,YAAYC,GAAiCC,GAAU;AACrD,SAAK,UAAUD,EAAQ,QAAQ,SAAS,GAAG,IAAIA,EAAQ,QAAQ,MAAM,GAAG,EAAE,IAAIA,EAAQ,SACtF,KAAK,QAAQA,EAAQ,OACrB,KAAK,cAAcA,EAAQ,aAE3B,KAAK,MAAMC,EAAI,aAAa,IAAI,YAAY,KAAKD,EAAQ,WAAW,aACpE,KAAK,KAAKC,EAAI,aAAa,IAAI,WAAW,KAAK,KAAK;AAAA,EACtD;AAAA,EAEA,MAAM,IAAOC,GAAoBC,IAA2C,IAAgB;AAC1F,UAAMF,IAAM,KAAK,SAASC,GAAU;AAAA,MAClC,KAAK,KAAK;AAAA,MACV,GAAGC;AAAA,MACH,IAAI,KAAK;AAAA,MACT,OAAO,KAAK;AAAA,IAAA,CACb,GAEKC,IAAW,MAAM,KAAK,YAAYH,CAAG;AAC3C,WAAIG,EAAS,OACX,KAAK,KAAKA,EAAS,KAGdA;AAAA,EACT;AAAA,EAEA,MAAM,OAAUF,GAAoBC,IAA2C,IAAkB;AAC/F,UAAMC,IAAW,MAAM,KAAK;AAAA,MAC1BF;AAAA,MACA,EAAE,GAAGC,GAAQ,MAAM,EAAA;AAAA,IAAE;AAGvB,QAAI,CAACC,EAAS,QAAQA,EAAS,KAAK,aAAa;AAC/C,aAAO,UAAUA,IAAWA,EAAS,OAAQA;AAG/C,UAAMC,IAAe,MAAM;AAAA,MACzB,EAAE,QAAQD,EAAS,KAAK,UAAA;AAAA,MACxB,CAACE,GAAGC,MAAM,KAAK,IAA6BL,GAAU,EAAE,GAAGC,GAAQ,MAAMI,IAAI,EAAA,CAAG;AAAA,IAAA;AAKlF,YAFqB,MAAM,QAAQ,IAAIF,CAAY,GAE/B,QAAQ,CAAAG,MAAKA,EAAE,IAAI;AAAA,EACzC;AAAA,EAEQ,SAASN,GAAkBC,GAAyC;AAC1E,UAAMF,IAAM,IAAI,IAAI,GAAG,KAAK,OAAO,OAAOC,CAAQ,EAAE;AAEpD,kBAAO,QAAQC,CAAM,EAAE,QAAQ,CAAC,CAACM,GAAKC,CAAK,MAAM;AAC/C,MAA2BA,KAAU,QACnCT,EAAI,aAAa,OAAOQ,GAAK,OAAOC,CAAK,CAAC;AAAA,IAE9C,CAAC,GAEMT,EAAI,SAAA;AAAA,EACb;AACF;"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { B10cksApiClientOptions, IBBaseQueryParams, IBCollectionResponse, IBMeta, IBResponse, } from './types'\n\nexport type FetchClient = typeof fetch\nexport type Endpoint = 'blocks' | 'contents' | `contents/${string}` | `datasources/${string}/entries` | 'datasources' | 'spaces/me'\n\nexport interface B10cksApiClientRvOptions {\n getRv?: () => string | number\n setRv?: (value: string | number) => void\n}\n\nexport * as types from './types'\nexport type { IBBlock, IBResponse, IBContent, B10cksApiClientOptions } from './types'\nlet rv: string | number = 0\n\nexport class ApiClient {\n private readonly baseUrl: string\n private readonly token: string\n private readonly vid: string | null\n private readonly fetchClient: FetchClient\n private readonly getRvFn?: () => string | number\n private readonly setRvFn?: (value: string | number) => void\n\n constructor(options: B10cksApiClientOptions, url: URL) {\n this.baseUrl = options.baseUrl.endsWith('/') ? options.baseUrl.slice(0, -1) : options.baseUrl\n this.token = options.token\n this.fetchClient = options.fetchClient\n this.getRvFn = options.getRv\n this.setRvFn = options.setRv\n\n this.vid = url.searchParams.get('b10cks_vid') || options.version || 'published'\n this.setRv(url.searchParams.get('b10cks_rv') || options.rv || rv)\n }\n\n async get<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T> {\n const url = this.buildUrl(endpoint, {\n vid: this.vid,\n ...params,\n rv: this.getRv(),\n token: this.token\n })\n\n const response = await this.fetchClient(url) as unknown as IBResponse<T>\n if (response.rv) {\n this.setRv(response.rv)\n }\n\n return response as T\n }\n\n async getAll<T>(endpoint: Endpoint, params: Omit<IBBaseQueryParams, 'token'> = {}): Promise<T[]> {\n const response = await this.get<IBCollectionResponse<T> & { meta?: IBMeta }>(\n endpoint,\n { ...params, page: 1 }\n )\n if (response.rv) {\n this.setRv(response.rv)\n }\n\n if (!response.meta || response.meta.last_page <= 1) {\n return 'data' in response ? response.data : (response as unknown as T[])\n }\n\n const pageRequests = Array.from(\n { length: response.meta.last_page },\n (_, i) => this.get<IBCollectionResponse<T>>(endpoint, { ...params, page: i + 1 })\n )\n\n const allResponses = await Promise.all(pageRequests)\n\n return allResponses.flatMap(r => r.data)\n }\n\n setRv(value: string | number) {\n if (this.setRvFn) {\n this.setRvFn(value)\n } else {\n rv = value\n }\n }\n\n getRv() {\n if (this.getRvFn) {\n return this.getRvFn()\n }\n return rv\n }\n\n private buildUrl(endpoint: string, params: Record<string, unknown>): string {\n const url = new URL(`${this.baseUrl}/v1/${endpoint}`)\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value))\n }\n })\n\n return url.toString()\n }\n}"],"names":["rv","ApiClient","options","url","endpoint","params","response","pageRequests","_","i","r","value","key"],"mappings":";;;AAYA,IAAIA,IAAsB;AAEnB,MAAMC,EAAU;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAYC,GAAiCC,GAAU;AACrD,SAAK,UAAUD,EAAQ,QAAQ,SAAS,GAAG,IAAIA,EAAQ,QAAQ,MAAM,GAAG,EAAE,IAAIA,EAAQ,SACtF,KAAK,QAAQA,EAAQ,OACrB,KAAK,cAAcA,EAAQ,aAC3B,KAAK,UAAUA,EAAQ,OACvB,KAAK,UAAUA,EAAQ,OAEvB,KAAK,MAAMC,EAAI,aAAa,IAAI,YAAY,KAAKD,EAAQ,WAAW,aACpE,KAAK,MAAMC,EAAI,aAAa,IAAI,WAAW,KAAKD,EAAQ,MAAMF,CAAE;AAAA,EAClE;AAAA,EAEA,MAAM,IAAOI,GAAoBC,IAA2C,IAAgB;AAC1F,UAAMF,IAAM,KAAK,SAASC,GAAU;AAAA,MAClC,KAAK,KAAK;AAAA,MACV,GAAGC;AAAA,MACH,IAAI,KAAK,MAAA;AAAA,MACT,OAAO,KAAK;AAAA,IAAA,CACb,GAEKC,IAAW,MAAM,KAAK,YAAYH,CAAG;AAC3C,WAAIG,EAAS,MACX,KAAK,MAAMA,EAAS,EAAE,GAGjBA;AAAA,EACT;AAAA,EAEA,MAAM,OAAUF,GAAoBC,IAA2C,IAAkB;AAC/F,UAAMC,IAAW,MAAM,KAAK;AAAA,MAC1BF;AAAA,MACA,EAAE,GAAGC,GAAQ,MAAM,EAAA;AAAA,IAAE;AAMvB,QAJIC,EAAS,MACX,KAAK,MAAMA,EAAS,EAAE,GAGpB,CAACA,EAAS,QAAQA,EAAS,KAAK,aAAa;AAC/C,aAAO,UAAUA,IAAWA,EAAS,OAAQA;AAG/C,UAAMC,IAAe,MAAM;AAAA,MACzB,EAAE,QAAQD,EAAS,KAAK,UAAA;AAAA,MACxB,CAACE,GAAGC,MAAM,KAAK,IAA6BL,GAAU,EAAE,GAAGC,GAAQ,MAAMI,IAAI,EAAA,CAAG;AAAA,IAAA;AAKlF,YAFqB,MAAM,QAAQ,IAAIF,CAAY,GAE/B,QAAQ,CAAAG,MAAKA,EAAE,IAAI;AAAA,EACzC;AAAA,EAEA,MAAMC,GAAwB;AAC5B,IAAI,KAAK,UACP,KAAK,QAAQA,CAAK,IAElBX,IAAKW;AAAA,EAET;AAAA,EAEA,QAAQ;AACN,WAAI,KAAK,UACA,KAAK,QAAA,IAEPX;AAAA,EACT;AAAA,EAEQ,SAASI,GAAkBC,GAAyC;AAC1E,UAAMF,IAAM,IAAI,IAAI,GAAG,KAAK,OAAO,OAAOC,CAAQ,EAAE;AAEpD,kBAAO,QAAQC,CAAM,EAAE,QAAQ,CAAC,CAACO,GAAKD,CAAK,MAAM;AAC/C,MAA2BA,KAAU,QACnCR,EAAI,aAAa,OAAOS,GAAK,OAAOD,CAAK,CAAC;AAAA,IAE9C,CAAC,GAEMR,EAAI,SAAA;AAAA,EACb;AACF;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@b10cks/client",
3
3
  "license": "MIT",
4
- "version": "0.9.6",
4
+ "version": "0.10.0",
5
5
  "author": "Michael Wallner @ Coder's Cantina",
6
6
  "description": "Core b10cks API client",
7
7
  "type": "module",