@streamlayer/sdk-web-api 0.11.0 → 0.11.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamlayer/sdk-web-api",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "type": "module",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import { ReadableAtom } from 'nanostores';
2
2
  import { Transport } from '../transport';
3
3
  export { $user } from './user';
4
- export declare const $retrieveEventId: ($providerStreamId: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<string, any>;
5
- export declare const $streamSettings: (slStreamId: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>;
4
+ export declare const $retrieveEventId: ($providerStreamId: ReadableAtom<string | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<string, any>;
5
+ export declare const $streamSettings: (slStreamId: ReadableAtom<string | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings | undefined, any>;
@@ -10,7 +10,7 @@ export const $retrieveEventId = ($providerStreamId, transport)=>{
10
10
  });
11
11
  return transport.nanoquery.createFetcherStore(queryKey, {
12
12
  fetcher: async (_, __, id)=>{
13
- if (!id) {
13
+ if (!id || typeof id !== 'string') {
14
14
  return '';
15
15
  }
16
16
  const res = await client.retrieveEventId({
@@ -30,7 +30,7 @@ export const $streamSettings = (slStreamId, transport)=>{
30
30
  return transport.nanoquery.createFetcherStore(queryKey, {
31
31
  fetcher: async (_, __, id)=>{
32
32
  const res = await client.getStream({
33
- id
33
+ id: id
34
34
  });
35
35
  return res.data?.attributes;
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/event.ts"],"sourcesContent":["import { ReadableAtom } from 'nanostores'\nimport { Events } from '@streamlayer/sl-eslib/sports/events/events_connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nexport const $retrieveEventId = ($providerStreamId: ReadableAtom<string>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Events, {\n method: 'retrieveEventId',\n params: [$providerStreamId],\n })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async (_: string, __: string, id: string) => {\n if (!id) {\n return ''\n }\n\n const res = await client.retrieveEventId({\n id,\n })\n\n return (res.data?.id as unknown as string) || ''\n },\n })\n}\n\nexport const $streamSettings = (slStreamId: ReadableAtom<string>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getStream', params: [slStreamId] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async (_: string, __: string, id: string) => {\n const res = await client.getStream({\n id,\n })\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["Events","Client","$user","$retrieveEventId","$providerStreamId","transport","client","queryKey","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","_","__","id","res","retrieveEventId","data","$streamSettings","slStreamId","getStream","attributes"],"mappings":"AACA,SAASA,MAAM,QAAQ,qDAAoD;AAC3E,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,OAAO,MAAMC,mBAAmB,CAACC,mBAAyCC;IACxE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACR,QAAQ;QACjES,QAAQ;QACRC,QAAQ;YAACN;SAAkB;IAC7B;IAEA,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS,OAAOC,GAAWC,IAAYC;YACrC,IAAI,CAACA,IAAI;gBACP,OAAO;YACT;YAEA,MAAMC,MAAM,MAAMX,OAAOY,eAAe,CAAC;gBACvCF;YACF;YAEA,OAAO,CAACC,IAAIE,IAAI,EAAEH,EAAuB,KAAK;QAChD;IACF;AACF,EAAC;AAED,OAAO,MAAMI,kBAAkB,CAACC,YAAkChB;IAChE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QAAEQ,QAAQ;QAAaC,QAAQ;YAACW;SAAW;IAAC;IAE/G,OAAOhB,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS,OAAOC,GAAWC,IAAYC;YACrC,MAAMC,MAAM,MAAMX,OAAOgB,SAAS,CAAC;gBACjCN;YACF;YAEA,OAAOC,IAAIE,IAAI,EAAEI;QACnB;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/event.ts"],"sourcesContent":["import { ReadableAtom } from 'nanostores'\nimport { Events } from '@streamlayer/sl-eslib/sports/events/events_connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nexport const $retrieveEventId = ($providerStreamId: ReadableAtom<string | undefined>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Events, {\n method: 'retrieveEventId',\n params: [$providerStreamId],\n })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async (_, __, id) => {\n if (!id || typeof id !== 'string') {\n return ''\n }\n\n const res = await client.retrieveEventId({\n id,\n })\n\n return (res.data?.id as unknown as string) || ''\n },\n })\n}\n\nexport const $streamSettings = (slStreamId: ReadableAtom<string | undefined>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getStream', params: [slStreamId] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async (_, __, id) => {\n const res = await client.getStream({\n id: id as string, // we are sure that id is a string\n })\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["Events","Client","$user","$retrieveEventId","$providerStreamId","transport","client","queryKey","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","_","__","id","res","retrieveEventId","data","$streamSettings","slStreamId","getStream","attributes"],"mappings":"AACA,SAASA,MAAM,QAAQ,qDAAoD;AAC3E,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,OAAO,MAAMC,mBAAmB,CAACC,mBAAqDC;IACpF,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACR,QAAQ;QACjES,QAAQ;QACRC,QAAQ;YAACN;SAAkB;IAC7B;IAEA,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS,OAAOC,GAAGC,IAAIC;YACrB,IAAI,CAACA,MAAM,OAAOA,OAAO,UAAU;gBACjC,OAAO;YACT;YAEA,MAAMC,MAAM,MAAMX,OAAOY,eAAe,CAAC;gBACvCF;YACF;YAEA,OAAO,CAACC,IAAIE,IAAI,EAAEH,EAAuB,KAAK;QAChD;IACF;AACF,EAAC;AAED,OAAO,MAAMI,kBAAkB,CAACC,YAA8ChB;IAC5E,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QAAEQ,QAAQ;QAAaC,QAAQ;YAACW;SAAW;IAAC;IAE/G,OAAOhB,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS,OAAOC,GAAGC,IAAIC;YACrB,MAAMC,MAAM,MAAMX,OAAOgB,SAAS,CAAC;gBACjCN,IAAIA;YACN;YAEA,OAAOC,IAAIE,IAAI,EAAEI;QACnB;IACF;AACF,EAAC"}
@@ -1,21 +1,21 @@
1
1
  import { ReadableAtom } from 'nanostores';
2
2
  import { Transport } from '../transport';
3
3
  export { $user } from './user';
4
- export declare const $organizationSettings: ($enabled: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<{
4
+ export declare const $organizationSettings: ($enabled: ReadableAtom<'on' | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<{
5
5
  id: string;
6
- overlays: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[];
7
- buttonIcon: string;
8
- tinodeHost: string;
9
- audience: string;
10
- name: string;
11
- provider: string;
12
- primaryColor: string;
13
- secondaryColor: string;
14
- moderationPrimaryColor: string;
15
- linkShareIcon: string;
16
- linkShareText: string;
17
- brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults;
18
- pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK;
19
- getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient;
20
- }, any>;
21
- export declare const $organizationAdvertising: ($enabled: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising, any>;
6
+ overlays?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").SdkOverlay[] | undefined;
7
+ buttonIcon?: string | undefined;
8
+ tinodeHost?: string | undefined;
9
+ audience?: string | undefined;
10
+ name?: string | undefined;
11
+ provider?: string | undefined;
12
+ primaryColor?: string | undefined;
13
+ secondaryColor?: string | undefined;
14
+ moderationPrimaryColor?: string | undefined;
15
+ linkShareIcon?: string | undefined;
16
+ linkShareText?: string | undefined;
17
+ brandDefaults?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").BrandDefaults | undefined;
18
+ pub?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").JWK | undefined;
19
+ getstream?: import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").GetStreamSettingsClient | undefined;
20
+ } | null, any>;
21
+ export declare const $organizationAdvertising: ($enabled: ReadableAtom<string | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising | undefined, any>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\nimport { ReadableAtom } from 'nanostores'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nexport const $organizationSettings = ($enabled: ReadableAtom<string>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getOrganization', params: [$enabled] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganization({})\n\n return res.data\n ? {\n ...res.data.attributes,\n id: res.data.id,\n }\n : null\n },\n })\n}\n\nexport const $organizationAdvertising = ($enabled: ReadableAtom<string>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, {\n method: 'getOrganizationAdvertising',\n params: [$enabled],\n })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganizationAdvertising({})\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["Client","$user","$organizationSettings","$enabled","transport","client","queryKey","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","res","getOrganization","data","attributes","id","$organizationAdvertising","getOrganizationAdvertising"],"mappings":"AAAA,SAASA,MAAM,QAAQ,0DAAyD;AAKhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,OAAO,MAAMC,wBAAwB,CAACC,UAAgCC;IACpE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QAAEQ,QAAQ;QAAmBC,QAAQ;YAACN;SAAS;IAAC;IAEnH,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS;YACP,MAAMC,MAAM,MAAMR,OAAOS,eAAe,CAAC,CAAC;YAE1C,OAAOD,IAAIE,IAAI,GACX;gBACE,GAAGF,IAAIE,IAAI,CAACC,UAAU;gBACtBC,IAAIJ,IAAIE,IAAI,CAACE,EAAE;YACjB,IACA;QACN;IACF;AACF,EAAC;AAED,OAAO,MAAMC,2BAA2B,CAACf,UAAgCC;IACvE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QACjEQ,QAAQ;QACRC,QAAQ;YAACN;SAAS;IACpB;IAEA,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS;YACP,MAAMC,MAAM,MAAMR,OAAOc,0BAA0B,CAAC,CAAC;YAErD,OAAON,IAAIE,IAAI,EAAEC;QACnB;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\nimport { ReadableAtom } from 'nanostores'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nexport const $organizationSettings = ($enabled: ReadableAtom<'on' | undefined>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getOrganization', params: [$enabled] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganization({})\n\n return res.data\n ? {\n ...res.data.attributes,\n id: res.data.id,\n }\n : null\n },\n })\n}\n\nexport const $organizationAdvertising = ($enabled: ReadableAtom<string | undefined>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, {\n method: 'getOrganizationAdvertising',\n params: [$enabled],\n })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganizationAdvertising({})\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["Client","$user","$organizationSettings","$enabled","transport","client","queryKey","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","res","getOrganization","data","attributes","id","$organizationAdvertising","getOrganizationAdvertising"],"mappings":"AAAA,SAASA,MAAM,QAAQ,0DAAyD;AAKhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,OAAO,MAAMC,wBAAwB,CAACC,UAA0CC;IAC9E,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QAAEQ,QAAQ;QAAmBC,QAAQ;YAACN;SAAS;IAAC;IAEnH,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS;YACP,MAAMC,MAAM,MAAMR,OAAOS,eAAe,CAAC,CAAC;YAE1C,OAAOD,IAAIE,IAAI,GACX;gBACE,GAAGF,IAAIE,IAAI,CAACC,UAAU;gBACtBC,IAAIJ,IAAIE,IAAI,CAACE,EAAE;YACjB,IACA;QACN;IACF;AACF,EAAC;AAED,OAAO,MAAMC,2BAA2B,CAACf,UAA4CC;IACnF,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,QAAQ;QACjEQ,QAAQ;QACRC,QAAQ;YAACN;SAAS;IACpB;IAEA,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACL,UAAU;QACtDM,SAAS;YACP,MAAMC,MAAM,MAAMR,OAAOc,0BAA0B,CAAC,CAAC;YAErD,OAAON,IAAIE,IAAI,EAAEC;QACnB;IACF;AACF,EAAC"}
@@ -2,12 +2,12 @@ import { ReadableAtom } from 'nanostores';
2
2
  import type { BypassAuthRequest, BypassAuthResponse } from '@streamlayer/sl-eslib/users/users_pb';
3
3
  import { PlainMessage } from '@bufbuild/protobuf';
4
4
  import { Transport } from '../transport';
5
- export declare const $user: ($userToken: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>;
5
+ export declare const $user: ($userToken: ReadableAtom<string | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>;
6
6
  export declare const $bypassLogin: (transport: Transport) => import("@nanostores/query").MutatorStore<PlainMessage<BypassAuthRequest>, PlainMessage<BypassAuthResponse>, any>;
7
7
  export declare const bypassAuth: (transport: Transport, params: {
8
8
  userKey?: string;
9
9
  schema?: string;
10
10
  init?: boolean;
11
11
  }) => Promise<BypassAuthResponse>;
12
- export declare const $userSettings: ($userToken: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>;
12
+ export declare const $userSettings: ($userToken: ReadableAtom<string | undefined>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings | undefined, any>;
13
13
  export declare const register: (transport: Transport, phone: string) => Promise<import("@streamlayer/sl-eslib/users/users_pb").RegisterResponse>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/user.ts"],"sourcesContent":["import { ReadableAtom } from 'nanostores'\nimport { Users } from '@streamlayer/sl-eslib/users/users_connect'\nimport type { BypassAuthRequest, BypassAuthResponse } from '@streamlayer/sl-eslib/users/users_pb'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\nimport { PlainMessage } from '@bufbuild/protobuf'\n\nimport { Transport } from '../transport'\n\n// user query\n// cache user\n// invalidate token\n// login\n// save token\n// called on update user key\nexport const $user = ($userToken: ReadableAtom<string>, transport: Transport) => {\n const { queryKey, client } = transport.createPromiseClient(Users, { method: 'me', params: [$userToken] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: () => client.me({}),\n })\n}\n\nexport const $bypassLogin = (transport: Transport) => {\n const { client, queryKeyStr } = transport.createPromiseClient(Users, { method: 'bypassAuth' })\n\n return transport.nanoquery.createMutatorStore<PlainMessage<BypassAuthRequest>, PlainMessage<BypassAuthResponse>>(\n async ({ data: { userKey, schema, init }, getCacheUpdater }) => {\n const [updateCache] = getCacheUpdater(queryKeyStr)\n const user = await client.bypassAuth({ userKey, schema, init })\n\n updateCache(user)\n\n return user\n },\n )\n}\n\nexport const bypassAuth = (transport: Transport, params: { userKey?: string; schema?: string; init?: boolean }) => {\n const { client } = transport.createPromiseClient(Users, { method: 'bypassAuth' })\n\n return client.bypassAuth(params)\n}\n\nexport const $userSettings = (\n $userToken: ReadableAtom<string>, // sl user token\n transport: Transport,\n) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'get', params: [$userToken] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const data = await client.get({})\n\n return data.data?.attributes\n },\n })\n}\n\nexport const register = (transport: Transport, phone: string) => {\n const { client } = transport.createPromiseClient(Users, { method: 'register' })\n\n return client.register({ id: phone })\n}\n"],"names":["Users","Client","$user","$userToken","transport","queryKey","client","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","me","$bypassLogin","queryKeyStr","createMutatorStore","data","userKey","schema","init","getCacheUpdater","updateCache","user","bypassAuth","$userSettings","get","attributes","register","phone","id"],"mappings":"AACA,SAASA,KAAK,QAAQ,4CAA2C;AAEjE,SAASC,MAAM,QAAQ,0DAAyD;AAKhF,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,QAAQ;AACR,aAAa;AACb,4BAA4B;AAC5B,OAAO,MAAMC,QAAQ,CAACC,YAAkCC;IACtD,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;QAAMC,QAAQ;YAACN;SAAW;IAAC;IAEvG,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACN,UAAU;QACtDO,SAAS,IAAMN,OAAOO,EAAE,CAAC,CAAC;IAC5B;AACF,EAAC;AAED,OAAO,MAAMC,eAAe,CAACV;IAC3B,MAAM,EAAEE,MAAM,EAAES,WAAW,EAAE,GAAGX,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAa;IAE5F,OAAOJ,UAAUM,SAAS,CAACM,kBAAkB,CAC3C,OAAO,EAAEC,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAE,EAAEC,eAAe,EAAE;QACzD,MAAM,CAACC,YAAY,GAAGD,gBAAgBN;QACtC,MAAMQ,OAAO,MAAMjB,OAAOkB,UAAU,CAAC;YAAEN;YAASC;YAAQC;QAAK;QAE7DE,YAAYC;QAEZ,OAAOA;IACT;AAEJ,EAAC;AAED,OAAO,MAAMC,aAAa,CAACpB,WAAsBK;IAC/C,MAAM,EAAEH,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAa;IAE/E,OAAOF,OAAOkB,UAAU,CAACf;AAC3B,EAAC;AAED,OAAO,MAAMgB,gBAAgB,CAC3BtB,YACAC;IAEA,MAAM,EAAEE,MAAM,EAAED,QAAQ,EAAE,GAAGD,UAAUG,mBAAmB,CAACN,QAAQ;QAAEO,QAAQ;QAAOC,QAAQ;YAACN;SAAW;IAAC;IAEzG,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACN,UAAU;QACtDO,SAAS;YACP,MAAMK,OAAO,MAAMX,OAAOoB,GAAG,CAAC,CAAC;YAE/B,OAAOT,KAAKA,IAAI,EAAEU;QACpB;IACF;AACF,EAAC;AAED,OAAO,MAAMC,WAAW,CAACxB,WAAsByB;IAC7C,MAAM,EAAEvB,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAW;IAE7E,OAAOF,OAAOsB,QAAQ,CAAC;QAAEE,IAAID;IAAM;AACrC,EAAC"}
1
+ {"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/user.ts"],"sourcesContent":["import { ReadableAtom } from 'nanostores'\nimport { Users } from '@streamlayer/sl-eslib/users/users_connect'\nimport type { BypassAuthRequest, BypassAuthResponse } from '@streamlayer/sl-eslib/users/users_pb'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\nimport { PlainMessage } from '@bufbuild/protobuf'\n\nimport { Transport } from '../transport'\n\n// user query\n// cache user\n// invalidate token\n// login\n// save token\n// called on update user key\nexport const $user = ($userToken: ReadableAtom<string | undefined>, transport: Transport) => {\n const { queryKey, client } = transport.createPromiseClient(Users, { method: 'me', params: [$userToken] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: () => client.me({}),\n })\n}\n\nexport const $bypassLogin = (transport: Transport) => {\n const { client, queryKeyStr } = transport.createPromiseClient(Users, { method: 'bypassAuth' })\n\n return transport.nanoquery.createMutatorStore<PlainMessage<BypassAuthRequest>, PlainMessage<BypassAuthResponse>>(\n async ({ data: { userKey, schema, init }, getCacheUpdater }) => {\n const [updateCache] = getCacheUpdater(queryKeyStr)\n const user = await client.bypassAuth({ userKey, schema, init })\n\n updateCache(user)\n\n return user\n },\n )\n}\n\nexport const bypassAuth = (transport: Transport, params: { userKey?: string; schema?: string; init?: boolean }) => {\n const { client } = transport.createPromiseClient(Users, { method: 'bypassAuth' })\n\n return client.bypassAuth(params)\n}\n\nexport const $userSettings = (\n $userToken: ReadableAtom<string | undefined>, // sl user token\n transport: Transport,\n) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'get', params: [$userToken] })\n\n return transport.nanoquery.createFetcherStore(queryKey, {\n fetcher: async () => {\n const data = await client.get({})\n\n return data.data?.attributes\n },\n })\n}\n\nexport const register = (transport: Transport, phone: string) => {\n const { client } = transport.createPromiseClient(Users, { method: 'register' })\n\n return client.register({ id: phone })\n}\n"],"names":["Users","Client","$user","$userToken","transport","queryKey","client","createPromiseClient","method","params","nanoquery","createFetcherStore","fetcher","me","$bypassLogin","queryKeyStr","createMutatorStore","data","userKey","schema","init","getCacheUpdater","updateCache","user","bypassAuth","$userSettings","get","attributes","register","phone","id"],"mappings":"AACA,SAASA,KAAK,QAAQ,4CAA2C;AAEjE,SAASC,MAAM,QAAQ,0DAAyD;AAKhF,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,QAAQ;AACR,aAAa;AACb,4BAA4B;AAC5B,OAAO,MAAMC,QAAQ,CAACC,YAA8CC;IAClE,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;QAAMC,QAAQ;YAACN;SAAW;IAAC;IAEvG,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACN,UAAU;QACtDO,SAAS,IAAMN,OAAOO,EAAE,CAAC,CAAC;IAC5B;AACF,EAAC;AAED,OAAO,MAAMC,eAAe,CAACV;IAC3B,MAAM,EAAEE,MAAM,EAAES,WAAW,EAAE,GAAGX,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAa;IAE5F,OAAOJ,UAAUM,SAAS,CAACM,kBAAkB,CAC3C,OAAO,EAAEC,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAE,EAAEC,eAAe,EAAE;QACzD,MAAM,CAACC,YAAY,GAAGD,gBAAgBN;QACtC,MAAMQ,OAAO,MAAMjB,OAAOkB,UAAU,CAAC;YAAEN;YAASC;YAAQC;QAAK;QAE7DE,YAAYC;QAEZ,OAAOA;IACT;AAEJ,EAAC;AAED,OAAO,MAAMC,aAAa,CAACpB,WAAsBK;IAC/C,MAAM,EAAEH,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAa;IAE/E,OAAOF,OAAOkB,UAAU,CAACf;AAC3B,EAAC;AAED,OAAO,MAAMgB,gBAAgB,CAC3BtB,YACAC;IAEA,MAAM,EAAEE,MAAM,EAAED,QAAQ,EAAE,GAAGD,UAAUG,mBAAmB,CAACN,QAAQ;QAAEO,QAAQ;QAAOC,QAAQ;YAACN;SAAW;IAAC;IAEzG,OAAOC,UAAUM,SAAS,CAACC,kBAAkB,CAACN,UAAU;QACtDO,SAAS;YACP,MAAMK,OAAO,MAAMX,OAAOoB,GAAG,CAAC,CAAC;YAE/B,OAAOT,KAAKA,IAAI,EAAEU;QACpB;IACF;AACF,EAAC;AAED,OAAO,MAAMC,WAAW,CAACxB,WAAsByB;IAC7C,MAAM,EAAEvB,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACP,OAAO;QAAEQ,QAAQ;IAAW;IAE7E,OAAOF,OAAOsB,QAAQ,CAAC;QAAEE,IAAID;IAAM;AACrC,EAAC"}
@@ -9,7 +9,7 @@ type KnownHeaders = {
9
9
  } & Record<string, string>;
10
10
  export type GrpcTransport = Transport['transport'];
11
11
  type ReservedHeaders = 'sdk' | 'authorization';
12
- type ExcludeReservedHeaders<T> = ReservedHeaders extends T ? never : T & T extends ReservedHeaders ? never : T;
12
+ type ExcludeReservedHeaders<T> = ReservedHeaders extends T ? never : T extends ReservedHeaders ? never : T;
13
13
  declare global {
14
14
  interface Window {
15
15
  __GRPC_DEVTOOLS_EXTENSION__?: () => import('@connectrpc/connect').Interceptor;
@@ -35,15 +35,15 @@ export declare class Transport {
35
35
  removeInterceptor: (interceptor: Interceptor) => void;
36
36
  getClient: <T extends ServiceType>(service: T) => PromiseClient<T>;
37
37
  createPromiseClient: <T extends ServiceType>(service: T, { params, method }: {
38
- params?: KeyInput;
38
+ params?: KeyInput | undefined;
39
39
  method: keyof T["methods"];
40
40
  }) => {
41
41
  client: PromiseClient<T>;
42
- queryKey: ((string | number) | import("nanostores").ReadableAtom<void | (string | number)>)[];
42
+ queryKey: ((string | number) | import("nanostores").ReadableAtom<(string | number) | (void | null | undefined)>)[];
43
43
  queryKeyStr: string;
44
44
  };
45
45
  setSdkKey: (sdkKey: string) => void;
46
- setAuth: (token: string) => void;
46
+ setAuth: (token?: string) => void;
47
47
  setHeader: <T extends string = string>(name: ExcludeReservedHeaders<T>, value: string) => void;
48
48
  getHeader: (name: keyof KnownHeaders) => string;
49
49
  getHeaders: () => KnownHeaders;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.ts"],"sourcesContent":["import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces'\n\nimport {\n createRouterTransport,\n ConnectRouter,\n Interceptor,\n createPromiseClient,\n PromiseClient,\n UnaryRequest,\n StreamRequest,\n} from '@connectrpc/connect'\nimport type { ServiceType } from '@bufbuild/protobuf'\nimport { createGrpcWebTransport } from '@bufbuild/connect-web'\nimport type { KeyInput } from '@nanostores/query'\nimport { nanoquery } from '@nanostores/query'\n\ntype KnownHeaders = {\n authorization?: string\n sdk?: string\n} & Record<string, string>\n\nexport type GrpcTransport = Transport['transport']\n\ntype ReservedHeaders = 'sdk' | 'authorization'\ntype ExcludeReservedHeaders<T> = ReservedHeaders extends T ? never : T & T extends ReservedHeaders ? never : T\n\ndeclare global {\n interface Window {\n __GRPC_DEVTOOLS_EXTENSION__?: () => import('@connectrpc/connect').Interceptor\n }\n}\ntype NanoqueryReturnType = ReturnType<typeof nanoquery>\ntype NanoqueryObjectType = {\n createFetcherStore: NanoqueryReturnType[0]\n createMutatorStore: NanoqueryReturnType[1]\n utils: NanoqueryReturnType[2]\n}\n\n/**\n * transport wrapper, initialize grpc transport, store headers and connect interceptors\n */\nexport class Transport {\n public readonly transport: ReturnType<typeof createGrpcWebTransport>\n public readonly nanoquery: NanoqueryObjectType\n\n protected interceptors: Interceptor[] = []\n private readonly $headers: MapStore<KnownHeaders>\n private clients: Map<keyof ServiceType['methods'], PromiseClient<ServiceType>>\n\n constructor() {\n this.$headers = new MapStore<KnownHeaders>(createMapStore({}))\n this.initInterceptors()\n this.clients = new Map()\n const [createFetcherStore, createMutatorStore, utils] = nanoquery()\n\n this.nanoquery = { createFetcherStore, createMutatorStore, utils }\n\n this.transport = createGrpcWebTransport({\n baseUrl: process.env.NX_GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',\n interceptors: this.interceptors,\n useBinaryFormat: true,\n })\n }\n\n registerInterceptor = (interceptor: Interceptor) => {\n this.interceptors.push(interceptor)\n }\n\n removeInterceptor = (interceptor: Interceptor) => {\n this.interceptors = this.interceptors.filter((i) => i !== interceptor)\n }\n\n getClient = <T extends ServiceType>(service: T): PromiseClient<T> => {\n const serviceName = service.typeName\n\n if (this.clients.has(serviceName)) {\n return this.clients.get(serviceName) as PromiseClient<T>\n }\n\n const client = createPromiseClient(service, this.transport)\n\n this.clients.set(serviceName, client)\n\n return client\n }\n\n createPromiseClient = <T extends ServiceType>(\n service: T,\n { params = [], method }: { params?: KeyInput; method: keyof T['methods'] },\n ) => {\n const client = this.getClient(service)\n\n const methodName = service.methods[method].name\n const queryKey = [\n service.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n ...(Array.isArray(params) ? params : [params]),\n ]\n\n return { client, queryKey, queryKeyStr: queryKey.toString() }\n }\n\n setSdkKey = (sdkKey: string) => {\n this.$headers.setValue('sdk', sdkKey)\n }\n\n setAuth = (token: string) => {\n this.$headers.setValue('authorization', token)\n }\n\n setHeader = <T extends keyof KnownHeaders = string>(name: ExcludeReservedHeaders<T>, value: string) =>\n this.$headers.setValue<string>(name, value)\n\n getHeader = (name: keyof KnownHeaders) => this.$headers.getValue(name)\n\n getHeaders = () => this.$headers.getValues()\n\n initInterceptors = () => {\n if (this.interceptors.length !== 0) {\n return\n }\n\n const auth: Interceptor = (next) => async (req) => {\n const headers = this.$headers.getValues()\n\n for (const header in headers) {\n req.header.set(header, headers[header])\n }\n try {\n return await next(req)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log({ err }, 'catch err') // logout and something like this\n\n throw err\n }\n }\n\n this.interceptors.push(auth)\n\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.push(window.__GRPC_DEVTOOLS_EXTENSION__())\n } else {\n window.addEventListener('grpc_devtools_loaded', () => {\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.push(window.__GRPC_DEVTOOLS_EXTENSION__())\n }\n })\n }\n }\n}\n\nexport class MockTransport extends Transport {\n public declare transport: ReturnType<typeof createRouterTransport>\n public calls: Array<UnaryRequest | StreamRequest>\n\n constructor(transport: (router: ConnectRouter) => void) {\n super()\n\n this.calls = []\n this.interceptors.push((next) => (req) => {\n this.calls.push(req)\n\n return next(req)\n })\n this.transport = createRouterTransport(transport, {\n transport: {\n interceptors: this.interceptors,\n },\n })\n }\n}\n"],"names":["MapStore","createMapStore","createRouterTransport","createPromiseClient","createGrpcWebTransport","nanoquery","Transport","constructor","interceptors","registerInterceptor","interceptor","push","removeInterceptor","filter","i","getClient","service","serviceName","typeName","clients","has","get","client","transport","set","params","method","methodName","methods","name","queryKey","charAt","toLowerCase","slice","Array","isArray","queryKeyStr","toString","setSdkKey","sdkKey","$headers","setValue","setAuth","token","setHeader","value","getHeader","getValue","getHeaders","getValues","initInterceptors","length","auth","next","req","headers","header","err","console","log","window","__GRPC_DEVTOOLS_EXTENSION__","addEventListener","Map","createFetcherStore","createMutatorStore","utils","baseUrl","process","env","NX_GRPC_HOST","useBinaryFormat","MockTransport","calls"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.ts"],"sourcesContent":["import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces'\n\nimport {\n createRouterTransport,\n ConnectRouter,\n Interceptor,\n createPromiseClient,\n PromiseClient,\n UnaryRequest,\n StreamRequest,\n} from '@connectrpc/connect'\nimport type { ServiceType } from '@bufbuild/protobuf'\nimport { createGrpcWebTransport } from '@bufbuild/connect-web'\nimport type { KeyInput } from '@nanostores/query'\nimport { nanoquery } from '@nanostores/query'\n\ntype KnownHeaders = {\n authorization?: string\n sdk?: string\n} & Record<string, string>\n\nexport type GrpcTransport = Transport['transport']\n\ntype ReservedHeaders = 'sdk' | 'authorization'\ntype ExcludeReservedHeaders<T> = ReservedHeaders extends T ? never : T extends ReservedHeaders ? never : T\n\ndeclare global {\n interface Window {\n __GRPC_DEVTOOLS_EXTENSION__?: () => import('@connectrpc/connect').Interceptor\n }\n}\ntype NanoqueryReturnType = ReturnType<typeof nanoquery>\ntype NanoqueryObjectType = {\n createFetcherStore: NanoqueryReturnType[0]\n createMutatorStore: NanoqueryReturnType[1]\n utils: NanoqueryReturnType[2]\n}\n\n/**\n * transport wrapper, initialize grpc transport, store headers and connect interceptors\n */\nexport class Transport {\n public readonly transport: ReturnType<typeof createGrpcWebTransport>\n public readonly nanoquery: NanoqueryObjectType\n\n protected interceptors: Interceptor[] = []\n private readonly $headers: MapStore<KnownHeaders>\n private clients: Map<keyof ServiceType['methods'], PromiseClient<ServiceType>>\n\n constructor() {\n this.$headers = new MapStore<KnownHeaders>(createMapStore({}))\n this.initInterceptors()\n this.clients = new Map()\n const [createFetcherStore, createMutatorStore, utils] = nanoquery()\n\n this.nanoquery = { createFetcherStore, createMutatorStore, utils }\n\n this.transport = createGrpcWebTransport({\n baseUrl: process.env.NX_GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',\n interceptors: this.interceptors,\n useBinaryFormat: true,\n })\n }\n\n registerInterceptor = (interceptor: Interceptor) => {\n this.interceptors.push(interceptor)\n }\n\n removeInterceptor = (interceptor: Interceptor) => {\n this.interceptors = this.interceptors.filter((i) => i !== interceptor)\n }\n\n getClient = <T extends ServiceType>(service: T): PromiseClient<T> => {\n const serviceName = service.typeName\n\n if (this.clients.has(serviceName)) {\n return this.clients.get(serviceName) as PromiseClient<T>\n }\n\n const client = createPromiseClient(service, this.transport)\n\n this.clients.set(serviceName, client)\n\n return client\n }\n\n createPromiseClient = <T extends ServiceType>(\n service: T,\n { params = [], method }: { params?: KeyInput; method: keyof T['methods'] },\n ) => {\n const client = this.getClient(service)\n\n const methodName = service.methods[method].name\n const queryKey = [\n service.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n ...(Array.isArray(params) ? params : [params]),\n ]\n\n return { client, queryKey, queryKeyStr: queryKey.toString() }\n }\n\n setSdkKey = (sdkKey: string) => {\n this.$headers.setValue('sdk', sdkKey)\n }\n\n setAuth = (token?: string) => {\n this.$headers.setValue('authorization', token)\n }\n\n setHeader = <T extends keyof KnownHeaders = string>(name: ExcludeReservedHeaders<T>, value: string) =>\n this.$headers.setValue<string>(name, value)\n\n getHeader = (name: keyof KnownHeaders) => this.$headers.getValue(name)\n\n getHeaders = () => this.$headers.getValues()\n\n initInterceptors = () => {\n if (this.interceptors.length !== 0) {\n return\n }\n\n const auth: Interceptor = (next) => async (req) => {\n const headers = this.$headers.getValues()\n\n for (const header in headers) {\n req.header.set(header, headers[header])\n }\n try {\n return await next(req)\n } catch (err: unknown) {\n // eslint-disable-next-line no-console\n console.log({ err }, 'catch err') // logout and something like this\n\n throw err\n }\n }\n\n this.interceptors.push(auth)\n\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.push(window.__GRPC_DEVTOOLS_EXTENSION__())\n } else {\n window.addEventListener('grpc_devtools_loaded', () => {\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.push(window.__GRPC_DEVTOOLS_EXTENSION__())\n }\n })\n }\n }\n}\n\nexport class MockTransport extends Transport {\n public declare transport: ReturnType<typeof createRouterTransport>\n public calls: Array<UnaryRequest | StreamRequest>\n\n constructor(transport: (router: ConnectRouter) => void) {\n super()\n\n this.calls = []\n this.interceptors.push((next) => (req) => {\n this.calls.push(req)\n\n return next(req)\n })\n this.transport = createRouterTransport(transport, {\n transport: {\n interceptors: this.interceptors,\n },\n })\n }\n}\n"],"names":["MapStore","createMapStore","createRouterTransport","createPromiseClient","createGrpcWebTransport","nanoquery","Transport","constructor","interceptors","registerInterceptor","interceptor","push","removeInterceptor","filter","i","getClient","service","serviceName","typeName","clients","has","get","client","transport","set","params","method","methodName","methods","name","queryKey","charAt","toLowerCase","slice","Array","isArray","queryKeyStr","toString","setSdkKey","sdkKey","$headers","setValue","setAuth","token","setHeader","value","getHeader","getValue","getHeaders","getValues","initInterceptors","length","auth","next","req","headers","header","err","console","log","window","__GRPC_DEVTOOLS_EXTENSION__","addEventListener","Map","createFetcherStore","createMutatorStore","utils","baseUrl","process","env","NX_GRPC_HOST","useBinaryFormat","MockTransport","calls"],"mappings":"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"}
@@ -71,9 +71,9 @@ describe('Transport', ()=>{
71
71
  expect(res.status).toEqual(1);
72
72
  const lastCall = transport.calls.pop();
73
73
  const headers = transport.getHeaders();
74
- expect(lastCall);
74
+ expect(lastCall).toBeDefined();
75
75
  for(const header in headers){
76
- expect(lastCall.header.get(header)).toEqual(headers[header]);
76
+ expect(lastCall?.header.get(header)).toEqual(headers[header]);
77
77
  }
78
78
  });
79
79
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.test.ts"],"sourcesContent":["import { Health } from '@streamlayer/sl-eslib/grpc/health/v1/health_connect'\n\nimport { MockTransport } from './transport'\n\ndescribe('Transport', () => {\n let transport: MockTransport\n\n beforeAll(() => {\n const mock = ({ service }) => {\n service(Health, {\n check: () => ({ status: 1 }),\n })\n }\n\n transport = new MockTransport(mock)\n })\n\n it('should initialize with default values', () => {\n expect(transport).toBeDefined()\n expect(transport.transport).toBeDefined()\n })\n\n it('should set SDK key', () => {\n const sdkKey = 'new-sdk-key'\n\n transport.setSdkKey(sdkKey)\n const headers = transport.getHeaders()\n\n expect(headers.sdk).toEqual(sdkKey)\n })\n\n it('should set authorization token', () => {\n const authToken = 'my-auth-token'\n\n transport.setAuth(authToken)\n const headers = transport.getHeaders()\n\n expect(headers.authorization).toEqual(authToken)\n })\n\n it('should set custom header', () => {\n const headerName = 'custom-header'\n const headerValue = 'custom-value'\n\n transport.setHeader(headerName, headerValue)\n const headers = transport.getHeaders()\n\n expect(headers[headerName]).toEqual(headerValue)\n })\n\n it('should get a specific header', () => {\n const headerName = 'custom-header'\n const headerValue = 'custom-value'\n\n transport.setHeader(headerName, headerValue)\n const retrievedValue = transport.getHeader(headerName)\n\n expect(retrievedValue).toEqual(headerValue)\n })\n\n it('should add/remove an interceptor', () => {\n const interceptor = (req) => req\n\n transport.registerInterceptor(interceptor)\n expect(transport['interceptors']).toContain(interceptor)\n\n transport.removeInterceptor(interceptor)\n expect(transport['interceptors']).not.toContain(interceptor)\n })\n\n it('should create and cache promise client', () => {\n const { client, queryKey } = transport.createPromiseClient(Health, { method: 'check' })\n\n expect(client).toBeDefined()\n expect(client.check).toBeDefined()\n expect(queryKey).toBeDefined()\n\n const { client: newClient, queryKey: newQueryKey } = transport.createPromiseClient(Health, { method: 'check' })\n\n expect(client === newClient)\n expect(queryKey !== newQueryKey)\n })\n\n it('should use all headers from store', async () => {\n const { client } = transport.createPromiseClient(Health, { method: 'check' })\n\n const res = await client.check({})\n\n expect(res?.status)\n expect(res.status).toEqual(1)\n\n const lastCall = transport.calls.pop()\n const headers = transport.getHeaders()\n\n expect(lastCall)\n\n for (const header in headers) {\n expect(lastCall.header.get(header)).toEqual(headers[header])\n }\n })\n})\n"],"names":["Health","MockTransport","describe","transport","beforeAll","mock","service","check","status","it","expect","toBeDefined","sdkKey","setSdkKey","headers","getHeaders","sdk","toEqual","authToken","setAuth","authorization","headerName","headerValue","setHeader","retrievedValue","getHeader","interceptor","req","registerInterceptor","toContain","removeInterceptor","not","client","queryKey","createPromiseClient","method","newClient","newQueryKey","res","lastCall","calls","pop","header","get"],"mappings":"AAAA,SAASA,MAAM,QAAQ,sDAAqD;AAE5E,SAASC,aAAa,QAAQ,cAAa;AAE3CC,SAAS,aAAa;IACpB,IAAIC;IAEJC,UAAU;QACR,MAAMC,OAAO,CAAC,EAAEC,OAAO,EAAE;YACvBA,QAAQN,QAAQ;gBACdO,OAAO,IAAO,CAAA;wBAAEC,QAAQ;oBAAE,CAAA;YAC5B;QACF;QAEAL,YAAY,IAAIF,cAAcI;IAChC;IAEAI,GAAG,yCAAyC;QAC1CC,OAAOP,WAAWQ,WAAW;QAC7BD,OAAOP,UAAUA,SAAS,EAAEQ,WAAW;IACzC;IAEAF,GAAG,sBAAsB;QACvB,MAAMG,SAAS;QAEfT,UAAUU,SAAS,CAACD;QACpB,MAAME,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,QAAQE,GAAG,EAAEC,OAAO,CAACL;IAC9B;IAEAH,GAAG,kCAAkC;QACnC,MAAMS,YAAY;QAElBf,UAAUgB,OAAO,CAACD;QAClB,MAAMJ,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,QAAQM,aAAa,EAAEH,OAAO,CAACC;IACxC;IAEAT,GAAG,4BAA4B;QAC7B,MAAMY,aAAa;QACnB,MAAMC,cAAc;QAEpBnB,UAAUoB,SAAS,CAACF,YAAYC;QAChC,MAAMR,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,OAAO,CAACO,WAAW,EAAEJ,OAAO,CAACK;IACtC;IAEAb,GAAG,gCAAgC;QACjC,MAAMY,aAAa;QACnB,MAAMC,cAAc;QAEpBnB,UAAUoB,SAAS,CAACF,YAAYC;QAChC,MAAME,iBAAiBrB,UAAUsB,SAAS,CAACJ;QAE3CX,OAAOc,gBAAgBP,OAAO,CAACK;IACjC;IAEAb,GAAG,oCAAoC;QACrC,MAAMiB,cAAc,CAACC,MAAQA;QAE7BxB,UAAUyB,mBAAmB,CAACF;QAC9BhB,OAAOP,SAAS,CAAC,eAAe,EAAE0B,SAAS,CAACH;QAE5CvB,UAAU2B,iBAAiB,CAACJ;QAC5BhB,OAAOP,SAAS,CAAC,eAAe,EAAE4B,GAAG,CAACF,SAAS,CAACH;IAClD;IAEAjB,GAAG,0CAA0C;QAC3C,MAAM,EAAEuB,MAAM,EAAEC,QAAQ,EAAE,GAAG9B,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAErFzB,OAAOsB,QAAQrB,WAAW;QAC1BD,OAAOsB,OAAOzB,KAAK,EAAEI,WAAW;QAChCD,OAAOuB,UAAUtB,WAAW;QAE5B,MAAM,EAAEqB,QAAQI,SAAS,EAAEH,UAAUI,WAAW,EAAE,GAAGlC,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAE7GzB,OAAOsB,WAAWI;QAClB1B,OAAOuB,aAAaI;IACtB;IAEA5B,GAAG,qCAAqC;QACtC,MAAM,EAAEuB,MAAM,EAAE,GAAG7B,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAE3E,MAAMG,MAAM,MAAMN,OAAOzB,KAAK,CAAC,CAAC;QAEhCG,OAAO4B,KAAK9B;QACZE,OAAO4B,IAAI9B,MAAM,EAAES,OAAO,CAAC;QAE3B,MAAMsB,WAAWpC,UAAUqC,KAAK,CAACC,GAAG;QACpC,MAAM3B,UAAUX,UAAUY,UAAU;QAEpCL,OAAO6B;QAEP,IAAK,MAAMG,UAAU5B,QAAS;YAC5BJ,OAAO6B,SAASG,MAAM,CAACC,GAAG,CAACD,SAASzB,OAAO,CAACH,OAAO,CAAC4B,OAAO;QAC7D;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.test.ts"],"sourcesContent":["import { Health } from '@streamlayer/sl-eslib/grpc/health/v1/health_connect'\n\nimport { MockTransport } from './transport'\n\ndescribe('Transport', () => {\n let transport: MockTransport\n\n beforeAll(() => {\n const mock = ({ service }) => {\n service(Health, {\n check: () => ({ status: 1 }),\n })\n }\n\n transport = new MockTransport(mock)\n })\n\n it('should initialize with default values', () => {\n expect(transport).toBeDefined()\n expect(transport.transport).toBeDefined()\n })\n\n it('should set SDK key', () => {\n const sdkKey = 'new-sdk-key'\n\n transport.setSdkKey(sdkKey)\n const headers = transport.getHeaders()\n\n expect(headers.sdk).toEqual(sdkKey)\n })\n\n it('should set authorization token', () => {\n const authToken = 'my-auth-token'\n\n transport.setAuth(authToken)\n const headers = transport.getHeaders()\n\n expect(headers.authorization).toEqual(authToken)\n })\n\n it('should set custom header', () => {\n const headerName = 'custom-header'\n const headerValue = 'custom-value'\n\n transport.setHeader(headerName, headerValue)\n const headers = transport.getHeaders()\n\n expect(headers[headerName]).toEqual(headerValue)\n })\n\n it('should get a specific header', () => {\n const headerName = 'custom-header'\n const headerValue = 'custom-value'\n\n transport.setHeader(headerName, headerValue)\n const retrievedValue = transport.getHeader(headerName)\n\n expect(retrievedValue).toEqual(headerValue)\n })\n\n it('should add/remove an interceptor', () => {\n const interceptor = (req) => req\n\n transport.registerInterceptor(interceptor)\n expect(transport['interceptors']).toContain(interceptor)\n\n transport.removeInterceptor(interceptor)\n expect(transport['interceptors']).not.toContain(interceptor)\n })\n\n it('should create and cache promise client', () => {\n const { client, queryKey } = transport.createPromiseClient(Health, { method: 'check' })\n\n expect(client).toBeDefined()\n expect(client.check).toBeDefined()\n expect(queryKey).toBeDefined()\n\n const { client: newClient, queryKey: newQueryKey } = transport.createPromiseClient(Health, { method: 'check' })\n\n expect(client === newClient)\n expect(queryKey !== newQueryKey)\n })\n\n it('should use all headers from store', async () => {\n const { client } = transport.createPromiseClient(Health, { method: 'check' })\n\n const res = await client.check({})\n\n expect(res?.status)\n expect(res.status).toEqual(1)\n\n const lastCall = transport.calls.pop()\n const headers = transport.getHeaders()\n\n expect(lastCall).toBeDefined()\n\n for (const header in headers) {\n expect(lastCall?.header.get(header)).toEqual(headers[header])\n }\n })\n})\n"],"names":["Health","MockTransport","describe","transport","beforeAll","mock","service","check","status","it","expect","toBeDefined","sdkKey","setSdkKey","headers","getHeaders","sdk","toEqual","authToken","setAuth","authorization","headerName","headerValue","setHeader","retrievedValue","getHeader","interceptor","req","registerInterceptor","toContain","removeInterceptor","not","client","queryKey","createPromiseClient","method","newClient","newQueryKey","res","lastCall","calls","pop","header","get"],"mappings":"AAAA,SAASA,MAAM,QAAQ,sDAAqD;AAE5E,SAASC,aAAa,QAAQ,cAAa;AAE3CC,SAAS,aAAa;IACpB,IAAIC;IAEJC,UAAU;QACR,MAAMC,OAAO,CAAC,EAAEC,OAAO,EAAE;YACvBA,QAAQN,QAAQ;gBACdO,OAAO,IAAO,CAAA;wBAAEC,QAAQ;oBAAE,CAAA;YAC5B;QACF;QAEAL,YAAY,IAAIF,cAAcI;IAChC;IAEAI,GAAG,yCAAyC;QAC1CC,OAAOP,WAAWQ,WAAW;QAC7BD,OAAOP,UAAUA,SAAS,EAAEQ,WAAW;IACzC;IAEAF,GAAG,sBAAsB;QACvB,MAAMG,SAAS;QAEfT,UAAUU,SAAS,CAACD;QACpB,MAAME,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,QAAQE,GAAG,EAAEC,OAAO,CAACL;IAC9B;IAEAH,GAAG,kCAAkC;QACnC,MAAMS,YAAY;QAElBf,UAAUgB,OAAO,CAACD;QAClB,MAAMJ,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,QAAQM,aAAa,EAAEH,OAAO,CAACC;IACxC;IAEAT,GAAG,4BAA4B;QAC7B,MAAMY,aAAa;QACnB,MAAMC,cAAc;QAEpBnB,UAAUoB,SAAS,CAACF,YAAYC;QAChC,MAAMR,UAAUX,UAAUY,UAAU;QAEpCL,OAAOI,OAAO,CAACO,WAAW,EAAEJ,OAAO,CAACK;IACtC;IAEAb,GAAG,gCAAgC;QACjC,MAAMY,aAAa;QACnB,MAAMC,cAAc;QAEpBnB,UAAUoB,SAAS,CAACF,YAAYC;QAChC,MAAME,iBAAiBrB,UAAUsB,SAAS,CAACJ;QAE3CX,OAAOc,gBAAgBP,OAAO,CAACK;IACjC;IAEAb,GAAG,oCAAoC;QACrC,MAAMiB,cAAc,CAACC,MAAQA;QAE7BxB,UAAUyB,mBAAmB,CAACF;QAC9BhB,OAAOP,SAAS,CAAC,eAAe,EAAE0B,SAAS,CAACH;QAE5CvB,UAAU2B,iBAAiB,CAACJ;QAC5BhB,OAAOP,SAAS,CAAC,eAAe,EAAE4B,GAAG,CAACF,SAAS,CAACH;IAClD;IAEAjB,GAAG,0CAA0C;QAC3C,MAAM,EAAEuB,MAAM,EAAEC,QAAQ,EAAE,GAAG9B,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAErFzB,OAAOsB,QAAQrB,WAAW;QAC1BD,OAAOsB,OAAOzB,KAAK,EAAEI,WAAW;QAChCD,OAAOuB,UAAUtB,WAAW;QAE5B,MAAM,EAAEqB,QAAQI,SAAS,EAAEH,UAAUI,WAAW,EAAE,GAAGlC,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAE7GzB,OAAOsB,WAAWI;QAClB1B,OAAOuB,aAAaI;IACtB;IAEA5B,GAAG,qCAAqC;QACtC,MAAM,EAAEuB,MAAM,EAAE,GAAG7B,UAAU+B,mBAAmB,CAAClC,QAAQ;YAAEmC,QAAQ;QAAQ;QAE3E,MAAMG,MAAM,MAAMN,OAAOzB,KAAK,CAAC,CAAC;QAEhCG,OAAO4B,KAAK9B;QACZE,OAAO4B,IAAI9B,MAAM,EAAES,OAAO,CAAC;QAE3B,MAAMsB,WAAWpC,UAAUqC,KAAK,CAACC,GAAG;QACpC,MAAM3B,UAAUX,UAAUY,UAAU;QAEpCL,OAAO6B,UAAU5B,WAAW;QAE5B,IAAK,MAAM+B,UAAU5B,QAAS;YAC5BJ,OAAO6B,UAAUG,OAAOC,IAAID,SAASzB,OAAO,CAACH,OAAO,CAAC4B,OAAO;QAC9D;IACF;AACF"}
package/src/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { FetcherStore } from '@nanostores/query';
1
2
  export { Transport } from './grpc/transport';
2
3
  export type { GrpcTransport } from './grpc/transport';
3
4
  export * as queries from './grpc/queries';
5
+ export type GetApiResponseType<T extends (...args: any[]) => FetcherStore> = ReturnType<ReturnType<T>['get']>['data'];
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../packages/sdk-web-api/src/index.ts"],"sourcesContent":["export { Transport } from './grpc/transport'\nexport type { GrpcTransport } from './grpc/transport'\nexport * as queries from './grpc/queries'\n"],"names":["Transport","queries"],"mappings":"AAAA,SAASA,SAAS,QAAQ,mBAAkB;AAE5C,OAAO,KAAKC,OAAO,MAAM,iBAAgB"}
1
+ {"version":3,"sources":["../../../../packages/sdk-web-api/src/index.ts"],"sourcesContent":["import { FetcherStore } from '@nanostores/query'\n\nexport { Transport } from './grpc/transport'\nexport type { GrpcTransport } from './grpc/transport'\nexport * as queries from './grpc/queries'\nexport type GetApiResponseType<T extends (...args: any[]) => FetcherStore> = ReturnType<ReturnType<T>['get']>['data']\n"],"names":["Transport","queries"],"mappings":"AAEA,SAASA,SAAS,QAAQ,mBAAkB;AAE5C,OAAO,KAAKC,OAAO,MAAM,iBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/sdk-web-api/src/utils/grpc-stub.ts"],"sourcesContent":["import { Transport as BufTransport, UnaryResponse } from '@connectrpc/connect'\nimport type { AnyMessage, Message } from '@bufbuild/protobuf'\n\nimport { Transport } from '..'\n\ntype Unary = BufTransport['unary']\n\nexport class GrpcStub {\n public readonly transport: Transport\n private stubs: Map<string, Record<string, unknown>>\n\n constructor() {\n this.transport = new Transport()\n this.stubs = new Map()\n\n const stubbedUnary: Unary = <I extends Message<I> = AnyMessage, O extends Message<O> = AnyMessage>(\n service,\n method,\n signal,\n timeoutMs,\n header,\n input,\n ) => {\n const key = `${service.typeName}${method.name}`.toLowerCase()\n\n console.log('grpc unary', { key, input })\n\n for (const [stubKey, stubValue] of this.stubs) {\n if (stubKey === key) {\n return { message: stubValue } as unknown as Promise<UnaryResponse<I, O>>\n }\n }\n\n throw new Error(\n JSON.stringify({ message: 'not stubbed correctly', service, method, signal, timeoutMs, header, input }),\n )\n }\n\n this.transport.transport.unary = stubbedUnary\n }\n\n stub = (method: string, response: Record<string, unknown>) => {\n this.stubs.set(method.toLowerCase(), response)\n }\n}\n"],"names":["Transport","GrpcStub","constructor","stub","method","response","stubs","set","toLowerCase","transport","Map","stubbedUnary","service","signal","timeoutMs","header","input","key","typeName","name","console","log","stubKey","stubValue","message","Error","JSON","stringify","unary"],"mappings":"AAGA,SAASA,SAAS,QAAQ,KAAI;AAI9B,OAAO,MAAMC;IAIXC,aAAc;aA8BdC,OAAO,CAACC,QAAgBC;YACtB,IAAI,CAACC,KAAK,CAACC,GAAG,CAACH,OAAOI,WAAW,IAAIH;QACvC;QA/BE,IAAI,CAACI,SAAS,GAAG,IAAIT;QACrB,IAAI,CAACM,KAAK,GAAG,IAAII;QAEjB,MAAMC,eAAsB,CAC1BC,SACAR,QACAS,QACAC,WACAC,QACAC;YAEA,MAAMC,MAAM,CAAC,EAAEL,QAAQM,QAAQ,CAAC,EAAEd,OAAOe,IAAI,CAAC,CAAC,CAACX,WAAW;YAE3DY,QAAQC,GAAG,CAAC,cAAc;gBAAEJ;gBAAKD;YAAM;YAEvC,KAAK,MAAM,CAACM,SAASC,UAAU,IAAI,IAAI,CAACjB,KAAK,CAAE;gBAC7C,IAAIgB,YAAYL,KAAK;oBACnB,OAAO;wBAAEO,SAASD;oBAAU;gBAC9B;YACF;YAEA,MAAM,IAAIE,MACRC,KAAKC,SAAS,CAAC;gBAAEH,SAAS;gBAAyBZ;gBAASR;gBAAQS;gBAAQC;gBAAWC;gBAAQC;YAAM;QAEzG;QAEA,IAAI,CAACP,SAAS,CAACA,SAAS,CAACmB,KAAK,GAAGjB;IACnC;AAKF"}
1
+ {"version":3,"sources":["../../../../../packages/sdk-web-api/src/utils/grpc-stub.ts"],"sourcesContent":["import { Transport as BufTransport, UnaryResponse } from '@connectrpc/connect'\nimport type { AnyMessage, Message } from '@bufbuild/protobuf'\n\nimport { Transport } from '..'\n\ntype Unary = BufTransport['unary']\n\nexport class GrpcStub {\n public readonly transport: Transport\n private stubs: Map<string, Record<string, unknown>>\n\n constructor() {\n this.transport = new Transport()\n this.stubs = new Map()\n\n const stubbedUnary: Unary = <I extends Message<I> = AnyMessage, O extends Message<O> = AnyMessage>(\n service: Parameters<Unary>[0],\n method: Parameters<Unary>[1],\n signal: Parameters<Unary>[2],\n timeoutMs: Parameters<Unary>[3],\n header: Parameters<Unary>[4],\n input: Parameters<Unary>[5],\n ) => {\n const key = `${service.typeName}${method.name}`.toLowerCase()\n\n console.log('grpc unary', { key, input })\n\n for (const [stubKey, stubValue] of this.stubs) {\n if (stubKey === key) {\n return { message: stubValue } as unknown as Promise<UnaryResponse<I, O>>\n }\n }\n\n throw new Error(\n JSON.stringify({ message: 'not stubbed correctly', service, method, signal, timeoutMs, header, input }),\n )\n }\n\n this.transport.transport.unary = stubbedUnary\n }\n\n stub = (method: string, response: Record<string, unknown>) => {\n this.stubs.set(method.toLowerCase(), response)\n }\n}\n"],"names":["Transport","GrpcStub","constructor","stub","method","response","stubs","set","toLowerCase","transport","Map","stubbedUnary","service","signal","timeoutMs","header","input","key","typeName","name","console","log","stubKey","stubValue","message","Error","JSON","stringify","unary"],"mappings":"AAGA,SAASA,SAAS,QAAQ,KAAI;AAI9B,OAAO,MAAMC;IAIXC,aAAc;aA8BdC,OAAO,CAACC,QAAgBC;YACtB,IAAI,CAACC,KAAK,CAACC,GAAG,CAACH,OAAOI,WAAW,IAAIH;QACvC;QA/BE,IAAI,CAACI,SAAS,GAAG,IAAIT;QACrB,IAAI,CAACM,KAAK,GAAG,IAAII;QAEjB,MAAMC,eAAsB,CAC1BC,SACAR,QACAS,QACAC,WACAC,QACAC;YAEA,MAAMC,MAAM,CAAC,EAAEL,QAAQM,QAAQ,CAAC,EAAEd,OAAOe,IAAI,CAAC,CAAC,CAACX,WAAW;YAE3DY,QAAQC,GAAG,CAAC,cAAc;gBAAEJ;gBAAKD;YAAM;YAEvC,KAAK,MAAM,CAACM,SAASC,UAAU,IAAI,IAAI,CAACjB,KAAK,CAAE;gBAC7C,IAAIgB,YAAYL,KAAK;oBACnB,OAAO;wBAAEO,SAASD;oBAAU;gBAC9B;YACF;YAEA,MAAM,IAAIE,MACRC,KAAKC,SAAS,CAAC;gBAAEH,SAAS;gBAAyBZ;gBAASR;gBAAQS;gBAAQC;gBAAWC;gBAAQC;YAAM;QAEzG;QAEA,IAAI,CAACP,SAAS,CAACA,SAAS,CAACmB,KAAK,GAAGjB;IACnC;AAKF"}