@streamlayer/sdk-web-api 0.7.0 → 0.9.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/package.json +9 -1
- package/src/grpc/queries/event.d.ts +1 -1
- package/src/grpc/queries/event.js +2 -4
- package/src/grpc/queries/event.js.map +1 -1
- package/src/grpc/queries/organization.d.ts +19 -2
- package/src/grpc/queries/organization.js +16 -9
- package/src/grpc/queries/organization.js.map +1 -1
- package/src/grpc/queries/user.d.ts +10 -6
- package/src/grpc/queries/user.js +35 -29
- package/src/grpc/queries/user.js.map +1 -1
- package/src/grpc/transport.d.ts +9 -0
- package/src/grpc/transport.js +11 -6
- package/src/grpc/transport.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamlayer/sdk-web-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"typings": "./src/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"src/"
|
|
9
9
|
],
|
|
10
|
+
"exports": {
|
|
11
|
+
".": "./src/index.js",
|
|
12
|
+
"./queries/*": {
|
|
13
|
+
"types": "./src/grpc/queries/*.d.ts",
|
|
14
|
+
"import": "./src/grpc/queries/*.js",
|
|
15
|
+
"default": "./src/grpc/queries/*.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
10
18
|
"dependencies": {
|
|
11
19
|
"@bufbuild/connect": "*",
|
|
12
20
|
"@bufbuild/connect-web": "*",
|
|
@@ -2,4 +2,4 @@ import { ReadableAtom } from 'nanostores';
|
|
|
2
2
|
import { Transport } from '../transport';
|
|
3
3
|
export { $user } from './user';
|
|
4
4
|
export declare const $retrieveEventId: ($providerStreamId: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<string, any>;
|
|
5
|
-
export declare const $streamSettings: (slStreamId: string
|
|
5
|
+
export declare const $streamSettings: (slStreamId: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { nanoquery } from '@nanostores/query';
|
|
2
1
|
import { Events } from '@streamlayer/sl-eslib/sports/events/events_connect';
|
|
3
2
|
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
4
3
|
export { $user } from './user';
|
|
5
|
-
const [createFetcherStore] = nanoquery();
|
|
6
4
|
export const $retrieveEventId = ($providerStreamId, transport)=>{
|
|
7
5
|
const { client, queryKey } = transport.createPromiseClient(Events, {
|
|
8
6
|
method: 'retrieveEventId',
|
|
@@ -10,7 +8,7 @@ export const $retrieveEventId = ($providerStreamId, transport)=>{
|
|
|
10
8
|
$providerStreamId
|
|
11
9
|
]
|
|
12
10
|
});
|
|
13
|
-
return createFetcherStore(queryKey, {
|
|
11
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
14
12
|
fetcher: async (_, __, id)=>{
|
|
15
13
|
if (!id) {
|
|
16
14
|
return '';
|
|
@@ -29,7 +27,7 @@ export const $streamSettings = (slStreamId, transport)=>{
|
|
|
29
27
|
slStreamId
|
|
30
28
|
]
|
|
31
29
|
});
|
|
32
|
-
return createFetcherStore(queryKey, {
|
|
30
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
33
31
|
fetcher: async (_, __, id)=>{
|
|
34
32
|
const res = await client.getStream({
|
|
35
33
|
id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/event.ts"],"sourcesContent":["import {
|
|
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,4 +1,21 @@
|
|
|
1
|
+
import { ReadableAtom } from 'nanostores';
|
|
1
2
|
import { Transport } from '../transport';
|
|
2
3
|
export { $user } from './user';
|
|
3
|
-
export declare const $organizationSettings: (transport: Transport) => import("@nanostores/query").FetcherStore<
|
|
4
|
-
|
|
4
|
+
export declare const $organizationSettings: ($enabled: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<{
|
|
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>;
|
|
@@ -1,23 +1,30 @@
|
|
|
1
|
-
import { nanoquery } from '@nanostores/query';
|
|
2
1
|
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
3
2
|
export { $user } from './user';
|
|
4
|
-
const
|
|
5
|
-
export const $organizationSettings = (transport)=>{
|
|
3
|
+
export const $organizationSettings = ($enabled, transport)=>{
|
|
6
4
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
7
|
-
method: 'getOrganization'
|
|
5
|
+
method: 'getOrganization',
|
|
6
|
+
params: [
|
|
7
|
+
$enabled
|
|
8
|
+
]
|
|
8
9
|
});
|
|
9
|
-
return createFetcherStore(queryKey, {
|
|
10
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
10
11
|
fetcher: async ()=>{
|
|
11
12
|
const res = await client.getOrganization({});
|
|
12
|
-
return res.data
|
|
13
|
+
return res.data ? {
|
|
14
|
+
...res.data.attributes,
|
|
15
|
+
id: res.data.id
|
|
16
|
+
} : null;
|
|
13
17
|
}
|
|
14
18
|
});
|
|
15
19
|
};
|
|
16
|
-
export const $organizationAdvertising = (transport)=>{
|
|
20
|
+
export const $organizationAdvertising = ($enabled, transport)=>{
|
|
17
21
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
18
|
-
method: 'getOrganizationAdvertising'
|
|
22
|
+
method: 'getOrganizationAdvertising',
|
|
23
|
+
params: [
|
|
24
|
+
$enabled
|
|
25
|
+
]
|
|
19
26
|
});
|
|
20
|
-
return createFetcherStore(queryKey, {
|
|
27
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
21
28
|
fetcher: async ()=>{
|
|
22
29
|
const res = await client.getOrganizationAdvertising({});
|
|
23
30
|
return res.data?.attributes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import {
|
|
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,9 +1,13 @@
|
|
|
1
1
|
import { ReadableAtom } from 'nanostores';
|
|
2
|
+
import type { BypassAuthRequest, BypassAuthResponse } from '@streamlayer/sl-eslib/users/users_pb';
|
|
3
|
+
import { PlainMessage } from '@bufbuild/protobuf';
|
|
2
4
|
import { Transport } from '../transport';
|
|
3
|
-
export declare const $user: ($
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export declare const $user: ($userToken: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").MeResponse, any>;
|
|
6
|
+
export declare const $bypassLogin: (transport: Transport) => import("@nanostores/query").MutatorStore<PlainMessage<BypassAuthRequest>, PlainMessage<BypassAuthResponse>, any>;
|
|
7
|
+
export declare const bypassAuth: (transport: Transport, params: {
|
|
8
|
+
userKey?: string;
|
|
9
|
+
schema?: string;
|
|
10
|
+
init?: boolean;
|
|
11
|
+
}) => Promise<BypassAuthResponse>;
|
|
9
12
|
export declare const $userSettings: ($userToken: ReadableAtom<string>, transport: Transport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>;
|
|
13
|
+
export declare const register: (transport: Transport, phone: string) => Promise<import("@streamlayer/sl-eslib/users/users_pb").RegisterResponse>;
|
package/src/grpc/queries/user.js
CHANGED
|
@@ -1,45 +1,43 @@
|
|
|
1
|
-
import { nanoquery } from '@nanostores/query';
|
|
2
1
|
import { Users } from '@streamlayer/sl-eslib/users/users_connect';
|
|
3
2
|
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
4
|
-
const [createFetcherStore] = nanoquery();
|
|
5
3
|
// user query
|
|
6
4
|
// cache user
|
|
7
5
|
// invalidate token
|
|
8
6
|
// login
|
|
9
7
|
// save token
|
|
10
8
|
// called on update user key
|
|
11
|
-
export const $user = ($
|
|
9
|
+
export const $user = ($userToken, transport)=>{
|
|
12
10
|
const { queryKey, client } = transport.createPromiseClient(Users, {
|
|
13
|
-
method: '
|
|
11
|
+
method: 'me',
|
|
14
12
|
params: [
|
|
15
|
-
$
|
|
13
|
+
$userToken
|
|
16
14
|
]
|
|
17
15
|
});
|
|
18
|
-
return createFetcherStore(queryKey, {
|
|
19
|
-
fetcher:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
return client.bypassAuth({
|
|
37
|
-
userKey,
|
|
38
|
-
schema: 'streamlayer'
|
|
39
|
-
});
|
|
40
|
-
}
|
|
16
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
17
|
+
fetcher: ()=>client.me({})
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
export const $bypassLogin = (transport)=>{
|
|
21
|
+
const { client, queryKeyStr } = transport.createPromiseClient(Users, {
|
|
22
|
+
method: 'bypassAuth'
|
|
23
|
+
});
|
|
24
|
+
return transport.nanoquery.createMutatorStore(async ({ data: { userKey, schema, init }, getCacheUpdater })=>{
|
|
25
|
+
const [updateCache] = getCacheUpdater(queryKeyStr);
|
|
26
|
+
const user = await client.bypassAuth({
|
|
27
|
+
userKey,
|
|
28
|
+
schema,
|
|
29
|
+
init
|
|
30
|
+
});
|
|
31
|
+
updateCache(user);
|
|
32
|
+
return user;
|
|
41
33
|
});
|
|
42
34
|
};
|
|
35
|
+
export const bypassAuth = (transport, params)=>{
|
|
36
|
+
const { client } = transport.createPromiseClient(Users, {
|
|
37
|
+
method: 'bypassAuth'
|
|
38
|
+
});
|
|
39
|
+
return client.bypassAuth(params);
|
|
40
|
+
};
|
|
43
41
|
export const $userSettings = ($userToken, transport)=>{
|
|
44
42
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
45
43
|
method: 'get',
|
|
@@ -47,12 +45,20 @@ export const $userSettings = ($userToken, transport)=>{
|
|
|
47
45
|
$userToken
|
|
48
46
|
]
|
|
49
47
|
});
|
|
50
|
-
return createFetcherStore(queryKey, {
|
|
48
|
+
return transport.nanoquery.createFetcherStore(queryKey, {
|
|
51
49
|
fetcher: async ()=>{
|
|
52
50
|
const data = await client.get({});
|
|
53
51
|
return data.data?.attributes;
|
|
54
52
|
}
|
|
55
53
|
});
|
|
56
54
|
};
|
|
55
|
+
export const register = (transport, phone)=>{
|
|
56
|
+
const { client } = transport.createPromiseClient(Users, {
|
|
57
|
+
method: 'register'
|
|
58
|
+
});
|
|
59
|
+
return client.register({
|
|
60
|
+
id: phone
|
|
61
|
+
});
|
|
62
|
+
};
|
|
57
63
|
|
|
58
64
|
//# sourceMappingURL=user.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/user.ts"],"sourcesContent":["import {
|
|
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"}
|
package/src/grpc/transport.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Interceptor, PromiseClient, UnaryRequest, StreamRequest } from '@bufbui
|
|
|
3
3
|
import type { ServiceType } from '@bufbuild/protobuf';
|
|
4
4
|
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
5
5
|
import type { KeyInput } from '@nanostores/query';
|
|
6
|
+
import { nanoquery } from '@nanostores/query';
|
|
6
7
|
type KnownHeaders = {
|
|
7
8
|
authorization?: string;
|
|
8
9
|
sdk?: string;
|
|
@@ -15,11 +16,18 @@ declare global {
|
|
|
15
16
|
__GRPC_DEVTOOLS_EXTENSION__?: () => import('@bufbuild/connect').Interceptor;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
19
|
+
type NanoqueryReturnType = ReturnType<typeof nanoquery>;
|
|
20
|
+
type NanoqueryObjectType = {
|
|
21
|
+
createFetcherStore: NanoqueryReturnType[0];
|
|
22
|
+
createMutatorStore: NanoqueryReturnType[1];
|
|
23
|
+
utils: NanoqueryReturnType[2];
|
|
24
|
+
};
|
|
18
25
|
/**
|
|
19
26
|
* transport wrapper, initialize grpc transport, store headers and connect interceptors
|
|
20
27
|
*/
|
|
21
28
|
export declare class Transport {
|
|
22
29
|
readonly transport: ReturnType<typeof createGrpcWebTransport>;
|
|
30
|
+
readonly nanoquery: NanoqueryObjectType;
|
|
23
31
|
protected interceptors: Interceptor[];
|
|
24
32
|
private readonly $headers;
|
|
25
33
|
private clients;
|
|
@@ -33,6 +41,7 @@ export declare class Transport {
|
|
|
33
41
|
}) => {
|
|
34
42
|
client: PromiseClient<T>;
|
|
35
43
|
queryKey: ((string | number) | import("nanostores").ReadableAtom<void | (string | number)>)[];
|
|
44
|
+
queryKeyStr: string;
|
|
36
45
|
};
|
|
37
46
|
setSdkKey: (sdkKey: string) => void;
|
|
38
47
|
setAuth: (token: string) => void;
|
package/src/grpc/transport.js
CHANGED
|
@@ -2,9 +2,7 @@ import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces';
|
|
|
2
2
|
import { createRouterTransport } from '@connectrpc/connect';
|
|
3
3
|
import { createPromiseClient } from '@bufbuild/connect';
|
|
4
4
|
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
5
|
-
|
|
6
|
-
sdk: process.env.SDK_KEY
|
|
7
|
-
};
|
|
5
|
+
import { nanoquery } from '@nanostores/query';
|
|
8
6
|
/**
|
|
9
7
|
* transport wrapper, initialize grpc transport, store headers and connect interceptors
|
|
10
8
|
*/ export class Transport {
|
|
@@ -37,7 +35,8 @@ const initialStore = {
|
|
|
37
35
|
];
|
|
38
36
|
return {
|
|
39
37
|
client,
|
|
40
|
-
queryKey
|
|
38
|
+
queryKey,
|
|
39
|
+
queryKeyStr: queryKey.toString()
|
|
41
40
|
};
|
|
42
41
|
};
|
|
43
42
|
this.setSdkKey = (sdkKey)=>{
|
|
@@ -80,11 +79,17 @@ const initialStore = {
|
|
|
80
79
|
});
|
|
81
80
|
}
|
|
82
81
|
};
|
|
83
|
-
this.$headers = new MapStore(createMapStore(
|
|
82
|
+
this.$headers = new MapStore(createMapStore({}));
|
|
84
83
|
this.initInterceptors();
|
|
85
84
|
this.clients = new Map();
|
|
85
|
+
const [createFetcherStore, createMutatorStore, utils] = nanoquery();
|
|
86
|
+
this.nanoquery = {
|
|
87
|
+
createFetcherStore,
|
|
88
|
+
createMutatorStore,
|
|
89
|
+
utils
|
|
90
|
+
};
|
|
86
91
|
this.transport = createGrpcWebTransport({
|
|
87
|
-
baseUrl: process.env.
|
|
92
|
+
baseUrl: process.env.NX_GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',
|
|
88
93
|
interceptors: this.interceptors,
|
|
89
94
|
useBinaryFormat: true
|
|
90
95
|
});
|
|
@@ -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 { createRouterTransport, ConnectRouter } from '@connectrpc/connect'\nimport { Interceptor, createPromiseClient, PromiseClient, UnaryRequest, StreamRequest } from '@bufbuild/connect'\nimport type { ServiceType } from '@bufbuild/protobuf'\nimport { createGrpcWebTransport } from '@bufbuild/connect-web'\nimport type { KeyInput } from '@nanostores/query'\n\ntype KnownHeaders = {\n authorization?: string\n sdk?: string\n} & Record<string, string>\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.ts"],"sourcesContent":["import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces'\n\nimport { createRouterTransport, ConnectRouter } from '@connectrpc/connect'\nimport { Interceptor, createPromiseClient, PromiseClient, UnaryRequest, StreamRequest } from '@bufbuild/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('@bufbuild/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 * 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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"}
|