@streamlayer/sdk-web-api 0.6.0 → 0.8.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 +1 -1
- package/src/grpc/queries/event.js.map +1 -1
- package/src/grpc/queries/organization.d.ts +19 -2
- package/src/grpc/queries/organization.js +14 -5
- package/src/grpc/queries/organization.js.map +1 -1
- package/src/grpc/queries/queries.test.js +3 -3
- package/src/grpc/queries/queries.test.js.map +1 -1
- package/src/grpc/queries/user.d.ts +10 -6
- package/src/grpc/queries/user.js +34 -26
- package/src/grpc/queries/user.js.map +1 -1
- package/src/grpc/transport.d.ts +2 -1
- package/src/grpc/transport.js +4 -3
- package/src/grpc/transport.js.map +1 -1
- package/src/grpc/transport.test.js.map +1 -1
- package/src/index.test.js.map +1 -1
- package/src/utils/grpc-stub.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.8.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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/event.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { 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\nconst [createFetcherStore] = nanoquery()\n\nexport const $retrieveEventId = (
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/event.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { 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\nconst [createFetcherStore] = nanoquery()\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 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 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":["nanoquery","Events","Client","$user","createFetcherStore","$retrieveEventId","$providerStreamId","transport","client","queryKey","createPromiseClient","method","params","fetcher","_","__","id","res","retrieveEventId","data","$streamSettings","slStreamId","getStream","attributes"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAE7C,SAASC,MAAM,QAAQ,qDAAoD;AAC3E,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,MAAM,CAACC,mBAAmB,GAAGJ;AAE7B,OAAO,MAAMK,mBAAmB,CAACC,mBAAyCC;IACxE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACT,QAAQ;QACjEU,QAAQ;QACRC,QAAQ;YAACN;SAAkB;IAC7B;IAEA,OAAOF,mBAAmBK,UAAU;QAClCI,SAAS,OAAOC,GAAWC,IAAYC;YACrC,IAAI,CAACA,IAAI;gBACP,OAAO;YACT;YAEA,MAAMC,MAAM,MAAMT,OAAOU,eAAe,CAAC;gBACvCF;YACF;YAEA,OAAO,CAACC,IAAIE,IAAI,EAAEH,EAAuB,KAAK;QAChD;IACF;AACF,EAAC;AAED,OAAO,MAAMI,kBAAkB,CAACC,YAAkCd;IAChE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACR,QAAQ;QAAES,QAAQ;QAAaC,QAAQ;YAACS;SAAW;IAAC;IAE/G,OAAOjB,mBAAmBK,UAAU;QAClCI,SAAS,OAAOC,GAAWC,IAAYC;YACrC,MAAMC,MAAM,MAAMT,OAAOc,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>;
|
|
@@ -2,20 +2,29 @@ import { nanoquery } from '@nanostores/query';
|
|
|
2
2
|
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
3
3
|
export { $user } from './user';
|
|
4
4
|
const [createFetcherStore] = nanoquery();
|
|
5
|
-
export const $organizationSettings = (transport)=>{
|
|
5
|
+
export const $organizationSettings = ($enabled, transport)=>{
|
|
6
6
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
7
|
-
method: 'getOrganization'
|
|
7
|
+
method: 'getOrganization',
|
|
8
|
+
params: [
|
|
9
|
+
$enabled
|
|
10
|
+
]
|
|
8
11
|
});
|
|
9
12
|
return createFetcherStore(queryKey, {
|
|
10
13
|
fetcher: async ()=>{
|
|
11
14
|
const res = await client.getOrganization({});
|
|
12
|
-
return res.data
|
|
15
|
+
return res.data ? {
|
|
16
|
+
...res.data.attributes,
|
|
17
|
+
id: res.data.id
|
|
18
|
+
} : null;
|
|
13
19
|
}
|
|
14
20
|
});
|
|
15
21
|
};
|
|
16
|
-
export const $organizationAdvertising = (transport)=>{
|
|
22
|
+
export const $organizationAdvertising = ($enabled, transport)=>{
|
|
17
23
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
18
|
-
method: 'getOrganizationAdvertising'
|
|
24
|
+
method: 'getOrganizationAdvertising',
|
|
25
|
+
params: [
|
|
26
|
+
$enabled
|
|
27
|
+
]
|
|
19
28
|
});
|
|
20
29
|
return createFetcherStore(queryKey, {
|
|
21
30
|
fetcher: async ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nconst [createFetcherStore] = nanoquery()\n\nexport const $organizationSettings = (transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getOrganization' })\n\n return createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganization({})\n\n return res.data
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\nimport { ReadableAtom } from 'nanostores'\n\nimport { Transport } from '../transport'\n\nexport { $user } from './user'\n\nconst [createFetcherStore] = nanoquery()\n\nexport const $organizationSettings = ($enabled: ReadableAtom<string>, transport: Transport) => {\n const { client, queryKey } = transport.createPromiseClient(Client, { method: 'getOrganization', params: [$enabled] })\n\n return 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 createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await client.getOrganizationAdvertising({})\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["nanoquery","Client","$user","createFetcherStore","$organizationSettings","$enabled","transport","client","queryKey","createPromiseClient","method","params","fetcher","res","getOrganization","data","attributes","id","$organizationAdvertising","getOrganizationAdvertising"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAC7C,SAASC,MAAM,QAAQ,0DAAyD;AAKhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,MAAM,CAACC,mBAAmB,GAAGH;AAE7B,OAAO,MAAMI,wBAAwB,CAACC,UAAgCC;IACpE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACR,QAAQ;QAAES,QAAQ;QAAmBC,QAAQ;YAACN;SAAS;IAAC;IAEnH,OAAOF,mBAAmBK,UAAU;QAClCI,SAAS;YACP,MAAMC,MAAM,MAAMN,OAAOO,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,CAACb,UAAgCC;IACvE,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGF,UAAUG,mBAAmB,CAACR,QAAQ;QACjES,QAAQ;QACRC,QAAQ;YAACN;SAAS;IACpB;IAEA,OAAOF,mBAAmBK,UAAU;QAClCI,SAAS;YACP,MAAMC,MAAM,MAAMN,OAAOY,0BAA0B,CAAC,CAAC;YAErD,OAAON,IAAIE,IAAI,EAAEC;QACnB;IACF;AACF,EAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ApiStore, createSingleStore } from
|
|
2
|
-
import { Events } from
|
|
1
|
+
import { ApiStore, createSingleStore } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
+
import { Events } from '@streamlayer/sl-eslib/streamlayer/sports/events/events_connect';
|
|
3
3
|
import { MockTransport } from '../transport';
|
|
4
4
|
import { $retrieveEventId } from './event';
|
|
5
|
-
describe(
|
|
5
|
+
describe('Simple requests test', ()=>{
|
|
6
6
|
const ctx = {
|
|
7
7
|
providerStreamId: createSingleStore('')
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/queries.test.ts"],"sourcesContent":["import { ApiStore, createSingleStore } from
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/queries.test.ts"],"sourcesContent":["import { ApiStore, createSingleStore } from '@streamlayer/sdk-web-interfaces'\n\nimport { Events } from '@streamlayer/sl-eslib/streamlayer/sports/events/events_connect'\n\nimport { MockTransport } from '../transport'\n\nimport { $retrieveEventId } from './event'\n\ndescribe('Simple requests test', () => {\n const ctx: {\n providerStreamId: ReturnType<typeof createSingleStore<string>>\n api?: ApiStore<ReturnType<typeof $retrieveEventId>>\n transport?: MockTransport\n } = {\n providerStreamId: createSingleStore(''),\n }\n\n beforeAll(() => {\n const mock = ({ service }) => {\n service(Events, {\n retrieveEventId: () => ({ data: { id: 123 } }),\n })\n }\n\n ctx.transport = new MockTransport(mock)\n\n ctx.api = new ApiStore($retrieveEventId(ctx.providerStreamId, ctx.transport))\n ctx.api.listen(() => {})\n })\n\n afterAll(() => {\n ctx.api.off()\n })\n\n it('returns empty sl event id if provider id not defined', async () => {\n const emptyEvent = await ctx.api.getValue()\n\n expect(emptyEvent).toEqual('')\n })\n\n it('returns sl event id if provider id defined', async () => {\n ctx.providerStreamId.set('demo:event')\n const resolvedEvent = await ctx.api.getValue()\n\n expect(resolvedEvent).toEqual('123')\n })\n})\n"],"names":["ApiStore","createSingleStore","Events","MockTransport","$retrieveEventId","describe","ctx","providerStreamId","beforeAll","mock","service","retrieveEventId","data","id","transport","api","listen","afterAll","off","it","emptyEvent","getValue","expect","toEqual","set","resolvedEvent"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,iBAAiB,QAAQ,kCAAiC;AAE7E,SAASC,MAAM,QAAQ,iEAAgE;AAEvF,SAASC,aAAa,QAAQ,eAAc;AAE5C,SAASC,gBAAgB,QAAQ,UAAS;AAE1CC,SAAS,wBAAwB;IAC/B,MAAMC,MAIF;QACFC,kBAAkBN,kBAAkB;IACtC;IAEAO,UAAU;QACR,MAAMC,OAAO,CAAC,EAAEC,OAAO,EAAE;YACvBA,QAAQR,QAAQ;gBACdS,iBAAiB,IAAO,CAAA;wBAAEC,MAAM;4BAAEC,IAAI;wBAAI;oBAAE,CAAA;YAC9C;QACF;QAEAP,IAAIQ,SAAS,GAAG,IAAIX,cAAcM;QAElCH,IAAIS,GAAG,GAAG,IAAIf,SAASI,iBAAiBE,IAAIC,gBAAgB,EAAED,IAAIQ,SAAS;QAC3ER,IAAIS,GAAG,CAACC,MAAM,CAAC,KAAO;IACxB;IAEAC,SAAS;QACPX,IAAIS,GAAG,CAACG,GAAG;IACb;IAEAC,GAAG,wDAAwD;QACzD,MAAMC,aAAa,MAAMd,IAAIS,GAAG,CAACM,QAAQ;QAEzCC,OAAOF,YAAYG,OAAO,CAAC;IAC7B;IAEAJ,GAAG,8CAA8C;QAC/Cb,IAAIC,gBAAgB,CAACiB,GAAG,CAAC;QACzB,MAAMC,gBAAgB,MAAMnB,IAAIS,GAAG,CAACM,QAAQ;QAE5CC,OAAOG,eAAeF,OAAO,CAAC;IAChC;AACF"}
|
|
@@ -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,45 @@
|
|
|
1
1
|
import { nanoquery } from '@nanostores/query';
|
|
2
2
|
import { Users } from '@streamlayer/sl-eslib/users/users_connect';
|
|
3
3
|
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
4
|
-
const [createFetcherStore] = nanoquery();
|
|
4
|
+
const [createFetcherStore, createMutatorStore] = nanoquery();
|
|
5
5
|
// user query
|
|
6
6
|
// cache user
|
|
7
7
|
// invalidate token
|
|
8
8
|
// login
|
|
9
9
|
// save token
|
|
10
10
|
// called on update user key
|
|
11
|
-
export const $user = ($
|
|
11
|
+
export const $user = ($userToken, transport)=>{
|
|
12
12
|
const { queryKey, client } = transport.createPromiseClient(Users, {
|
|
13
|
-
method: '
|
|
13
|
+
method: 'me',
|
|
14
14
|
params: [
|
|
15
|
-
$
|
|
15
|
+
$userToken
|
|
16
16
|
]
|
|
17
17
|
});
|
|
18
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
|
-
}
|
|
19
|
+
fetcher: ()=>client.me({})
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export const $bypassLogin = (transport)=>{
|
|
23
|
+
const { client, queryKeyStr } = transport.createPromiseClient(Users, {
|
|
24
|
+
method: 'bypassAuth'
|
|
25
|
+
});
|
|
26
|
+
return createMutatorStore(async ({ data: { userKey, schema, init }, getCacheUpdater })=>{
|
|
27
|
+
const [updateCache] = getCacheUpdater(queryKeyStr);
|
|
28
|
+
const user = await client.bypassAuth({
|
|
29
|
+
userKey,
|
|
30
|
+
schema,
|
|
31
|
+
init
|
|
32
|
+
});
|
|
33
|
+
updateCache(user);
|
|
34
|
+
return user;
|
|
41
35
|
});
|
|
42
36
|
};
|
|
37
|
+
export const bypassAuth = (transport, params)=>{
|
|
38
|
+
const { client } = transport.createPromiseClient(Users, {
|
|
39
|
+
method: 'bypassAuth'
|
|
40
|
+
});
|
|
41
|
+
return client.bypassAuth(params);
|
|
42
|
+
};
|
|
43
43
|
export const $userSettings = ($userToken, transport)=>{
|
|
44
44
|
const { client, queryKey } = transport.createPromiseClient(Client, {
|
|
45
45
|
method: 'get',
|
|
@@ -54,5 +54,13 @@ export const $userSettings = ($userToken, transport)=>{
|
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
|
+
export const register = (transport, phone)=>{
|
|
58
|
+
const { client } = transport.createPromiseClient(Users, {
|
|
59
|
+
method: 'register'
|
|
60
|
+
});
|
|
61
|
+
return client.register({
|
|
62
|
+
id: phone
|
|
63
|
+
});
|
|
64
|
+
};
|
|
57
65
|
|
|
58
66
|
//# sourceMappingURL=user.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/user.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { ReadableAtom } from 'nanostores'\nimport { Users } from '@streamlayer/sl-eslib/users/users_connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { Transport } from '../transport'\n\nconst [createFetcherStore] = nanoquery()\n\n// user query\n// cache user\n// invalidate token\n// login\n// save token\n// called on update user key\nexport const $user = (
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/user.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { 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\nconst [createFetcherStore, createMutatorStore] = nanoquery()\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 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 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 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":["nanoquery","Users","Client","createFetcherStore","createMutatorStore","$user","$userToken","transport","queryKey","client","createPromiseClient","method","params","fetcher","me","$bypassLogin","queryKeyStr","data","userKey","schema","init","getCacheUpdater","updateCache","user","bypassAuth","$userSettings","get","attributes","register","phone","id"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAE7C,SAASC,KAAK,QAAQ,4CAA2C;AAEjE,SAASC,MAAM,QAAQ,0DAAyD;AAKhF,MAAM,CAACC,oBAAoBC,mBAAmB,GAAGJ;AAEjD,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,QAAQ;AACR,aAAa;AACb,4BAA4B;AAC5B,OAAO,MAAMK,QAAQ,CAACC,YAAkCC;IACtD,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACT,OAAO;QAAEU,QAAQ;QAAMC,QAAQ;YAACN;SAAW;IAAC;IAEvG,OAAOH,mBAAmBK,UAAU;QAClCK,SAAS,IAAMJ,OAAOK,EAAE,CAAC,CAAC;IAC5B;AACF,EAAC;AAED,OAAO,MAAMC,eAAe,CAACR;IAC3B,MAAM,EAAEE,MAAM,EAAEO,WAAW,EAAE,GAAGT,UAAUG,mBAAmB,CAACT,OAAO;QAAEU,QAAQ;IAAa;IAE5F,OAAOP,mBACL,OAAO,EAAEa,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAE,EAAEC,eAAe,EAAE;QACzD,MAAM,CAACC,YAAY,GAAGD,gBAAgBL;QACtC,MAAMO,OAAO,MAAMd,OAAOe,UAAU,CAAC;YAAEN;YAASC;YAAQC;QAAK;QAE7DE,YAAYC;QAEZ,OAAOA;IACT;AAEJ,EAAC;AAED,OAAO,MAAMC,aAAa,CAACjB,WAAsBK;IAC/C,MAAM,EAAEH,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACT,OAAO;QAAEU,QAAQ;IAAa;IAE/E,OAAOF,OAAOe,UAAU,CAACZ;AAC3B,EAAC;AAED,OAAO,MAAMa,gBAAgB,CAC3BnB,YACAC;IAEA,MAAM,EAAEE,MAAM,EAAED,QAAQ,EAAE,GAAGD,UAAUG,mBAAmB,CAACR,QAAQ;QAAES,QAAQ;QAAOC,QAAQ;YAACN;SAAW;IAAC;IAEzG,OAAOH,mBAAmBK,UAAU;QAClCK,SAAS;YACP,MAAMI,OAAO,MAAMR,OAAOiB,GAAG,CAAC,CAAC;YAE/B,OAAOT,KAAKA,IAAI,EAAEU;QACpB;IACF;AACF,EAAC;AAED,OAAO,MAAMC,WAAW,CAACrB,WAAsBsB;IAC7C,MAAM,EAAEpB,MAAM,EAAE,GAAGF,UAAUG,mBAAmB,CAACT,OAAO;QAAEU,QAAQ;IAAW;IAE7E,OAAOF,OAAOmB,QAAQ,CAAC;QAAEE,IAAID;IAAM;AACrC,EAAC"}
|
package/src/grpc/transport.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createRouterTransport, ConnectRouter } from
|
|
1
|
+
import { createRouterTransport, ConnectRouter } from '@connectrpc/connect';
|
|
2
2
|
import { Interceptor, PromiseClient, UnaryRequest, StreamRequest } from '@bufbuild/connect';
|
|
3
3
|
import type { ServiceType } from '@bufbuild/protobuf';
|
|
4
4
|
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
@@ -33,6 +33,7 @@ export declare class Transport {
|
|
|
33
33
|
}) => {
|
|
34
34
|
client: PromiseClient<T>;
|
|
35
35
|
queryKey: ((string | number) | import("nanostores").ReadableAtom<void | (string | number)>)[];
|
|
36
|
+
queryKeyStr: string;
|
|
36
37
|
};
|
|
37
38
|
setSdkKey: (sdkKey: string) => void;
|
|
38
39
|
setAuth: (token: string) => void;
|
package/src/grpc/transport.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
-
import { createRouterTransport } from
|
|
2
|
+
import { createRouterTransport } from '@connectrpc/connect';
|
|
3
3
|
import { createPromiseClient } from '@bufbuild/connect';
|
|
4
4
|
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
5
5
|
const initialStore = {
|
|
@@ -37,7 +37,8 @@ const initialStore = {
|
|
|
37
37
|
];
|
|
38
38
|
return {
|
|
39
39
|
client,
|
|
40
|
-
queryKey
|
|
40
|
+
queryKey,
|
|
41
|
+
queryKeyStr: queryKey.toString()
|
|
41
42
|
};
|
|
42
43
|
};
|
|
43
44
|
this.setSdkKey = (sdkKey)=>{
|
|
@@ -84,7 +85,7 @@ const initialStore = {
|
|
|
84
85
|
this.initInterceptors();
|
|
85
86
|
this.clients = new Map();
|
|
86
87
|
this.transport = createGrpcWebTransport({
|
|
87
|
-
baseUrl: process.env.
|
|
88
|
+
baseUrl: process.env.NX_GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',
|
|
88
89
|
interceptors: this.interceptors,
|
|
89
90
|
useBinaryFormat: true
|
|
90
91
|
});
|
|
@@ -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
|
|
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\nconst initialStore: KnownHeaders = {\n sdk: process.env.SDK_KEY,\n}\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}\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 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(initialStore))\n this.initInterceptors()\n this.clients = new Map()\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","initialStore","sdk","process","env","SDK_KEY","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","baseUrl","NX_GRPC_HOST","useBinaryFormat","MockTransport","calls"],"mappings":"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"}
|
|
@@ -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'
|
|
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.skip('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","skip","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,SAASC,IAAI,CAAC,aAAa;IACzB,IAAIC;IAEJC,UAAU;QACR,MAAMC,OAAO,CAAC,EAAEC,OAAO,EAAE;YACvBA,QAAQP,QAAQ;gBACdQ,OAAO,IAAO,CAAA;wBAAEC,QAAQ;oBAAE,CAAA;YAC5B;QACF;QAEAL,YAAY,IAAIH,cAAcK;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,CAACnC,QAAQ;YAAEoC,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,CAACnC,QAAQ;YAAEoC,QAAQ;QAAQ;QAE7GzB,OAAOsB,WAAWI;QAClB1B,OAAOuB,aAAaI;IACtB;IAEA5B,GAAG,qCAAqC;QACtC,MAAM,EAAEuB,MAAM,EAAE,GAAG7B,UAAU+B,mBAAmB,CAACnC,QAAQ;YAAEoC,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"}
|
package/src/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../packages/sdk-web-api/src/index.test.ts"],"sourcesContent":["describe('My Test Suite', () => {\n it('should pass this test', () => {\n expect(true)\n })
|
|
1
|
+
{"version":3,"sources":["../../../../packages/sdk-web-api/src/index.test.ts"],"sourcesContent":["describe('My Test Suite', () => {\n it('should pass this test', () => {\n expect(true)\n })\n})\n"],"names":["describe","it","expect"],"mappings":"AAAAA,SAAS,iBAAiB;IACxBC,GAAG,yBAAyB;QAC1BC,OAAO;IACT;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/sdk-web-api/src/utils/grpc-stub.ts"],"sourcesContent":["import { Transport as BufTransport, UnaryResponse } from '@bufbuild/connect'\nimport type { AnyMessage, Message } from
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/sdk-web-api/src/utils/grpc-stub.ts"],"sourcesContent":["import { Transport as BufTransport, UnaryResponse } from '@bufbuild/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"}
|