@streamlayer/sdk-web-api 0.1.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/README.md +7 -0
- package/package.json +23 -0
- package/src/grpc/queries/event.d.ts +5 -0
- package/src/grpc/queries/event.js +45 -0
- package/src/grpc/queries/event.js.map +1 -0
- package/src/grpc/queries/index.d.ts +3 -0
- package/src/grpc/queries/index.js +5 -0
- package/src/grpc/queries/index.js.map +1 -0
- package/src/grpc/queries/organization.d.ts +4 -0
- package/src/grpc/queries/organization.js +35 -0
- package/src/grpc/queries/organization.js.map +1 -0
- package/src/grpc/queries/user.d.ts +9 -0
- package/src/grpc/queries/user.js +61 -0
- package/src/grpc/queries/user.js.map +1 -0
- package/src/grpc/transport.d.ts +29 -0
- package/src/grpc/transport.js +65 -0
- package/src/grpc/transport.js.map +1 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +4 -0
- package/src/index.js.map +1 -0
package/README.md
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@streamlayer/sdk-web-api",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"typings": "./src/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"src/"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"comp": "tsc --showConfig"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@bufbuild/connect": "*",
|
|
15
|
+
"@bufbuild/connect-web": "*",
|
|
16
|
+
"@nanostores/query": "*",
|
|
17
|
+
"@streamlayer/sdk-web-interfaces": "*",
|
|
18
|
+
"@streamlayer/sl-eslib": "*",
|
|
19
|
+
"@swc/helpers": "*",
|
|
20
|
+
"nanostores": "*"
|
|
21
|
+
},
|
|
22
|
+
"module": "./src/index.js"
|
|
23
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ReadableAtom } from 'nanostores';
|
|
2
|
+
import { GrpcTransport } from '../transport';
|
|
3
|
+
export { $user } from './user';
|
|
4
|
+
export declare const $retrieveEventId: ($providerStreamId: ReadableAtom<string>, transport: GrpcTransport) => import("@nanostores/query").FetcherStore<string, any>;
|
|
5
|
+
export declare const $streamSettings: (slStreamId: string, transport: GrpcTransport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").StreamSettings, any>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { nanoquery } from '@nanostores/query';
|
|
2
|
+
import { createPromiseClient } from '@bufbuild/connect';
|
|
3
|
+
import { Events } from '@streamlayer/sl-eslib/sports/events/events_connect';
|
|
4
|
+
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
5
|
+
export { $user } from './user';
|
|
6
|
+
const [createFetcherStore] = nanoquery();
|
|
7
|
+
export const $retrieveEventId = ($providerStreamId, transport)=>{
|
|
8
|
+
const eventsClient = createPromiseClient(Events, transport);
|
|
9
|
+
const methodName = Events.methods.retrieveEventId.name;
|
|
10
|
+
const queryKey = [
|
|
11
|
+
Events.typeName,
|
|
12
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1),
|
|
13
|
+
$providerStreamId
|
|
14
|
+
];
|
|
15
|
+
return createFetcherStore(queryKey, {
|
|
16
|
+
fetcher: async (_, __, id)=>{
|
|
17
|
+
if (!id) {
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
const res = await eventsClient.retrieveEventId({
|
|
21
|
+
id
|
|
22
|
+
});
|
|
23
|
+
return res.data?.id || '';
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
export const $streamSettings = (slStreamId, transport)=>{
|
|
28
|
+
const sdkSettingsClient = createPromiseClient(Client, transport);
|
|
29
|
+
const methodName = Client.methods.getStream.name;
|
|
30
|
+
const queryKey = [
|
|
31
|
+
Client.typeName,
|
|
32
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1),
|
|
33
|
+
slStreamId
|
|
34
|
+
];
|
|
35
|
+
return createFetcherStore(queryKey, {
|
|
36
|
+
fetcher: async (_, __, id)=>{
|
|
37
|
+
const res = await sdkSettingsClient.getStream({
|
|
38
|
+
id
|
|
39
|
+
});
|
|
40
|
+
return res.data?.attributes;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=event.js.map
|
|
@@ -0,0 +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 { createPromiseClient } from '@bufbuild/connect'\nimport { Events } from '@streamlayer/sl-eslib/sports/events/events_connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { GrpcTransport } from '../transport'\n\nexport { $user } from './user'\n\nconst [createFetcherStore] = nanoquery()\n\nexport const $retrieveEventId = (\n $providerStreamId: ReadableAtom<string>,\n transport: GrpcTransport\n) => {\n const eventsClient = createPromiseClient(Events, transport)\n\n const methodName = Events.methods.retrieveEventId.name\n const queryKey = [\n Events.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n $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 eventsClient.retrieveEventId({\n id,\n })\n\n return res.data?.id as unknown as string || ''\n },\n })\n}\n\nexport const $streamSettings = (\n slStreamId: string,\n transport: GrpcTransport\n) => {\n const sdkSettingsClient = createPromiseClient(Client, transport)\n\n const methodName = Client.methods.getStream.name\n const queryKey = [\n Client.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n slStreamId,\n ]\n\n return createFetcherStore(queryKey, {\n fetcher: async (_: string, __: string, id: string) => {\n const res = await sdkSettingsClient.getStream({\n id,\n })\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["nanoquery","createPromiseClient","Events","Client","$user","createFetcherStore","$retrieveEventId","$providerStreamId","transport","eventsClient","methodName","methods","retrieveEventId","name","queryKey","typeName","charAt","toLowerCase","slice","fetcher","_","__","id","res","data","$streamSettings","slStreamId","sdkSettingsClient","getStream","attributes"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAE7C,SAASC,mBAAmB,QAAQ,oBAAmB;AACvD,SAASC,MAAM,QAAQ,qDAAoD;AAC3E,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,MAAM,CAACC,mBAAmB,GAAGL;AAE7B,OAAO,MAAMM,mBAAmB,CAC9BC,mBACAC;IAEA,MAAMC,eAAeR,oBAAoBC,QAAQM;IAEjD,MAAME,aAAaR,OAAOS,OAAO,CAACC,eAAe,CAACC,IAAI;IACtD,MAAMC,WAAW;QACfZ,OAAOa,QAAQ;QACfL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;QACtDX;KACD;IAED,OAAOF,mBAAmBS,UAAU;QAClCK,SAAS,OAAOC,GAAWC,IAAYC;YACrC,IAAI,CAACA,IAAI;gBACP,OAAO;YACT;YAEA,MAAMC,MAAM,MAAMd,aAAaG,eAAe,CAAC;gBAC7CU;YACF;YAEA,OAAOC,IAAIC,IAAI,EAAEF,MAA2B;QAC9C;IACF;AACF,EAAC;AAED,OAAO,MAAMG,kBAAkB,CAC7BC,YACAlB;IAEA,MAAMmB,oBAAoB1B,oBAAoBE,QAAQK;IAEtD,MAAME,aAAaP,OAAOQ,OAAO,CAACiB,SAAS,CAACf,IAAI;IAChD,MAAMC,WAAW;QACfX,OAAOY,QAAQ;QACfL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;QACtDQ;KACD;IAED,OAAOrB,mBAAmBS,UAAU;QAClCK,SAAS,OAAOC,GAAWC,IAAYC;YACrC,MAAMC,MAAM,MAAMI,kBAAkBC,SAAS,CAAC;gBAC5CN;YACF;YAEA,OAAOC,IAAIC,IAAI,EAAEK;QACnB;IACF;AACF,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/index.ts"],"sourcesContent":["export * from './event'\nexport * from './organization'\nexport * from './user'\n"],"names":[],"mappings":"AAAA,cAAc,UAAS;AACvB,cAAc,iBAAgB;AAC9B,cAAc,SAAQ"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { GrpcTransport } from '../transport';
|
|
2
|
+
export { $user } from './user';
|
|
3
|
+
export declare const $organizationSettings: (transport: GrpcTransport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").OrganizationSettings, any>;
|
|
4
|
+
export declare const $organizationAdvertising: (transport: GrpcTransport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/sdkSettings.common_pb").Advertising, any>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { nanoquery } from '@nanostores/query';
|
|
2
|
+
import { createPromiseClient } from '@bufbuild/connect';
|
|
3
|
+
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
4
|
+
export { $user } from './user';
|
|
5
|
+
const [createFetcherStore] = nanoquery();
|
|
6
|
+
export const $organizationSettings = (transport)=>{
|
|
7
|
+
const sdkSettingsClient = createPromiseClient(Client, transport);
|
|
8
|
+
const methodName = Client.methods.getOrganization.name;
|
|
9
|
+
const queryKey = [
|
|
10
|
+
Client.typeName,
|
|
11
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1)
|
|
12
|
+
];
|
|
13
|
+
return createFetcherStore(queryKey, {
|
|
14
|
+
fetcher: async ()=>{
|
|
15
|
+
const res = await sdkSettingsClient.getOrganization({});
|
|
16
|
+
return res.data?.attributes;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
export const $organizationAdvertising = (transport)=>{
|
|
21
|
+
const sdkSettingsClient = createPromiseClient(Client, transport);
|
|
22
|
+
const methodName = Client.methods.getOrganizationAdvertising.name;
|
|
23
|
+
const queryKey = [
|
|
24
|
+
Client.typeName,
|
|
25
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1)
|
|
26
|
+
];
|
|
27
|
+
return createFetcherStore(queryKey, {
|
|
28
|
+
fetcher: async ()=>{
|
|
29
|
+
const res = await sdkSettingsClient.getOrganizationAdvertising({});
|
|
30
|
+
return res.data?.attributes;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=organization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/sdk-web-api/src/grpc/queries/organization.ts"],"sourcesContent":["import { nanoquery } from '@nanostores/query'\nimport { createPromiseClient } from '@bufbuild/connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { GrpcTransport } from '../transport'\n\nexport { $user } from './user'\n\nconst [createFetcherStore] = nanoquery()\n\nexport const $organizationSettings = (transport: GrpcTransport) => {\n const sdkSettingsClient = createPromiseClient(Client, transport)\n\n const methodName = Client.methods.getOrganization.name\n const queryKey = [\n Client.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n ]\n\n return createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await sdkSettingsClient.getOrganization({})\n\n return res.data?.attributes\n },\n })\n}\n\nexport const $organizationAdvertising = (transport: GrpcTransport) => {\n const sdkSettingsClient = createPromiseClient(Client, transport)\n\n const methodName = Client.methods.getOrganizationAdvertising.name\n const queryKey = [\n Client.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n ]\n\n return createFetcherStore(queryKey, {\n fetcher: async () => {\n const res = await sdkSettingsClient.getOrganizationAdvertising({})\n\n return res.data?.attributes\n },\n })\n}\n"],"names":["nanoquery","createPromiseClient","Client","$user","createFetcherStore","$organizationSettings","transport","sdkSettingsClient","methodName","methods","getOrganization","name","queryKey","typeName","charAt","toLowerCase","slice","fetcher","res","data","attributes","$organizationAdvertising","getOrganizationAdvertising"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAC7C,SAASC,mBAAmB,QAAQ,oBAAmB;AACvD,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,SAASC,KAAK,QAAQ,SAAQ;AAE9B,MAAM,CAACC,mBAAmB,GAAGJ;AAE7B,OAAO,MAAMK,wBAAwB,CAACC;IACpC,MAAMC,oBAAoBN,oBAAoBC,QAAQI;IAEtD,MAAME,aAAaN,OAAOO,OAAO,CAACC,eAAe,CAACC,IAAI;IACtD,MAAMC,WAAW;QACfV,OAAOW,QAAQ;QACfL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;KACvD;IAED,OAAOZ,mBAAmBQ,UAAU;QAClCK,SAAS;YACP,MAAMC,MAAM,MAAMX,kBAAkBG,eAAe,CAAC,CAAC;YAErD,OAAOQ,IAAIC,IAAI,EAAEC;QACnB;IACF;AACF,EAAC;AAED,OAAO,MAAMC,2BAA2B,CAACf;IACvC,MAAMC,oBAAoBN,oBAAoBC,QAAQI;IAEtD,MAAME,aAAaN,OAAOO,OAAO,CAACa,0BAA0B,CAACX,IAAI;IACjE,MAAMC,WAAW;QACfV,OAAOW,QAAQ;QACfL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;KACvD;IAED,OAAOZ,mBAAmBQ,UAAU;QAClCK,SAAS;YACP,MAAMC,MAAM,MAAMX,kBAAkBe,0BAA0B,CAAC,CAAC;YAEhE,OAAOJ,IAAIC,IAAI,EAAEC;QACnB;IACF;AACF,EAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReadableAtom } from 'nanostores';
|
|
2
|
+
import { GrpcTransport } from '../transport';
|
|
3
|
+
export declare const $user: ($userKey: ReadableAtom<string>, $userToken: ReadableAtom<string>, transport: GrpcTransport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/users/users_pb").BypassAuthResponse | {
|
|
4
|
+
meta: {
|
|
5
|
+
jwt: string;
|
|
6
|
+
};
|
|
7
|
+
data?: import("@streamlayer/sl-eslib/users/users_common_pb").User;
|
|
8
|
+
}, any>;
|
|
9
|
+
export declare const $userSettings: ($userToken: ReadableAtom<string>, transport: GrpcTransport) => import("@nanostores/query").FetcherStore<import("@streamlayer/sl-eslib/sdkSettings/client/client_pb").ClientSettings, any>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { nanoquery } from '@nanostores/query';
|
|
2
|
+
import { createPromiseClient } from '@bufbuild/connect';
|
|
3
|
+
import { Users } from '@streamlayer/sl-eslib/users/users_connect';
|
|
4
|
+
import { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect';
|
|
5
|
+
const [createFetcherStore] = nanoquery();
|
|
6
|
+
// user query
|
|
7
|
+
// cache user
|
|
8
|
+
// invalidate token
|
|
9
|
+
// login
|
|
10
|
+
// save token
|
|
11
|
+
// called on update user key
|
|
12
|
+
export const $user = ($userKey, $userToken, transport)=>{
|
|
13
|
+
const usersClient = createPromiseClient(Users, transport);
|
|
14
|
+
const methodName = Users.methods.bypassAuth.name;
|
|
15
|
+
const queryKey = [
|
|
16
|
+
Users.typeName,
|
|
17
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1),
|
|
18
|
+
$userKey
|
|
19
|
+
];
|
|
20
|
+
return createFetcherStore(queryKey, {
|
|
21
|
+
fetcher: async (_, __, userKey)=>{
|
|
22
|
+
// if user token exist, try to validate and refresh user data
|
|
23
|
+
// otherwise clear invalid login token
|
|
24
|
+
// and relogin
|
|
25
|
+
if ($userToken.get()) {
|
|
26
|
+
try {
|
|
27
|
+
const response = await usersClient.me({});
|
|
28
|
+
return {
|
|
29
|
+
...response,
|
|
30
|
+
meta: {
|
|
31
|
+
jwt: $userToken.get()
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.log('invalid token, relogin...');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return usersClient.bypassAuth({
|
|
39
|
+
userKey,
|
|
40
|
+
schema: 'streamlayer'
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
export const $userSettings = ($userToken, transport)=>{
|
|
46
|
+
const sdkSettingsClient = createPromiseClient(Client, transport);
|
|
47
|
+
const methodName = Client.methods.get.name;
|
|
48
|
+
const queryKey = [
|
|
49
|
+
Client.typeName,
|
|
50
|
+
methodName.charAt(0).toLowerCase() + methodName.slice(1),
|
|
51
|
+
$userToken
|
|
52
|
+
];
|
|
53
|
+
return createFetcherStore(queryKey, {
|
|
54
|
+
fetcher: async ()=>{
|
|
55
|
+
const data = await sdkSettingsClient.get({});
|
|
56
|
+
return data.data?.attributes;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +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 { createPromiseClient } from '@bufbuild/connect'\nimport { Users } from '@streamlayer/sl-eslib/users/users_connect'\nimport { Client } from '@streamlayer/sl-eslib/sdkSettings/client/client_connect'\n\nimport { GrpcTransport } 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 = (\n $userKey: ReadableAtom<string>, // user key from host\n $userToken: ReadableAtom<string>, // sl user token\n transport: GrpcTransport\n) => {\n const usersClient = createPromiseClient(Users, transport)\n\n const methodName = Users.methods.bypassAuth.name\n const queryKey = [\n Users.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n $userKey,\n ]\n\n return createFetcherStore(queryKey, {\n fetcher: async (_, __, userKey: string) => {\n // if user token exist, try to validate and refresh user data\n // otherwise clear invalid login token\n // and relogin\n if ($userToken.get()) {\n try {\n const response = await usersClient.me({})\n\n return {\n ...response,\n meta: {\n jwt: $userToken.get(),\n },\n }\n } catch (err) {\n console.log('invalid token, relogin...')\n }\n }\n\n return usersClient.bypassAuth({\n userKey,\n schema: 'streamlayer',\n })\n },\n })\n}\n\nexport const $userSettings = (\n $userToken: ReadableAtom<string>, // sl user token\n transport: GrpcTransport\n) => {\n const sdkSettingsClient = createPromiseClient(Client, transport)\n\n const methodName = Client.methods.get.name\n const queryKey = [\n Client.typeName,\n methodName.charAt(0).toLowerCase() + methodName.slice(1),\n $userToken,\n ]\n\n return createFetcherStore(queryKey, {\n fetcher: async () => {\n const data = await sdkSettingsClient.get({})\n\n return data.data?.attributes\n },\n })\n}\n"],"names":["nanoquery","createPromiseClient","Users","Client","createFetcherStore","$user","$userKey","$userToken","transport","usersClient","methodName","methods","bypassAuth","name","queryKey","typeName","charAt","toLowerCase","slice","fetcher","_","__","userKey","get","response","me","meta","jwt","err","console","log","schema","$userSettings","sdkSettingsClient","data","attributes"],"mappings":"AAAA,SAASA,SAAS,QAAQ,oBAAmB;AAE7C,SAASC,mBAAmB,QAAQ,oBAAmB;AACvD,SAASC,KAAK,QAAQ,4CAA2C;AACjE,SAASC,MAAM,QAAQ,0DAAyD;AAIhF,MAAM,CAACC,mBAAmB,GAAGJ;AAE7B,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,QAAQ;AACR,aAAa;AACb,4BAA4B;AAC5B,OAAO,MAAMK,QAAQ,CACnBC,UACAC,YACAC;IAEA,MAAMC,cAAcR,oBAAoBC,OAAOM;IAE/C,MAAME,aAAaR,MAAMS,OAAO,CAACC,UAAU,CAACC,IAAI;IAChD,MAAMC,WAAW;QACfZ,MAAMa,QAAQ;QACdL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;QACtDZ;KACD;IAED,OAAOF,mBAAmBU,UAAU;QAClCK,SAAS,OAAOC,GAAGC,IAAIC;YACrB,6DAA6D;YAC7D,sCAAsC;YACtC,cAAc;YACd,IAAIf,WAAWgB,GAAG,IAAI;gBACpB,IAAI;oBACF,MAAMC,WAAW,MAAMf,YAAYgB,EAAE,CAAC,CAAC;oBAEvC,OAAO;wBACL,GAAGD,QAAQ;wBACXE,MAAM;4BACJC,KAAKpB,WAAWgB,GAAG;wBACrB;oBACF;gBACF,EAAE,OAAOK,KAAK;oBACZC,QAAQC,GAAG,CAAC;gBACd;YACF;YAEA,OAAOrB,YAAYG,UAAU,CAAC;gBAC5BU;gBACAS,QAAQ;YACV;QACF;IACF;AACF,EAAC;AAED,OAAO,MAAMC,gBAAgB,CAC3BzB,YACAC;IAEA,MAAMyB,oBAAoBhC,oBAAoBE,QAAQK;IAEtD,MAAME,aAAaP,OAAOQ,OAAO,CAACY,GAAG,CAACV,IAAI;IAC1C,MAAMC,WAAW;QACfX,OAAOY,QAAQ;QACfL,WAAWM,MAAM,CAAC,GAAGC,WAAW,KAAKP,WAAWQ,KAAK,CAAC;QACtDX;KACD;IAED,OAAOH,mBAAmBU,UAAU;QAClCK,SAAS;YACP,MAAMe,OAAO,MAAMD,kBAAkBV,GAAG,CAAC,CAAC;YAE1C,OAAOW,KAAKA,IAAI,EAAEC;QACpB;IACF;AACF,EAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Interceptor } from '@bufbuild/connect';
|
|
2
|
+
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
3
|
+
type KnownHeaders = {
|
|
4
|
+
authorization?: string;
|
|
5
|
+
sdk?: string;
|
|
6
|
+
} & Record<string, string>;
|
|
7
|
+
export type GrpcTransport = Transport['transport'];
|
|
8
|
+
type ReservedHeaders = 'sdk' | 'authorization';
|
|
9
|
+
type ExcludeReservedHeaders<T> = ReservedHeaders extends T ? never : T & T extends ReservedHeaders ? never : T;
|
|
10
|
+
declare global {
|
|
11
|
+
interface Window {
|
|
12
|
+
__GRPC_DEVTOOLS_EXTENSION__?: () => import('@bufbuild/connect').Interceptor;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export declare class Transport {
|
|
16
|
+
readonly transport: ReturnType<typeof createGrpcWebTransport>;
|
|
17
|
+
private interceptors;
|
|
18
|
+
private readonly $headers;
|
|
19
|
+
constructor();
|
|
20
|
+
registerInterceptor: (interceptor: Interceptor) => void;
|
|
21
|
+
removeInterceptor: (interceptor: Interceptor) => void;
|
|
22
|
+
setSdkKey: (sdkKey: string) => void;
|
|
23
|
+
setAuth: (token: string) => void;
|
|
24
|
+
setHeader: <T extends string = string>(name: ExcludeReservedHeaders<T>, value: string) => void;
|
|
25
|
+
getHeader: (name: keyof KnownHeaders) => string;
|
|
26
|
+
getHeaders: () => KnownHeaders;
|
|
27
|
+
initInterceptors: () => void;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
+
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
3
|
+
const initialStore = {
|
|
4
|
+
sdk: process.env.SDK_KEY || '32033290f908e5630519b4b5ad2f4a9ef9c1722d20ea50b3047536d62be9ef25'
|
|
5
|
+
};
|
|
6
|
+
export class Transport {
|
|
7
|
+
constructor(){
|
|
8
|
+
this.interceptors = new Set();
|
|
9
|
+
this.registerInterceptor = (interceptor)=>{
|
|
10
|
+
this.interceptors.add(interceptor);
|
|
11
|
+
};
|
|
12
|
+
this.removeInterceptor = (interceptor)=>{
|
|
13
|
+
this.interceptors.delete(interceptor);
|
|
14
|
+
};
|
|
15
|
+
this.setSdkKey = (sdkKey)=>{
|
|
16
|
+
this.$headers.setValue('sdk', sdkKey);
|
|
17
|
+
};
|
|
18
|
+
this.setAuth = (token)=>{
|
|
19
|
+
this.$headers.setValue('authorization', token);
|
|
20
|
+
};
|
|
21
|
+
this.setHeader = (name, value)=>this.$headers.setValue(name, value);
|
|
22
|
+
this.getHeader = (name)=>this.$headers.getValue(name);
|
|
23
|
+
this.getHeaders = ()=>this.$headers.getValues();
|
|
24
|
+
this.initInterceptors = ()=>{
|
|
25
|
+
if (this.interceptors.size !== 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const auth = (next)=>async (req)=>{
|
|
29
|
+
const headers = this.$headers.getValues();
|
|
30
|
+
for(const header in headers){
|
|
31
|
+
req.header.set(header, headers[header]);
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
return await next(req);
|
|
35
|
+
} catch (err) {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.log('catch err') // logout and something like this
|
|
38
|
+
;
|
|
39
|
+
throw err;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
this.interceptors.add(auth);
|
|
43
|
+
if (window.__GRPC_DEVTOOLS_EXTENSION__) {
|
|
44
|
+
this.interceptors.add(window.__GRPC_DEVTOOLS_EXTENSION__());
|
|
45
|
+
} else {
|
|
46
|
+
window.addEventListener('grpc_devtools_loaded', ()=>{
|
|
47
|
+
if (window.__GRPC_DEVTOOLS_EXTENSION__) {
|
|
48
|
+
this.interceptors.add(window.__GRPC_DEVTOOLS_EXTENSION__());
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
this.$headers = new MapStore(createMapStore(initialStore));
|
|
54
|
+
this.initInterceptors();
|
|
55
|
+
this.transport = createGrpcWebTransport({
|
|
56
|
+
baseUrl: process.env.GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',
|
|
57
|
+
interceptors: [
|
|
58
|
+
...this.interceptors.values()
|
|
59
|
+
],
|
|
60
|
+
useBinaryFormat: true
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/sdk-web-api/src/grpc/transport.ts"],"sourcesContent":["import { MapStore, createMapStore } from '@streamlayer/sdk-web-interfaces'\n\nimport { Interceptor } from '@bufbuild/connect'\nimport { createGrpcWebTransport } from '@bufbuild/connect-web'\n\ntype KnownHeaders = {\n authorization?: string\n sdk?: string\n} & Record<string, string>\n\nconst initialStore: KnownHeaders = {\n sdk:\n process.env.SDK_KEY ||\n '32033290f908e5630519b4b5ad2f4a9ef9c1722d20ea50b3047536d62be9ef25',\n}\n\nexport type GrpcTransport = Transport['transport']\n\ntype ReservedHeaders = 'sdk' | 'authorization'\ntype ExcludeReservedHeaders<T> = ReservedHeaders extends T\n ? never\n : T & T extends ReservedHeaders\n ? never\n : T\n\ndeclare global {\n interface Window {\n __GRPC_DEVTOOLS_EXTENSION__?: () => import('@bufbuild/connect').Interceptor\n }\n}\n\nexport class Transport {\n public readonly transport: ReturnType<typeof createGrpcWebTransport>\n private interceptors: Set<Interceptor> = new Set()\n private readonly $headers: MapStore<KnownHeaders>\n\n constructor() {\n this.$headers = new MapStore<KnownHeaders>(createMapStore(initialStore))\n this.initInterceptors()\n\n this.transport = createGrpcWebTransport({\n baseUrl:\n process.env.GRPC_HOST || 'https://grpc-web.next.streamlayer.io:443',\n interceptors: [...this.interceptors.values()],\n useBinaryFormat: true,\n })\n }\n\n registerInterceptor = (interceptor: Interceptor) => {\n this.interceptors.add(interceptor)\n }\n\n removeInterceptor = (interceptor: Interceptor) => {\n this.interceptors.delete(interceptor)\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>(\n name: ExcludeReservedHeaders<T>,\n 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.size !== 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\n try {\n return await next(req)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('catch err') // logout and something like this\n\n throw err\n }\n }\n\n this.interceptors.add(auth)\n\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.add(window.__GRPC_DEVTOOLS_EXTENSION__())\n } else {\n window.addEventListener('grpc_devtools_loaded', () => {\n if (window.__GRPC_DEVTOOLS_EXTENSION__) {\n this.interceptors.add(window.__GRPC_DEVTOOLS_EXTENSION__())\n }\n })\n }\n }\n}\n"],"names":["MapStore","createMapStore","createGrpcWebTransport","initialStore","sdk","process","env","SDK_KEY","Transport","constructor","interceptors","Set","registerInterceptor","interceptor","add","removeInterceptor","delete","setSdkKey","sdkKey","$headers","setValue","setAuth","token","setHeader","name","value","getHeader","getValue","getHeaders","getValues","initInterceptors","size","auth","next","req","headers","header","set","err","console","log","window","__GRPC_DEVTOOLS_EXTENSION__","addEventListener","transport","baseUrl","GRPC_HOST","values","useBinaryFormat"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,cAAc,QAAQ,kCAAiC;AAG1E,SAASC,sBAAsB,QAAQ,wBAAuB;AAO9D,MAAMC,eAA6B;IACjCC,KACEC,QAAQC,GAAG,CAACC,OAAO,IACnB;AACJ;AAiBA,OAAO,MAAMC;IAKXC,aAAc;aAHNC,eAAiC,IAAIC;aAe7CC,sBAAsB,CAACC;YACrB,IAAI,CAACH,YAAY,CAACI,GAAG,CAACD;QACxB;aAEAE,oBAAoB,CAACF;YACnB,IAAI,CAACH,YAAY,CAACM,MAAM,CAACH;QAC3B;aAEAI,YAAY,CAACC;YACX,IAAI,CAACC,QAAQ,CAACC,QAAQ,CAAC,OAAOF;QAChC;aAEAG,UAAU,CAACC;YACT,IAAI,CAACH,QAAQ,CAACC,QAAQ,CAAC,iBAAiBE;QAC1C;aAEAC,YAAY,CACVC,MACAC,QACG,IAAI,CAACN,QAAQ,CAACC,QAAQ,CAASI,MAAMC;aAE1CC,YAAY,CAACF,OAA6B,IAAI,CAACL,QAAQ,CAACQ,QAAQ,CAACH;aAEjEI,aAAa,IAAM,IAAI,CAACT,QAAQ,CAACU,SAAS;aAE1CC,mBAAmB;YACjB,IAAI,IAAI,CAACpB,YAAY,CAACqB,IAAI,KAAK,GAAG;gBAChC;YACF;YAEA,MAAMC,OAAoB,CAACC,OAAS,OAAOC;oBACzC,MAAMC,UAAU,IAAI,CAAChB,QAAQ,CAACU,SAAS;oBAEvC,IAAK,MAAMO,UAAUD,QAAS;wBAC5BD,IAAIE,MAAM,CAACC,GAAG,CAACD,QAAQD,OAAO,CAACC,OAAO;oBACxC;oBAEA,IAAI;wBACF,OAAO,MAAMH,KAAKC;oBACpB,EAAE,OAAOI,KAAK;wBACZ,sCAAsC;wBACtCC,QAAQC,GAAG,CAAC,aAAa,iCAAiC;;wBAE1D,MAAMF;oBACR;gBACF;YAEA,IAAI,CAAC5B,YAAY,CAACI,GAAG,CAACkB;YAEtB,IAAIS,OAAOC,2BAA2B,EAAE;gBACtC,IAAI,CAAChC,YAAY,CAACI,GAAG,CAAC2B,OAAOC,2BAA2B;YAC1D,OAAO;gBACLD,OAAOE,gBAAgB,CAAC,wBAAwB;oBAC9C,IAAIF,OAAOC,2BAA2B,EAAE;wBACtC,IAAI,CAAChC,YAAY,CAACI,GAAG,CAAC2B,OAAOC,2BAA2B;oBAC1D;gBACF;YACF;QACF;QArEE,IAAI,CAACvB,QAAQ,GAAG,IAAInB,SAAuBC,eAAeE;QAC1D,IAAI,CAAC2B,gBAAgB;QAErB,IAAI,CAACc,SAAS,GAAG1C,uBAAuB;YACtC2C,SACExC,QAAQC,GAAG,CAACwC,SAAS,IAAI;YAC3BpC,cAAc;mBAAI,IAAI,CAACA,YAAY,CAACqC,MAAM;aAAG;YAC7CC,iBAAiB;QACnB;IACF;AA6DF"}
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +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"}
|