@knocklabs/client 0.10.10 → 0.10.11
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/CHANGELOG.md +6 -0
- package/dist/cjs/clients/feed/store.js +1 -1
- package/dist/cjs/clients/feed/store.js.map +1 -1
- package/dist/esm/clients/feed/store.mjs +22 -18
- package/dist/esm/clients/feed/store.mjs.map +1 -1
- package/dist/types/clients/feed/store.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/clients/feed/store.ts +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("zustand/vanilla"),d=require("../../networkStatus.js"),i=require("./utils.js"),c=typeof u=="function"?u:u.default;function f(e){const t=i.deduplicateItems(e);return i.sortItems(t)}const p={shouldSetPage:!0,shouldAppend:!1},l={items:[],metadata:{total_count:0,unread_count:0,unseen_count:0},pageInfo:{before:null,after:null,page_size:50}};function S(){return c(e=>({...l,networkStatus:d.NetworkStatus.ready,loading:!1,setNetworkStatus:t=>e(()=>({networkStatus:t,loading:t===d.NetworkStatus.loading})),setResult:({entries:t,meta:r,page_info:n},a=p)=>e(s=>({items:a.shouldAppend?f(s.items.concat(t)):t,metadata:r,pageInfo:a.shouldSetPage?n:s.pageInfo,loading:!1,networkStatus:d.NetworkStatus.ready})),setMetadata:t=>e(()=>({metadata:t})),resetStore:(t=l.metadata)=>e(()=>({...l,metadata:t})),setItemAttrs:(t,r)=>{const n=t.reduce((a,s)=>({...a,[s]:r}),{});return e(a=>({items:a.items.map(o=>n[o.id]?{...o,...n[o.id]}:o)}))}}))}exports.default=S;
|
|
2
2
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sources":["../../../../src/clients/feed/store.ts"],"sourcesContent":["import { GenericData } from \"@knocklabs/types\";\nimport
|
|
1
|
+
{"version":3,"file":"store.js","sources":["../../../../src/clients/feed/store.ts"],"sourcesContent":["import { GenericData } from \"@knocklabs/types\";\nimport zustand from \"zustand/vanilla\";\n\nimport { NetworkStatus } from \"../../networkStatus\";\n\nimport { FeedItem } from \"./interfaces\";\nimport { FeedStoreState } from \"./types\";\nimport { deduplicateItems, sortItems } from \"./utils\";\n\n// Get the correct Zustand function. Caused by some issues in v3 exports\n// https://github.com/pmndrs/zustand/issues/334\nconst create: typeof zustand =\n // @ts-expect-error workaround for issue above\n typeof zustand === \"function\" ? zustand : zustand.default;\n\nfunction processItems(items: FeedItem[]) {\n const deduped = deduplicateItems(items);\n const sorted = sortItems(deduped);\n\n return sorted;\n}\n\nconst defaultSetResultOptions = {\n shouldSetPage: true,\n shouldAppend: false,\n};\n\nconst initialStoreState = {\n items: [],\n metadata: {\n total_count: 0,\n unread_count: 0,\n unseen_count: 0,\n },\n pageInfo: {\n before: null,\n after: null,\n page_size: 50,\n },\n};\n\nexport default function createStore() {\n return create<FeedStoreState>((set) => ({\n // Keeps track of all of the items loaded\n ...initialStoreState,\n // The network status indicates what's happening with the request\n networkStatus: NetworkStatus.ready,\n loading: false,\n\n setNetworkStatus: (networkStatus: NetworkStatus) =>\n set(() => ({\n networkStatus,\n loading: networkStatus === NetworkStatus.loading,\n })),\n\n setResult: (\n { entries, meta, page_info },\n options = defaultSetResultOptions,\n ) =>\n set((state) => {\n // We resort the list on set, so concating everything is fine (if a bit suboptimal)\n const items = options.shouldAppend\n ? processItems(state.items.concat(entries as FeedItem<GenericData>[]))\n : entries;\n\n return {\n items,\n metadata: meta,\n pageInfo: options.shouldSetPage ? page_info : state.pageInfo,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n }),\n\n setMetadata: (metadata) => set(() => ({ metadata })),\n\n resetStore: (metadata = initialStoreState.metadata) =>\n set(() => ({ ...initialStoreState, metadata })),\n\n setItemAttrs: (itemIds, attrs) => {\n // Create a map for the items to the updates to be made\n const itemUpdatesMap: { [id: string]: object } = itemIds.reduce(\n (acc, itemId) => ({ ...acc, [itemId]: attrs }),\n {},\n );\n\n return set((state) => {\n const items = state.items.map((item) => {\n if (itemUpdatesMap[item.id]) {\n return { ...item, ...itemUpdatesMap[item.id] };\n }\n\n return item;\n });\n\n return { items };\n });\n },\n }));\n}\n"],"names":["create","zustand","processItems","items","deduped","deduplicateItems","sortItems","defaultSetResultOptions","initialStoreState","createStore","set","NetworkStatus","networkStatus","entries","meta","page_info","options","state","metadata","itemIds","attrs","itemUpdatesMap","acc","itemId","item"],"mappings":"2MAWMA,EAEJ,OAAOC,GAAY,WAAaA,EAAUA,EAAQ,QAEpD,SAASC,EAAaC,EAAmB,CACjC,MAAAC,EAAUC,mBAAiBF,CAAK,EAG/B,OAFQG,YAAUF,CAAO,CAGlC,CAEA,MAAMG,EAA0B,CAC9B,cAAe,GACf,aAAc,EAChB,EAEMC,EAAoB,CACxB,MAAO,CAAC,EACR,SAAU,CACR,YAAa,EACb,aAAc,EACd,aAAc,CAChB,EACA,SAAU,CACR,OAAQ,KACR,MAAO,KACP,UAAW,EACb,CACF,EAEA,SAAwBC,GAAc,CAC7B,OAAAT,EAAwBU,IAAS,CAEtC,GAAGF,EAEH,cAAeG,EAAc,cAAA,MAC7B,QAAS,GAET,iBAAmBC,GACjBF,EAAI,KAAO,CAAA,cACTE,EACA,QAASA,IAAkBD,EAAAA,cAAc,OAAA,EACzC,EAEJ,UAAW,CACT,CAAE,QAAAE,EAAS,KAAAC,EAAM,UAAAC,GACjBC,EAAUT,IAEVG,EAAKO,IAMI,CACL,MALYD,EAAQ,aAClBd,EAAae,EAAM,MAAM,OAAOJ,CAAkC,CAAC,EACnEA,EAIF,SAAUC,EACV,SAAUE,EAAQ,cAAgBD,EAAYE,EAAM,SACpD,QAAS,GACT,cAAeN,EAAc,cAAA,KAAA,EAEhC,EAEH,YAAcO,GAAaR,EAAI,KAAO,CAAE,SAAAQ,CAAW,EAAA,EAEnD,WAAY,CAACA,EAAWV,EAAkB,WACxCE,EAAI,KAAO,CAAE,GAAGF,EAAmB,SAAAU,CAAA,EAAW,EAEhD,aAAc,CAACC,EAASC,IAAU,CAEhC,MAAMC,EAA2CF,EAAQ,OACvD,CAACG,EAAKC,KAAY,CAAE,GAAGD,EAAK,CAACC,CAAM,EAAGH,IACtC,CAAC,CAAA,EAGI,OAAAV,EAAKO,IASH,CAAE,MARKA,EAAM,MAAM,IAAKO,GACzBH,EAAeG,EAAK,EAAE,EACjB,CAAE,GAAGA,EAAM,GAAGH,EAAeG,EAAK,EAAE,GAGtCA,CACR,CAEc,EAChB,CACH,CACA,EAAA,CACJ"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { NetworkStatus as
|
|
1
|
+
import u from "zustand/vanilla";
|
|
2
|
+
import { NetworkStatus as d } from "../../networkStatus.mjs";
|
|
3
3
|
import { deduplicateItems as i, sortItems as c } from "./utils.mjs";
|
|
4
|
+
const f = (
|
|
5
|
+
// @ts-expect-error workaround for issue above
|
|
6
|
+
typeof u == "function" ? u : u.default
|
|
7
|
+
);
|
|
4
8
|
function m(e) {
|
|
5
9
|
const t = i(e);
|
|
6
10
|
return c(t);
|
|
@@ -8,7 +12,7 @@ function m(e) {
|
|
|
8
12
|
const p = {
|
|
9
13
|
shouldSetPage: !0,
|
|
10
14
|
shouldAppend: !1
|
|
11
|
-
},
|
|
15
|
+
}, l = {
|
|
12
16
|
items: [],
|
|
13
17
|
metadata: {
|
|
14
18
|
total_count: 0,
|
|
@@ -21,36 +25,36 @@ const p = {
|
|
|
21
25
|
page_size: 50
|
|
22
26
|
}
|
|
23
27
|
};
|
|
24
|
-
function
|
|
25
|
-
return
|
|
28
|
+
function h() {
|
|
29
|
+
return f((e) => ({
|
|
26
30
|
// Keeps track of all of the items loaded
|
|
27
|
-
...
|
|
31
|
+
...l,
|
|
28
32
|
// The network status indicates what's happening with the request
|
|
29
|
-
networkStatus:
|
|
33
|
+
networkStatus: d.ready,
|
|
30
34
|
loading: !1,
|
|
31
35
|
setNetworkStatus: (t) => e(() => ({
|
|
32
36
|
networkStatus: t,
|
|
33
|
-
loading: t ===
|
|
37
|
+
loading: t === d.loading
|
|
34
38
|
})),
|
|
35
|
-
setResult: ({ entries: t, meta:
|
|
39
|
+
setResult: ({ entries: t, meta: r, page_info: s }, a = p) => e((o) => ({
|
|
36
40
|
items: a.shouldAppend ? m(o.items.concat(t)) : t,
|
|
37
|
-
metadata:
|
|
38
|
-
pageInfo: a.shouldSetPage ?
|
|
41
|
+
metadata: r,
|
|
42
|
+
pageInfo: a.shouldSetPage ? s : o.pageInfo,
|
|
39
43
|
loading: !1,
|
|
40
|
-
networkStatus:
|
|
44
|
+
networkStatus: d.ready
|
|
41
45
|
})),
|
|
42
46
|
setMetadata: (t) => e(() => ({ metadata: t })),
|
|
43
|
-
resetStore: (t =
|
|
44
|
-
setItemAttrs: (t,
|
|
45
|
-
const
|
|
46
|
-
(a, o) => ({ ...a, [o]:
|
|
47
|
+
resetStore: (t = l.metadata) => e(() => ({ ...l, metadata: t })),
|
|
48
|
+
setItemAttrs: (t, r) => {
|
|
49
|
+
const s = t.reduce(
|
|
50
|
+
(a, o) => ({ ...a, [o]: r }),
|
|
47
51
|
{}
|
|
48
52
|
);
|
|
49
|
-
return e((a) => ({ items: a.items.map((
|
|
53
|
+
return e((a) => ({ items: a.items.map((n) => s[n.id] ? { ...n, ...s[n.id] } : n) }));
|
|
50
54
|
}
|
|
51
55
|
}));
|
|
52
56
|
}
|
|
53
57
|
export {
|
|
54
|
-
|
|
58
|
+
h as default
|
|
55
59
|
};
|
|
56
60
|
//# sourceMappingURL=store.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.mjs","sources":["../../../../src/clients/feed/store.ts"],"sourcesContent":["import { GenericData } from \"@knocklabs/types\";\nimport
|
|
1
|
+
{"version":3,"file":"store.mjs","sources":["../../../../src/clients/feed/store.ts"],"sourcesContent":["import { GenericData } from \"@knocklabs/types\";\nimport zustand from \"zustand/vanilla\";\n\nimport { NetworkStatus } from \"../../networkStatus\";\n\nimport { FeedItem } from \"./interfaces\";\nimport { FeedStoreState } from \"./types\";\nimport { deduplicateItems, sortItems } from \"./utils\";\n\n// Get the correct Zustand function. Caused by some issues in v3 exports\n// https://github.com/pmndrs/zustand/issues/334\nconst create: typeof zustand =\n // @ts-expect-error workaround for issue above\n typeof zustand === \"function\" ? zustand : zustand.default;\n\nfunction processItems(items: FeedItem[]) {\n const deduped = deduplicateItems(items);\n const sorted = sortItems(deduped);\n\n return sorted;\n}\n\nconst defaultSetResultOptions = {\n shouldSetPage: true,\n shouldAppend: false,\n};\n\nconst initialStoreState = {\n items: [],\n metadata: {\n total_count: 0,\n unread_count: 0,\n unseen_count: 0,\n },\n pageInfo: {\n before: null,\n after: null,\n page_size: 50,\n },\n};\n\nexport default function createStore() {\n return create<FeedStoreState>((set) => ({\n // Keeps track of all of the items loaded\n ...initialStoreState,\n // The network status indicates what's happening with the request\n networkStatus: NetworkStatus.ready,\n loading: false,\n\n setNetworkStatus: (networkStatus: NetworkStatus) =>\n set(() => ({\n networkStatus,\n loading: networkStatus === NetworkStatus.loading,\n })),\n\n setResult: (\n { entries, meta, page_info },\n options = defaultSetResultOptions,\n ) =>\n set((state) => {\n // We resort the list on set, so concating everything is fine (if a bit suboptimal)\n const items = options.shouldAppend\n ? processItems(state.items.concat(entries as FeedItem<GenericData>[]))\n : entries;\n\n return {\n items,\n metadata: meta,\n pageInfo: options.shouldSetPage ? page_info : state.pageInfo,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n }),\n\n setMetadata: (metadata) => set(() => ({ metadata })),\n\n resetStore: (metadata = initialStoreState.metadata) =>\n set(() => ({ ...initialStoreState, metadata })),\n\n setItemAttrs: (itemIds, attrs) => {\n // Create a map for the items to the updates to be made\n const itemUpdatesMap: { [id: string]: object } = itemIds.reduce(\n (acc, itemId) => ({ ...acc, [itemId]: attrs }),\n {},\n );\n\n return set((state) => {\n const items = state.items.map((item) => {\n if (itemUpdatesMap[item.id]) {\n return { ...item, ...itemUpdatesMap[item.id] };\n }\n\n return item;\n });\n\n return { items };\n });\n },\n }));\n}\n"],"names":["create","zustand","processItems","items","deduped","deduplicateItems","sortItems","defaultSetResultOptions","initialStoreState","createStore","set","NetworkStatus","networkStatus","entries","meta","page_info","options","state","metadata","itemIds","attrs","itemUpdatesMap","acc","itemId","item"],"mappings":";;;AAWA,MAAMA;AAAA;AAAA,EAEJ,OAAOC,KAAY,aAAaA,IAAUA,EAAQ;AAAA;AAEpD,SAASC,EAAaC,GAAmB;AACjC,QAAAC,IAAUC,EAAiBF,CAAK;AAG/B,SAFQG,EAAUF,CAAO;AAGlC;AAEA,MAAMG,IAA0B;AAAA,EAC9B,eAAe;AAAA,EACf,cAAc;AAChB,GAEMC,IAAoB;AAAA,EACxB,OAAO,CAAC;AAAA,EACR,UAAU;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AACF;AAEA,SAAwBC,IAAc;AAC7B,SAAAT,EAAuB,CAACU,OAAS;AAAA;AAAA,IAEtC,GAAGF;AAAA;AAAA,IAEH,eAAeG,EAAc;AAAA,IAC7B,SAAS;AAAA,IAET,kBAAkB,CAACC,MACjBF,EAAI,OAAO;AAAA,MACT,eAAAE;AAAA,MACA,SAASA,MAAkBD,EAAc;AAAA,IAAA,EACzC;AAAA,IAEJ,WAAW,CACT,EAAE,SAAAE,GAAS,MAAAC,GAAM,WAAAC,KACjBC,IAAUT,MAEVG,EAAI,CAACO,OAMI;AAAA,MACL,OALYD,EAAQ,eAClBd,EAAae,EAAM,MAAM,OAAOJ,CAAkC,CAAC,IACnEA;AAAA,MAIF,UAAUC;AAAA,MACV,UAAUE,EAAQ,gBAAgBD,IAAYE,EAAM;AAAA,MACpD,SAAS;AAAA,MACT,eAAeN,EAAc;AAAA,IAAA,EAEhC;AAAA,IAEH,aAAa,CAACO,MAAaR,EAAI,OAAO,EAAE,UAAAQ,EAAW,EAAA;AAAA,IAEnD,YAAY,CAACA,IAAWV,EAAkB,aACxCE,EAAI,OAAO,EAAE,GAAGF,GAAmB,UAAAU,EAAA,EAAW;AAAA,IAEhD,cAAc,CAACC,GAASC,MAAU;AAEhC,YAAMC,IAA2CF,EAAQ;AAAA,QACvD,CAACG,GAAKC,OAAY,EAAE,GAAGD,GAAK,CAACC,CAAM,GAAGH;QACtC,CAAC;AAAA,MAAA;AAGI,aAAAV,EAAI,CAACO,OASH,EAAE,OARKA,EAAM,MAAM,IAAI,CAACO,MACzBH,EAAeG,EAAK,EAAE,IACjB,EAAE,GAAGA,GAAM,GAAGH,EAAeG,EAAK,EAAE,MAGtCA,CACR,EAEc,EAChB;AAAA,IACH;AAAA,EACA,EAAA;AACJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/clients/feed/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmCzC,MAAM,CAAC,OAAO,UAAU,WAAW,uDA0DlC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GenericData } from "@knocklabs/types";
|
|
2
|
-
import
|
|
2
|
+
import zustand from "zustand/vanilla";
|
|
3
3
|
|
|
4
4
|
import { NetworkStatus } from "../../networkStatus";
|
|
5
5
|
|
|
@@ -7,6 +7,12 @@ import { FeedItem } from "./interfaces";
|
|
|
7
7
|
import { FeedStoreState } from "./types";
|
|
8
8
|
import { deduplicateItems, sortItems } from "./utils";
|
|
9
9
|
|
|
10
|
+
// Get the correct Zustand function. Caused by some issues in v3 exports
|
|
11
|
+
// https://github.com/pmndrs/zustand/issues/334
|
|
12
|
+
const create: typeof zustand =
|
|
13
|
+
// @ts-expect-error workaround for issue above
|
|
14
|
+
typeof zustand === "function" ? zustand : zustand.default;
|
|
15
|
+
|
|
10
16
|
function processItems(items: FeedItem[]) {
|
|
11
17
|
const deduped = deduplicateItems(items);
|
|
12
18
|
const sorted = sortItems(deduped);
|