memi-board 0.42.0 → 0.42.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.
@@ -1,5 +1,12 @@
1
1
  import { MaybeRefOrGetter } from 'vue';
2
2
  import { PostModel } from '../types';
3
+ /**
4
+ * SSR과 클라이언트 첫 렌더의 pending 상태가 갈리면(서버는 즉시 완료, 클라이언트는
5
+ * 로딩 중) MiniList.vue가 서버에선 빈 상태(<p>), 클라이언트에선 스켈레톤(<div>)을
6
+ * 그려 노드 자체가 달라지는 하이드레이션 mismatch가 난다. 쿼리가 where/orderBy/limit을
7
+ * 쓰는 복합 쿼리라 ssrKey 없인 vuefire가 경로를 못 찾는 것도 같은 원인이라, 두 컴포저블
8
+ * 모두 서버에서도 쿼리를 실행하고 ssrKey로 하이드레이션시킨다.
9
+ */
3
10
  export declare function useMemiBoardMiniLatest(boardId: MaybeRefOrGetter<string | null>, count: MaybeRefOrGetter<number>): {
4
11
  posts: import('vue').ComputedRef<import('vuefire').VueFirestoreQueryData<PostModel>>;
5
12
  pending: import('vue').Ref<boolean, boolean>;
package/dist/index.js CHANGED
@@ -2227,30 +2227,29 @@ function Un() {
2227
2227
  //#endregion
2228
2228
  //#region src/composables/useMemiBoardMiniPosts.ts
2229
2229
  function Wn(e, t) {
2230
- let n = Q(), r = () => _(), i = M(() => {
2231
- if (!import.meta.client) return null;
2230
+ let n = Q(), r = () => _(), i = F(e)?.trim() || "all", a = M(() => {
2232
2231
  let i = Math.max(1, Math.floor(Number(F(t)) || 5)), a = F(e)?.trim() || "", o = [Y("isPublished", "==", !0), Y("listed", "==", !0)];
2233
2232
  return a && o.unshift(Y("boardId", "==", a)), W(c(n, r()), ...o, U("createdAt", "desc"), V(i));
2234
- }), { data: a, pending: o, error: s } = se(i);
2233
+ }), { data: o, pending: s, error: l } = se(a, { ssrKey: w(r(), `mini-list/${i}`) });
2235
2234
  return {
2236
- posts: M(() => a.value ?? []),
2237
- pending: o,
2238
- error: s
2235
+ posts: M(() => o.value ?? []),
2236
+ pending: s,
2237
+ error: l
2239
2238
  };
2240
2239
  }
2241
2240
  function Gn(e) {
2242
- let t = Q(), n = () => _(), r = M(() => [...new Set(F(e).map((e) => e.trim()).filter(Boolean))].slice(0, 10)), i = M(() => !import.meta.client || !r.value.length ? null : W(c(t, n()), Y(L(), "in", r.value))), { data: a, pending: o, error: s } = se(i);
2241
+ let t = Q(), n = () => _(), r = M(() => [...new Set(F(e).map((e) => e.trim()).filter(Boolean))].slice(0, 10)), i = r.value.join(",") || "none", a = M(() => r.value.length ? W(c(t, n()), Y(L(), "in", r.value)) : null), { data: o, pending: s, error: l } = se(a, { ssrKey: w(n(), `mini-picked/${i}`) });
2243
2242
  return {
2244
2243
  posts: M(() => {
2245
- let e = new Map((a.value ?? []).map((e) => [e.id, e])), t = [];
2244
+ let e = new Map((o.value ?? []).map((e) => [e.id, e])), t = [];
2246
2245
  for (let n of r.value) {
2247
2246
  let r = e.get(n);
2248
2247
  r && r.isPublished !== !1 && t.push(r);
2249
2248
  }
2250
2249
  return t;
2251
2250
  }),
2252
- pending: o,
2253
- error: s
2251
+ pending: s,
2252
+ error: l
2254
2253
  };
2255
2254
  }
2256
2255
  //#endregion