@amityco/ts-sdk 6.24.1 → 6.24.2-5a60993.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.
Files changed (95) hide show
  1. package/.env +26 -26
  2. package/dist/@types/core/events.d.ts +2 -0
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/model.d.ts +4 -2
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +2 -1
  7. package/dist/@types/core/payload.d.ts.map +1 -1
  8. package/dist/@types/domains/stream.d.ts +19 -3
  9. package/dist/@types/domains/stream.d.ts.map +1 -1
  10. package/dist/core/events.d.ts +3 -3
  11. package/dist/core/events.d.ts.map +1 -1
  12. package/dist/core/model/idResolvers.d.ts.map +1 -1
  13. package/dist/core/model/index.d.ts.map +1 -1
  14. package/dist/index.cjs.js +219 -146
  15. package/dist/index.esm.js +219 -146
  16. package/dist/index.umd.js +2 -2
  17. package/dist/reactionRepository/events/onReactionAdded.d.ts.map +1 -1
  18. package/dist/reactionRepository/events/onReactorAdded.d.ts.map +1 -1
  19. package/dist/reactionRepository/events/onReactorRemoved.d.ts.map +1 -1
  20. package/dist/streamRepository/api/createStream.d.ts +4 -4
  21. package/dist/streamRepository/api/createStream.d.ts.map +1 -1
  22. package/dist/streamRepository/api/deleteStream.d.ts +4 -4
  23. package/dist/streamRepository/api/deleteStream.d.ts.map +1 -1
  24. package/dist/streamRepository/api/disposeStream.d.ts +4 -4
  25. package/dist/streamRepository/api/disposeStream.d.ts.map +1 -1
  26. package/dist/streamRepository/api/queryStreams.d.ts +4 -4
  27. package/dist/streamRepository/api/queryStreams.d.ts.map +1 -1
  28. package/dist/streamRepository/api/updateStream.d.ts.map +1 -1
  29. package/dist/streamRepository/events/index.d.ts +2 -0
  30. package/dist/streamRepository/events/index.d.ts.map +1 -1
  31. package/dist/streamRepository/events/onStreamFlagged.d.ts +17 -0
  32. package/dist/streamRepository/events/onStreamFlagged.d.ts.map +1 -0
  33. package/dist/streamRepository/events/onStreamRecorded.d.ts +2 -2
  34. package/dist/streamRepository/events/onStreamRecorded.d.ts.map +1 -1
  35. package/dist/streamRepository/events/onStreamStarted.d.ts +2 -2
  36. package/dist/streamRepository/events/onStreamStarted.d.ts.map +1 -1
  37. package/dist/streamRepository/events/onStreamStopped.d.ts +2 -2
  38. package/dist/streamRepository/events/onStreamStopped.d.ts.map +1 -1
  39. package/dist/streamRepository/events/onStreamTerminated.d.ts +17 -0
  40. package/dist/streamRepository/events/onStreamTerminated.d.ts.map +1 -0
  41. package/dist/streamRepository/internalApi/queryStreams.d.ts +3 -3
  42. package/dist/streamRepository/internalApi/queryStreams.d.ts.map +1 -1
  43. package/dist/streamRepository/observers/getStreamById.d.ts +1 -0
  44. package/dist/streamRepository/observers/getStreamById.d.ts.map +1 -1
  45. package/dist/streamRepository/observers/getStreams/GetStreamsLiveCollectionController.d.ts +14 -0
  46. package/dist/streamRepository/observers/getStreams/GetStreamsLiveCollectionController.d.ts.map +1 -0
  47. package/dist/streamRepository/observers/getStreams/GetStreamsPageController.d.ts +14 -0
  48. package/dist/streamRepository/observers/getStreams/GetStreamsPageController.d.ts.map +1 -0
  49. package/dist/streamRepository/observers/getStreams/GetStreamsQueryStreamController.d.ts +15 -0
  50. package/dist/streamRepository/observers/getStreams/GetStreamsQueryStreamController.d.ts.map +1 -0
  51. package/dist/streamRepository/observers/getStreams/getStreams.d.ts +2 -0
  52. package/dist/streamRepository/observers/getStreams/getStreams.d.ts.map +1 -0
  53. package/dist/streamRepository/observers/getStreams/index.d.ts +2 -0
  54. package/dist/streamRepository/observers/getStreams/index.d.ts.map +1 -0
  55. package/dist/utils/linkedObject/index.d.ts +1 -0
  56. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  57. package/dist/utils/linkedObject/streamLinkedObject.d.ts +2 -0
  58. package/dist/utils/linkedObject/streamLinkedObject.d.ts.map +1 -0
  59. package/package.json +1 -1
  60. package/src/@types/core/events.ts +4 -0
  61. package/src/@types/core/model.ts +4 -2
  62. package/src/@types/core/payload.ts +2 -1
  63. package/src/@types/domains/stream.ts +23 -3
  64. package/src/core/model/idResolvers.ts +1 -0
  65. package/src/core/model/index.ts +1 -0
  66. package/src/reactionRepository/events/onReactionAdded.ts +0 -1
  67. package/src/reactionRepository/events/onReactorAdded.ts +7 -2
  68. package/src/reactionRepository/events/onReactorRemoved.ts +6 -1
  69. package/src/streamRepository/api/createStream.ts +8 -5
  70. package/src/streamRepository/api/deleteStream.ts +6 -4
  71. package/src/streamRepository/api/disposeStream.ts +5 -5
  72. package/src/streamRepository/api/queryStreams.ts +4 -4
  73. package/src/streamRepository/api/updateStream.ts +2 -1
  74. package/src/streamRepository/events/index.ts +2 -0
  75. package/src/streamRepository/events/onStreamFlagged.ts +37 -0
  76. package/src/streamRepository/events/onStreamRecorded.ts +4 -2
  77. package/src/streamRepository/events/onStreamStarted.ts +4 -2
  78. package/src/streamRepository/events/onStreamStopped.ts +4 -2
  79. package/src/streamRepository/events/onStreamTerminated.ts +37 -0
  80. package/src/streamRepository/internalApi/queryStreams.ts +3 -3
  81. package/src/streamRepository/observers/getStreamById.ts +18 -5
  82. package/src/streamRepository/observers/getStreams/GetStreamsLiveCollectionController.ts +114 -0
  83. package/src/streamRepository/observers/getStreams/GetStreamsPageController.ts +23 -0
  84. package/src/streamRepository/observers/getStreams/GetStreamsQueryStreamController.ts +83 -0
  85. package/src/streamRepository/observers/getStreams/getStreams.ts +32 -0
  86. package/src/streamRepository/observers/getStreams/index.ts +1 -0
  87. package/src/streamRepository/observers/tests/getStreamById.test.ts +1 -1
  88. package/src/utils/linkedObject/index.ts +2 -0
  89. package/src/utils/linkedObject/streamLinkedObject.ts +11 -0
  90. package/dist/streamRepository/api/getStreams.d.ts +0 -39
  91. package/dist/streamRepository/api/getStreams.d.ts.map +0 -1
  92. package/dist/streamRepository/observers/getStreams.d.ts +0 -17
  93. package/dist/streamRepository/observers/getStreams.d.ts.map +0 -1
  94. package/src/streamRepository/api/getStreams.ts +0 -81
  95. package/src/streamRepository/observers/getStreams.ts +0 -152
@@ -1 +0,0 @@
1
- {"version":3,"file":"getStreams.d.ts","sourceRoot":"","sources":["../../../src/streamRepository/observers/getStreams.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,WACb,MAAM,oBAAoB,YACxB,MAAM,sBAAsB,CAAC,MAAM,MAAM,CAAC,WAC3C,MAAM,oBAAoB,eA0GpC,CAAC"}
@@ -1,81 +0,0 @@
1
- import { getActiveClient } from '~/client/api';
2
-
3
- import { toPage, toToken } from '~/core/query';
4
- import { ingestInCache } from '~/cache/api/ingestInCache';
5
-
6
- /* begin_public_function
7
- id: stream.query
8
- */
9
- /**
10
- * ```js
11
- * import { getStreams } from '@amityco/ts-sdk'
12
- * const streams = await getStreams()
13
- * ```
14
- *
15
- * Queries a paginable list of {@link Amity.Stream} objects
16
- *
17
- * @param query The query parameters
18
- * @returns A page of {@link Amity.Stream} objects
19
- *
20
- * @category Stream API
21
- * @async
22
- */
23
- export const getStreams = async (query?: {
24
- isLive?: boolean;
25
- statuses?: Amity.StreamStatus[];
26
- userPublicIds?: Amity.InternalUser['userId'][];
27
- sortBy?: 'lastCreated' | 'firstCreated';
28
- isDeleted?: Amity.Stream['isDeleted'];
29
- page?: Amity.Page;
30
- }): Promise<Amity.Cached<Amity.Paged<Amity.Stream>>> => {
31
- const client = getActiveClient();
32
- client.log('stream/getStreams', query);
33
-
34
- const { page, ...params } = query ?? {};
35
-
36
- const { data } = await client.http.get<{ results: Amity.StreamPayload } & Amity.Pagination>(
37
- `/api/v3/video-streaming`,
38
- {
39
- params: {
40
- ...params,
41
- options: {
42
- token: toToken(page, 'skiplimit'),
43
- },
44
- },
45
- },
46
- );
47
-
48
- // API-FIX: backend to response Amity.Response: const { paging, videoStreamings } = unwrapPayload(data)
49
- // API-FIX: seems returned data has a results identifier on top of data, like no other apis, and this is beautiful
50
- const { paging, results: payload } = data;
51
- const { videoStreamings } = payload;
52
-
53
- const cachedAt = client.cache && Date.now();
54
- if (client.cache) ingestInCache(payload as Amity.StreamPayload, { cachedAt });
55
-
56
- const nextPage = toPage(paging.next);
57
- const prevPage = toPage(paging.previous);
58
-
59
- return { data: videoStreamings, cachedAt, prevPage, nextPage };
60
- };
61
- /* end_public_function */
62
-
63
- /**
64
- * ```js
65
- * import { getStreams } from '@amityco/ts-sdk'
66
- * const streams = getStreams.locally()
67
- * ```
68
- *
69
- * Queries a paginable list of {@link Amity.Stream} objects from cache
70
- *
71
- * @param query The query parameters
72
- * @returns streams
73
- *
74
- * @category Stream API
75
- */
76
- getStreams.locally = (query: Parameters<typeof getStreams>[0]) => {
77
- const client = getActiveClient();
78
- client.log('stream/getStreams.locally', query);
79
-
80
- // TODO
81
- };
@@ -1,152 +0,0 @@
1
- /* eslint-disable no-use-before-define */
2
- import { getResolver } from '~/core/model';
3
- import { pullFromCache, pushToCache } from '~/cache/api';
4
- import { getActiveClient } from '~/client/api';
5
-
6
- import {
7
- createQuery,
8
- filterByPropEquality,
9
- queryOptions,
10
- runQuery,
11
- sortByFirstCreated,
12
- sortByLastCreated,
13
- } from '~/core/query';
14
-
15
- import {
16
- COLLECTION_DEFAULT_CACHING_POLICY,
17
- COLLECTION_DEFAULT_PAGINATION_LIMIT,
18
- ENABLE_CACHE_MESSAGE,
19
- } from '~/utils/constants';
20
-
21
- import { queryStreams as _queryStreams } from '../internalApi/queryStreams';
22
- import { onStreamRecorded, onStreamStarted, onStreamStopped } from '../events';
23
-
24
- /* begin_public_function
25
- id: stream.query
26
- */
27
- /**
28
- * ```js
29
- * import { StreamRepository } from '@amityco/ts-sdk'
30
- * const streams = await StreamRepository.getStreams()
31
- * ```
32
- *
33
- * Observe all mutations on a list of {@link Amity.Stream}s
34
- *
35
- * @param params for querying streams
36
- * @param callback the function to call when new data are available
37
- * @param config
38
- * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the streams
39
- *
40
- * @category Stream Live Collection
41
- */
42
- export const getStreams = (
43
- params: Amity.StreamLiveCollection,
44
- callback: Amity.LiveCollectionCallback<Amity.Stream>,
45
- config?: Amity.LiveCollectionConfig,
46
- ) => {
47
- const { log, cache } = getActiveClient();
48
-
49
- if (!cache) {
50
- console.log(ENABLE_CACHE_MESSAGE);
51
- }
52
-
53
- const timestamp = Date.now();
54
- log(`getStreams(tmpid: ${timestamp}) > listen`);
55
-
56
- const { limit: queryLimit, ...queryParams } = params;
57
-
58
- const limit = queryLimit ?? COLLECTION_DEFAULT_PAGINATION_LIMIT;
59
- const { policy = COLLECTION_DEFAULT_CACHING_POLICY } = config ?? {};
60
-
61
- const disposers: Amity.Unsubscriber[] = [];
62
- const cacheKey = ['streams', 'collection', params];
63
-
64
- const applyFilter = (data: Amity.Stream[]): Amity.Stream[] => {
65
- let streams = filterByPropEquality(data, 'isDeleted', params.isDeleted);
66
-
67
- streams = streams.sort(
68
- params.sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated,
69
- );
70
-
71
- return streams;
72
- };
73
-
74
- const responder = (data: Amity.StreamLiveCollectionCache, isEventModel = false) => {
75
- const streams: Amity.Stream[] =
76
- data.data
77
- .map(streamId => {
78
- return pullFromCache<Amity.Stream>(['stream', 'get', streamId])!;
79
- })
80
- .filter(Boolean)
81
- .map(({ data }) => data) ?? [];
82
-
83
- callback({
84
- onNextPage: onFetch,
85
- /*
86
- * Only apply filter to RTE Model
87
- */
88
- data: isEventModel ? applyFilter(streams) : streams,
89
- hasNextPage: !!data.params?.page,
90
- loading: data.loading,
91
- error: data.error,
92
- });
93
- };
94
-
95
- const realtimeRouter = (_: Amity.StreamActionType) => (stream: Amity.Stream) => {
96
- const collection = pullFromCache<Amity.StreamLiveCollectionCache>(cacheKey)?.data;
97
- if (!collection) return;
98
-
99
- collection.data = [...new Set([stream.streamId, ...collection.data])];
100
-
101
- pushToCache(cacheKey, collection);
102
- responder(collection, true);
103
- };
104
-
105
- const onFetch = (initial = false) => {
106
- const collection = pullFromCache<Amity.StreamLiveCollectionCache>(cacheKey)?.data;
107
-
108
- const streams = collection?.data ?? [];
109
-
110
- if (!initial && streams.length > 0 && !collection?.params.page) return;
111
-
112
- const query = createQuery(_queryStreams, {
113
- ...queryParams,
114
- limit: initial ? limit : undefined,
115
- page: !initial ? collection?.params.page : undefined,
116
- });
117
-
118
- runQuery(
119
- query,
120
- ({ data: result, error, loading, paging }) => {
121
- const data = {
122
- loading,
123
- error,
124
- params: { page: paging?.next },
125
- data: streams,
126
- };
127
-
128
- if (result) {
129
- data.data = [...new Set([...streams, ...result.map(getResolver('stream'))])];
130
- }
131
- pushToCache(cacheKey, data);
132
-
133
- responder(data);
134
- },
135
- queryOptions(policy),
136
- );
137
- };
138
-
139
- disposers.push(
140
- onStreamRecorded(realtimeRouter('onStreamRecorded')),
141
- onStreamStarted(realtimeRouter('onStreamStarted')),
142
- onStreamStopped(realtimeRouter('onStreamStopped')),
143
- );
144
-
145
- onFetch(true);
146
-
147
- return () => {
148
- log(`getStreams(tmpid: ${timestamp}) > dispose`);
149
- disposers.forEach(fn => fn());
150
- };
151
- };
152
- /* end_public_function */