@knocklabs/client 0.4.5-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/cjs/api.js +165 -0
  4. package/dist/cjs/api.js.map +1 -0
  5. package/dist/cjs/clients/feed/feed.js +557 -0
  6. package/dist/cjs/clients/feed/feed.js.map +1 -0
  7. package/dist/cjs/clients/feed/index.js +43 -0
  8. package/dist/cjs/clients/feed/index.js.map +1 -0
  9. package/dist/cjs/clients/feed/interfaces.js +2 -0
  10. package/dist/cjs/clients/feed/interfaces.js.map +1 -0
  11. package/dist/cjs/clients/feed/store.js +115 -0
  12. package/dist/cjs/clients/feed/store.js.map +1 -0
  13. package/dist/cjs/clients/feed/types.js +2 -0
  14. package/dist/cjs/clients/feed/types.js.map +1 -0
  15. package/dist/cjs/clients/feed/utils.js +31 -0
  16. package/dist/cjs/clients/feed/utils.js.map +1 -0
  17. package/dist/cjs/clients/preferences/index.js +406 -0
  18. package/dist/cjs/clients/preferences/index.js.map +1 -0
  19. package/dist/cjs/clients/preferences/interfaces.js +2 -0
  20. package/dist/cjs/clients/preferences/interfaces.js.map +1 -0
  21. package/dist/cjs/index.js +108 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/interfaces.js +2 -0
  24. package/dist/cjs/interfaces.js.map +1 -0
  25. package/dist/cjs/knock.js +86 -0
  26. package/dist/cjs/knock.js.map +1 -0
  27. package/dist/cjs/networkStatus.js +21 -0
  28. package/dist/cjs/networkStatus.js.map +1 -0
  29. package/dist/esm/api.js +119 -0
  30. package/dist/esm/api.js.map +1 -0
  31. package/dist/esm/clients/feed/feed.js +337 -0
  32. package/dist/esm/clients/feed/feed.js.map +1 -0
  33. package/dist/esm/clients/feed/index.js +20 -0
  34. package/dist/esm/clients/feed/index.js.map +1 -0
  35. package/dist/esm/clients/feed/interfaces.js +2 -0
  36. package/dist/esm/clients/feed/interfaces.js.map +1 -0
  37. package/dist/esm/clients/feed/store.js +91 -0
  38. package/dist/esm/clients/feed/store.js.map +1 -0
  39. package/dist/esm/clients/feed/types.js +2 -0
  40. package/dist/esm/clients/feed/types.js.map +1 -0
  41. package/dist/esm/clients/feed/utils.js +18 -0
  42. package/dist/esm/clients/feed/utils.js.map +1 -0
  43. package/dist/esm/clients/preferences/index.js +176 -0
  44. package/dist/esm/clients/preferences/index.js.map +1 -0
  45. package/dist/esm/clients/preferences/interfaces.js +2 -0
  46. package/dist/esm/clients/preferences/interfaces.js.map +1 -0
  47. package/dist/esm/index.js +10 -0
  48. package/dist/esm/index.js.map +1 -0
  49. package/dist/esm/interfaces.js +2 -0
  50. package/dist/esm/interfaces.js.map +1 -0
  51. package/dist/esm/knock.js +69 -0
  52. package/dist/esm/knock.js.map +1 -0
  53. package/dist/esm/networkStatus.js +13 -0
  54. package/dist/esm/networkStatus.js.map +1 -0
  55. package/dist/types/api.d.ts +28 -0
  56. package/dist/types/api.d.ts.map +1 -0
  57. package/dist/types/clients/feed/feed.d.ts +46 -0
  58. package/dist/types/clients/feed/feed.d.ts.map +1 -0
  59. package/dist/types/clients/feed/index.d.ts +11 -0
  60. package/dist/types/clients/feed/index.d.ts.map +1 -0
  61. package/dist/types/clients/feed/interfaces.d.ts +50 -0
  62. package/dist/types/clients/feed/interfaces.d.ts.map +1 -0
  63. package/dist/types/clients/feed/store.d.ts +3 -0
  64. package/dist/types/clients/feed/store.d.ts.map +1 -0
  65. package/dist/types/clients/feed/types.d.ts +25 -0
  66. package/dist/types/clients/feed/types.d.ts.map +1 -0
  67. package/dist/types/clients/feed/utils.d.ts +4 -0
  68. package/dist/types/clients/feed/utils.d.ts.map +1 -0
  69. package/dist/types/clients/preferences/index.d.ts +18 -0
  70. package/dist/types/clients/preferences/index.d.ts.map +1 -0
  71. package/dist/types/clients/preferences/interfaces.d.ts +26 -0
  72. package/dist/types/clients/preferences/interfaces.d.ts.map +1 -0
  73. package/dist/types/index.d.ts +10 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/interfaces.d.ts +27 -0
  76. package/dist/types/interfaces.d.ts.map +1 -0
  77. package/dist/types/knock.d.ts +19 -0
  78. package/dist/types/knock.d.ts.map +1 -0
  79. package/dist/types/networkStatus.d.ts +8 -0
  80. package/dist/types/networkStatus.d.ts.map +1 -0
  81. package/package.json +66 -0
@@ -0,0 +1,13 @@
1
+ export var NetworkStatus;
2
+
3
+ (function (NetworkStatus) {
4
+ NetworkStatus["loading"] = "loading";
5
+ NetworkStatus["fetchMore"] = "fetchMore";
6
+ NetworkStatus["ready"] = "ready";
7
+ NetworkStatus["error"] = "error";
8
+ })(NetworkStatus || (NetworkStatus = {}));
9
+
10
+ export function isRequestInFlight(networkStatus) {
11
+ return [NetworkStatus.loading, NetworkStatus.fetchMore].includes(networkStatus);
12
+ }
13
+ //# sourceMappingURL=networkStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/networkStatus.ts"],"names":["NetworkStatus","isRequestInFlight","networkStatus","loading","fetchMore","includes"],"mappings":"AAAA,WAAYA,aAAZ;;WAAYA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;AAAAA,EAAAA,a;GAAAA,a,KAAAA,a;;AAcZ,OAAO,SAASC,iBAAT,CAA2BC,aAA3B,EAAkE;AACvE,SAAO,CAACF,aAAa,CAACG,OAAf,EAAwBH,aAAa,CAACI,SAAtC,EAAiDC,QAAjD,CACLH,aADK,CAAP;AAGD","sourcesContent":["export enum NetworkStatus {\n // Performing a top level loading operation\n loading = \"loading\",\n\n // Performing a fetch more on some already loaded data\n fetchMore = \"fetchMore\",\n\n // No operation is currently in progress\n ready = \"ready\",\n\n // The last operation failed with an error\n error = \"error\",\n}\n\nexport function isRequestInFlight(networkStatus: NetworkStatus): boolean {\n return [NetworkStatus.loading, NetworkStatus.fetchMore].includes(\n networkStatus,\n );\n}\n"],"file":"networkStatus.js"}
@@ -0,0 +1,28 @@
1
+ import { AxiosRequestConfig } from "axios";
2
+ declare type ApiClientOptions = {
3
+ host: string;
4
+ apiKey: string;
5
+ userToken: string | undefined;
6
+ };
7
+ export interface ApiResponse {
8
+ error?: any;
9
+ body?: any;
10
+ statusCode: "ok" | "error";
11
+ status: number;
12
+ }
13
+ declare class ApiClient {
14
+ private host;
15
+ private apiKey;
16
+ private userToken;
17
+ private axiosClient;
18
+ private socket;
19
+ socketConnected: boolean;
20
+ constructor(options: ApiClientOptions);
21
+ connectSocket(): void;
22
+ disconnectSocket(): void;
23
+ createChannel(name: string, params?: object): import("phoenix").Channel;
24
+ makeRequest(req: AxiosRequestConfig): Promise<ApiResponse>;
25
+ private canRetryRequest;
26
+ }
27
+ export default ApiClient;
28
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAKjE,aAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,SAAS;IACb,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAS;IAChB,eAAe,EAAE,OAAO,CAAS;gBAE5B,OAAO,EAAE,gBAAgB;IA8BrC,aAAa;IAWb,gBAAgB;IAKhB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAIrC,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBhE,OAAO,CAAC,eAAe;CAuBxB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { StoreApi } from "zustand";
2
+ import { FeedRealTimeEvent, FeedItemOrItems, FeedStoreState } from "./types";
3
+ import { FeedClientOptions, FetchFeedOptions } from "./interfaces";
4
+ import Knock from "../../knock";
5
+ export declare type Status = "seen" | "read" | "archived" | "unseen" | "unread" | "unarchived";
6
+ declare class Feed {
7
+ readonly knock: Knock;
8
+ readonly feedId: string;
9
+ private apiClient;
10
+ private userFeedId;
11
+ private channelConnected;
12
+ private channel;
13
+ private broadcaster;
14
+ private defaultOptions;
15
+ store: StoreApi<FeedStoreState>;
16
+ constructor(knock: Knock, feedId: string, options: FeedClientOptions);
17
+ listenForUpdates(): () => void;
18
+ on(eventName: FeedRealTimeEvent, callback: () => void): void;
19
+ off(eventName: FeedRealTimeEvent, callback: () => void): void;
20
+ getState(): FeedStoreState;
21
+ markAsSeen(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
22
+ markAsUnseen(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
23
+ markAsRead(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
24
+ markAsUnread(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
25
+ markAsArchived(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
26
+ markAsUnarchived(itemOrItems: FeedItemOrItems): Promise<import("../../api").ApiResponse>;
27
+ fetch(options?: FetchFeedOptions): Promise<{
28
+ status: "error";
29
+ data: any;
30
+ } | {
31
+ data: {
32
+ entries: any;
33
+ meta: any;
34
+ page_info: any;
35
+ };
36
+ status: "ok";
37
+ } | undefined>;
38
+ fetchNextPage(): Promise<void>;
39
+ private broadcast;
40
+ private onNewMessageReceived;
41
+ private buildUserFeedId;
42
+ private optimisticallyPerformStatusUpdate;
43
+ private makeStatusUpdate;
44
+ }
45
+ export default Feed;
46
+ //# sourceMappingURL=feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/feed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,OAAO,EAEL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAY,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,MAAM,aAAa,CAAC;AAGhC,oBAAY,MAAM,GACd,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,YAAY,CAAC;AAEjB,cAAM,IAAI;IAYN,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAZzB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAoB;IAGnC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAG5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,iBAAiB;IAqB5B,gBAAgB;IAoBhB,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI;IAIrD,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,IAAI;IAItD,QAAQ;IAIF,UAAU,CAAC,WAAW,EAAE,eAAe;IAWvC,YAAY,CAAC,WAAW,EAAE,eAAe;IAUzC,UAAU,CAAC,WAAW,EAAE,eAAe;IAWvC,YAAY,CAAC,WAAW,EAAE,eAAe;IAUzC,cAAc,CAAC,WAAW,EAAE,eAAe;IAQ3C,gBAAgB,CAAC,WAAW,EAAE,eAAe;IAQ7C,KAAK,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;;;;IAoDpC,aAAa;IAgBnB,OAAO,CAAC,SAAS;YAKH,oBAAoB;IAYlC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iCAAiC;YAgC3B,gBAAgB;CAoB/B;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,11 @@
1
+ import Knock from "../../knock";
2
+ import Feed from "./feed";
3
+ import { FeedClientOptions } from "./interfaces";
4
+ declare class FeedClient {
5
+ private instance;
6
+ constructor(instance: Knock);
7
+ initialize(feedChannelId: string, options?: FeedClientOptions): Feed;
8
+ }
9
+ export { Feed };
10
+ export default FeedClient;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,KAAK;IAI3B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;CAGlE;AAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,eAAe,UAAU,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { Activity, GenericData, User, PageInfo } from "../../interfaces";
2
+ import { NetworkStatus } from "../../networkStatus";
3
+ export interface FeedClientOptions {
4
+ before?: string;
5
+ after?: string;
6
+ page_size?: number;
7
+ status?: "unread" | "unseen" | "all";
8
+ source?: string;
9
+ tenant?: string;
10
+ include_archived?: boolean;
11
+ }
12
+ export declare type FetchFeedOptions = {
13
+ __loadingType?: NetworkStatus.loading | NetworkStatus.fetchMore;
14
+ } & FeedClientOptions;
15
+ export interface ContentBlock {
16
+ content: string;
17
+ rendered: string;
18
+ type: "markdown" | "text";
19
+ name: string;
20
+ }
21
+ export interface NotificationSource {
22
+ key: string;
23
+ version_id: string;
24
+ }
25
+ export interface FeedItem {
26
+ __cursor: string;
27
+ id: string;
28
+ activities: Activity[];
29
+ actors: User[];
30
+ blocks: ContentBlock[];
31
+ inserted_at: string;
32
+ updated_at: string;
33
+ read_at: string | null;
34
+ seen_at: string | null;
35
+ total_activities: number;
36
+ total_actors: number;
37
+ data: GenericData;
38
+ source: NotificationSource;
39
+ }
40
+ export interface FeedMetadata {
41
+ total_count: number;
42
+ unread_count: number;
43
+ unseen_count: number;
44
+ }
45
+ export interface FeedResponse {
46
+ entries: FeedItem[];
47
+ meta: FeedMetadata;
48
+ page_info: PageInfo;
49
+ }
50
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAErC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC;CACjE,GAAG,iBAAiB,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ import { FeedStoreState } from "./types";
2
+ export default function createStore(): import("zustand/vanilla").StoreApi<FeedStoreState>;
3
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAezC,MAAM,CAAC,OAAO,UAAU,WAAW,uDAyElC"}
@@ -0,0 +1,25 @@
1
+ import { PageInfo } from "../../interfaces";
2
+ import { NetworkStatus } from "../../networkStatus";
3
+ import { FeedItem, FeedMetadata, FeedResponse } from "./interfaces";
4
+ export declare type StoreFeedResultOptions = {
5
+ shouldSetPage?: boolean;
6
+ shouldAppend?: boolean;
7
+ };
8
+ export declare type FeedStoreState = {
9
+ items: FeedItem[];
10
+ pageInfo: PageInfo;
11
+ metadata: FeedMetadata;
12
+ loading: boolean;
13
+ networkStatus: NetworkStatus;
14
+ setResult: (response: FeedResponse, opts?: StoreFeedResultOptions) => void;
15
+ setMetadata: (metadata: FeedMetadata) => void;
16
+ setLoading: (loading: boolean) => void;
17
+ setNetworkStatus: (networkStatus: NetworkStatus) => void;
18
+ setItemAttrs: (itemIds: string[], attrs: object) => void;
19
+ };
20
+ export declare type FeedMessagesReceivedPayload = {
21
+ metadata: FeedMetadata;
22
+ };
23
+ export declare type FeedRealTimeEvent = "messages.new";
24
+ export declare type FeedItemOrItems = FeedItem | FeedItem[];
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpE,oBAAY,sBAAsB,GAAG;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC3B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3E,WAAW,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IACzD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,oBAAY,2BAA2B,GAAG;IACxC,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,oBAAY,iBAAiB,GAAG,cAAc,CAAC;AAE/C,oBAAY,eAAe,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FeedItem } from "./interfaces";
2
+ export declare function deduplicateItems(items: FeedItem[]): FeedItem[];
3
+ export declare function sortItems(items: FeedItem[]): FeedItem[];
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAY9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,cAM1C"}
@@ -0,0 +1,18 @@
1
+ import Knock from "../../knock";
2
+ import { ChannelTypePreferences, ChannelType, PreferenceOptions, SetPreferencesProperties, WorkflowPreferenceSetting, WorkflowPreferences, PreferenceSet } from "./interfaces";
3
+ declare class Preferences {
4
+ private instance;
5
+ constructor(instance: Knock);
6
+ getAll(): Promise<PreferenceSet>;
7
+ get(options?: PreferenceOptions): Promise<PreferenceSet>;
8
+ set(preferenceSet: SetPreferencesProperties, options?: PreferenceOptions): Promise<PreferenceSet>;
9
+ setChannelTypes(channelTypePreferences: ChannelTypePreferences, options?: PreferenceOptions): Promise<PreferenceSet>;
10
+ setChannelType(channelType: ChannelType, setting: boolean, options?: PreferenceOptions): Promise<PreferenceSet>;
11
+ setWorkflows(workflowPreferences: WorkflowPreferences, options?: PreferenceOptions): Promise<PreferenceSet>;
12
+ setWorkflow(workflowKey: string, setting: WorkflowPreferenceSetting, options?: PreferenceOptions): Promise<PreferenceSet>;
13
+ setCategories(categoryPreferences: WorkflowPreferences, options?: PreferenceOptions): Promise<PreferenceSet>;
14
+ setCategory(categoryKey: string, setting: WorkflowPreferenceSetting, options?: PreferenceOptions): Promise<PreferenceSet>;
15
+ private handleResponse;
16
+ }
17
+ export default Preferences;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/preferences/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACd,MAAM,cAAc,CAAC;AAYtB,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,QAAQ,EAAE,KAAK;IAIrB,MAAM;IASN,GAAG,CAAC,OAAO,GAAE,iBAAsB;IAWnC,GAAG,CACP,aAAa,EAAE,wBAAwB,EACvC,OAAO,GAAE,iBAAsB;IAa3B,eAAe,CACnB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,GAAE,iBAAsB;IAa3B,cAAc,CAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,iBAAsB;IAa3B,YAAY,CAChB,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,GAAE,iBAAsB;IAa3B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,yBAAyB,EAClC,OAAO,GAAE,iBAAsB;IAc3B,aAAa,CACjB,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,GAAE,iBAAsB;IAa3B,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,yBAAyB,EAClC,OAAO,GAAE,iBAAsB;IAcjC,OAAO,CAAC,cAAc;CAOvB;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,26 @@
1
+ export declare type ChannelType = "email" | "in_app_feed";
2
+ export declare type ChannelTypePreferences = {
3
+ email: boolean;
4
+ in_app_feed: boolean;
5
+ };
6
+ export declare type WorkflowPreferenceSetting = boolean | {
7
+ channel_types: ChannelTypePreferences;
8
+ };
9
+ export interface WorkflowPreferences {
10
+ [key: string]: WorkflowPreferenceSetting;
11
+ }
12
+ export interface SetPreferencesProperties {
13
+ workflows: WorkflowPreferences;
14
+ categories: WorkflowPreferences;
15
+ channel_types: ChannelTypePreferences;
16
+ }
17
+ export interface PreferenceSet {
18
+ id: string;
19
+ categories: WorkflowPreferences;
20
+ workflows: WorkflowPreferences;
21
+ channel_types: ChannelTypePreferences;
22
+ }
23
+ export interface PreferenceOptions {
24
+ preferenceSet?: string;
25
+ }
26
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/clients/preferences/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC;AAElD,oBAAY,sBAAsB,GAAG;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oBAAY,yBAAyB,GACjC,OAAO,GACP;IAAE,aAAa,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,mBAAmB,CAAC;IAChC,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,10 @@
1
+ import Knock from "./knock";
2
+ import FeedClient, { Feed } from "./clients/feed";
3
+ export * from "./interfaces";
4
+ export * from "./clients/feed/types";
5
+ export * from "./clients/feed/interfaces";
6
+ export * from "./clients/preferences/interfaces";
7
+ export * from "./networkStatus";
8
+ export default Knock;
9
+ export { Feed, FeedClient };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAElD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAEhC,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface KnockOptions {
2
+ host?: string;
3
+ }
4
+ export interface GenericData {
5
+ [key: string]: any;
6
+ }
7
+ export interface User extends GenericData {
8
+ id: string;
9
+ email: string;
10
+ name: string;
11
+ updated_at: string;
12
+ created_at: string | null;
13
+ }
14
+ export interface PageInfo {
15
+ after: string | null;
16
+ before: string | null;
17
+ page_size: number;
18
+ }
19
+ export interface Activity {
20
+ id: string;
21
+ inserted_at: string;
22
+ updated_at: string;
23
+ recipient: User;
24
+ actor: User;
25
+ data: GenericData;
26
+ }
27
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;CACnB"}
@@ -0,0 +1,19 @@
1
+ import ApiClient from "./api";
2
+ import FeedClient from "./clients/feed";
3
+ import Preferences from "./clients/preferences";
4
+ import { KnockOptions } from "./interfaces";
5
+ declare class Knock {
6
+ readonly apiKey: string;
7
+ private host;
8
+ private userToken;
9
+ private apiClient;
10
+ userId: string | undefined;
11
+ readonly feeds: FeedClient;
12
+ readonly preferences: Preferences;
13
+ constructor(apiKey: string, options?: KnockOptions);
14
+ client(): ApiClient;
15
+ authenticate(userId: string, userToken?: string): void;
16
+ teardown(): void;
17
+ }
18
+ export default Knock;
19
+ //# sourceMappingURL=knock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knock.d.ts","sourceRoot":"","sources":["../../src/knock.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,OAAO,CAAC;AAC9B,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,cAAM,KAAK;IASG,QAAQ,CAAC,MAAM,EAAE,MAAM;IARnC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAA0B;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,QAAQ,CAAC,KAAK,aAAwB;IACtC,QAAQ,CAAC,WAAW,cAAyB;gBAExB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAW/D,MAAM;IA2BN,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAQ/C,QAAQ;CAKT;AAED,eAAe,KAAK,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare enum NetworkStatus {
2
+ loading = "loading",
3
+ fetchMore = "fetchMore",
4
+ ready = "ready",
5
+ error = "error"
6
+ }
7
+ export declare function isRequestInFlight(networkStatus: NetworkStatus): boolean;
8
+ //# sourceMappingURL=networkStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkStatus.d.ts","sourceRoot":"","sources":["../../src/networkStatus.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAEvB,OAAO,YAAY;IAGnB,SAAS,cAAc;IAGvB,KAAK,UAAU;IAGf,KAAK,UAAU;CAChB;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAIvE"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@knocklabs/client",
3
+ "version": "0.4.5-rc.1",
4
+ "description": "The clientside library for interacting with Knock",
5
+ "homepage": "https://github.com/knocklabs/knock-client-js",
6
+ "author": "@knocklabs",
7
+ "license": "MIT",
8
+ "main": "dist/cjs/index.js",
9
+ "module": "dist/esm/index.js",
10
+ "types": "dist/types/index.d.ts",
11
+ "typings": "dist/types/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "require": "./dist/cjs/index.js",
15
+ "default": "./dist/esm/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/knocklabs/knock-client-js.git"
25
+ },
26
+ "bugs": {
27
+ "url": "https://github.com/knocklabs/knock-client-js/issues"
28
+ },
29
+ "scripts": {
30
+ "lint": "tslint -p tsconfig.json -c tslint.json",
31
+ "prettier": "prettier \"src/**/*.{js,ts,tsx}\" --check",
32
+ "format": "prettier \"src/**/*.{js,ts,tsx}\" --write",
33
+ "clean": "rimraf dist",
34
+ "type-check": "tsc --noEmit",
35
+ "type-check:watch": "npm run type-check -- --watch",
36
+ "build": "yarn clean && yarn build:esm && yarn build:cjs && yarn build:types",
37
+ "build:esm": "cross-env BABEL_ENV=esm babel src --extensions .ts,.tsx -d dist/esm --source-maps --ignore 'src/stories/*'",
38
+ "build:cjs": "cross-env BABEL_ENV=cjs babel src --extensions .ts,.tsx -d dist/cjs --source-maps --ignore 'src/stories/*'",
39
+ "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
40
+ "test": "jest",
41
+ "prepublishOnly": "npm run build"
42
+ },
43
+ "devDependencies": {
44
+ "@babel/cli": "^7.13.16",
45
+ "@babel/core": "^7.14.0",
46
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
47
+ "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
48
+ "@babel/plugin-transform-runtime": "^7.13.15",
49
+ "@babel/preset-env": "^7.14.1",
50
+ "@babel/preset-typescript": "^7.13.0",
51
+ "@types/phoenix": "^1.5.1",
52
+ "cross-env": "^7.0.3",
53
+ "prettier": "^2.2.1",
54
+ "rimraf": "^3.0.2",
55
+ "rollup": "^2.46.0",
56
+ "tslint": "^6.1.3",
57
+ "typescript": "^4.2.4"
58
+ },
59
+ "dependencies": {
60
+ "axios": "^0.21.1",
61
+ "axios-retry": "^3.1.9",
62
+ "eventemitter3": "^4.0.7",
63
+ "phoenix": "^1.5.8",
64
+ "zustand": "^3.4.2"
65
+ }
66
+ }