coll-fns 1.5.0 → 1.6.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.
- package/README.md +42 -11
- package/dist/coll-fns.cjs +1 -1
- package/dist/coll-fns.cjs.map +1 -1
- package/dist/coll-fns.mjs +1 -1
- package/dist/coll-fns.mjs.map +1 -1
- package/package.json +2 -1
- package/src/index.d.ts +3 -2
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ Stop repeating business logic all over your code base. Define hooks on collectio
|
|
|
57
57
|
- [Nested reactive publications](#nested-reactive-publications)
|
|
58
58
|
- [When to use `publish`](#when-to-use-publish)
|
|
59
59
|
- [`publish(publication, Coll, selector, options)`](#publishpublication-coll-selector-options)
|
|
60
|
+
- [Publication readiness](#publication-readiness)
|
|
60
61
|
- [Publication context (`this` in Meteor)](#publication-context-this-in-meteor)
|
|
61
62
|
- [How child declarations work](#how-child-declarations-work)
|
|
62
63
|
- [Ancestors chain](#ancestors-chain)
|
|
@@ -1716,8 +1717,18 @@ Meteor.publish("posts.tree", function postsTree() {
|
|
|
1716
1717
|
});
|
|
1717
1718
|
```
|
|
1718
1719
|
|
|
1720
|
+
## Publication readiness and concurrency
|
|
1721
|
+
|
|
1722
|
+
Readiness is controlled per child with `awaited` (default: `true`):
|
|
1723
|
+
|
|
1724
|
+
- `awaited: true`: wait for this child subtree before calling `ready()`
|
|
1725
|
+
- `awaited: false`: do not wait for this child subtree; it loads/reacts in background
|
|
1726
|
+
|
|
1727
|
+
Use `awaited: true` for data the screen must have immediately, and `awaited: false` for optional or heavy branches.
|
|
1728
|
+
If not specified, a child inherits `awaited` from its parent.
|
|
1729
|
+
|
|
1719
1730
|
`options.maxConcurrent` controls how many child observer creations can run at
|
|
1720
|
-
the same time (`10` by default).
|
|
1731
|
+
the same time (`10` by default). This can only be defined at the publication root, not on children.
|
|
1721
1732
|
|
|
1722
1733
|
Why it matters:
|
|
1723
1734
|
|
|
@@ -1746,8 +1757,15 @@ Meteor.publish("posts.tree", function postsTree() {
|
|
|
1746
1757
|
Posts,
|
|
1747
1758
|
{ status: "published" },
|
|
1748
1759
|
{
|
|
1749
|
-
...args,
|
|
1750
1760
|
maxConcurrent: 5,
|
|
1761
|
+
children: [
|
|
1762
|
+
{ Coll: Users, on: ["authorId", "_id"], awaited: true },
|
|
1763
|
+
{
|
|
1764
|
+
Coll: FeatureFlags,
|
|
1765
|
+
on: { scope: "posts_publication" },
|
|
1766
|
+
awaited: false,
|
|
1767
|
+
},
|
|
1768
|
+
],
|
|
1751
1769
|
}
|
|
1752
1770
|
);
|
|
1753
1771
|
});
|
|
@@ -1788,7 +1806,7 @@ Falsy entries are ignored, which allows short-circuit declarations like
|
|
|
1788
1806
|
Object entries can be defined with either:
|
|
1789
1807
|
|
|
1790
1808
|
- explicit child args:
|
|
1791
|
-
- `{ Coll, on, fields?, deps?, children?, ...cursorOptions }`
|
|
1809
|
+
- `{ Coll, on, fields?, deps?, awaited?, children?, ...cursorOptions }`
|
|
1792
1810
|
- join shorthand:
|
|
1793
1811
|
- `{ join: "joinKey", ...overrides }`
|
|
1794
1812
|
|
|
@@ -1871,20 +1889,33 @@ For array selectors, implicit deps are auto-derived from the `from` key.
|
|
|
1871
1889
|
`publish()` supports lightweight lifecycle debugging with:
|
|
1872
1890
|
|
|
1873
1891
|
- `debug: true` to log all internal debug events
|
|
1892
|
+
- `debug: ["EVENT_NAME", ...]` to log selected events only
|
|
1874
1893
|
- `debug: { EVENT_NAME: true, ... }` to log selected events only
|
|
1875
1894
|
|
|
1876
|
-
|
|
1895
|
+
Observer events:
|
|
1896
|
+
|
|
1897
|
+
- `CREATED`: a new observer was successfully created and registered.
|
|
1898
|
+
- `BYPASSED`: observer creation was skipped because selector resolved to a void selector.
|
|
1899
|
+
- `REUSED`: an existing observer for the same query key was reused.
|
|
1900
|
+
- `INVALIDATED`: child observer graph for a parent document was recomputed after relevant parent changes.
|
|
1901
|
+
- `UNFOLLOWED`: one follower link to a sub-observer was removed.
|
|
1902
|
+
- `CANCELLED`: an observer was cancelled and its local cleanup started.
|
|
1903
|
+
|
|
1904
|
+
Observer documents events:
|
|
1905
|
+
|
|
1906
|
+
- `DOC_ADDED`: a document was published through `added`.
|
|
1907
|
+
- `DOC_CHANGED`: a published document emitted a `changed` update.
|
|
1908
|
+
- `DOC_REMOVED`: a document was removed from publication (observer count for that document dropped to zero).
|
|
1909
|
+
|
|
1910
|
+
Publication events (available on root only):
|
|
1877
1911
|
|
|
1878
|
-
- `
|
|
1879
|
-
- `
|
|
1880
|
-
- `DOC_ADDED`, `DOC_CHANGED`, `DOC_REMOVED`
|
|
1881
|
-
- `CANCELLED`, `UNFOLLOWED`, `STOPPED`, `READY`
|
|
1912
|
+
- `READY`: emitted once when `publish()` calls `publication.ready()`.
|
|
1913
|
+
- `STOPPED`: emitted once when the publication stop handler runs.
|
|
1882
1914
|
|
|
1883
1915
|
Debug scope:
|
|
1884
1916
|
|
|
1885
|
-
- Root `debug` applies to the root observer.
|
|
1886
|
-
-
|
|
1887
|
-
- Join-shorthand children (`{ join: "x", ... }`) can also provide `debug`.
|
|
1917
|
+
- Root `debug` applies to the root observer and root publication locations (`READY`, `STOPPED`).
|
|
1918
|
+
- Each child defines its own `debug` argument.
|
|
1888
1919
|
- Implicit join-derived children (from parent `fields`) inherit parent `debug`.
|
|
1889
1920
|
|
|
1890
1921
|
## Built-in optimizations
|
package/dist/coll-fns.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var n=require("ejson"),r=require("nanoid/non-secure");function e(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var t=/*#__PURE__*/e(n);function o(){return o=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)({}).hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n},o.apply(null,arguments)}function i(n,r){if(null==n)return{};var e={};for(var t in n)if({}.hasOwnProperty.call(n,t)){if(-1!==r.indexOf(t))continue;e[t]=n[t]}return e}function u(n){var r=function(n){if("object"!=typeof n||!n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var e=r.call(n,"string");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"==typeof r?r:r+""}var c={count:function(){throw new Error("'count' method must be defined with 'setProtocol'.")},findList:function(){throw new Error("'findList' method must be defined with 'setProtocol'.")},getName:function(){return""},getTransform:function(){},bindEnvironment:function(n){return n},insert:function(){throw new Error("'insert' method must be defined with 'setProtocol'.")},observe:function(){throw new Error("'observe' method must be defined with 'setProtocol'.")},remove:function(){throw new Error("'remove' method must be defined with 'setProtocol'.")},stringify:function(n){return t.default.stringify(n,{canonical:!0})},update:function(){throw new Error("'update' method must be defined with 'setProtocol'.")}},f=c;function l(n){return n?"function"==typeof n?n(f):"object"==typeof n?n:f:f}var a=function(){},s=function(n){return{}.toString.call(n).split(" ")[1].slice(0,-1).toLowerCase()},d=function(n){return Array.isArray(n)},v=function(n){return"function"==typeof n},h=function(n){return n&&!d(n)&&"object"===s(n)};function m(n){return v(null==n?void 0:n.then)}function p(n,r){return b(function(r){var e=r[0];return[n[e]||e,r[1]]},r)}function y(n,r){var e=n.split("."),t=e[0],o=function(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,t=Array(r);e<r;e++)t[e]=n[e];return t}(e).slice(1),i=r[t];if(o.length<1)return i;var u=o.join(".");return h(i)?y(u,i):d(i)?i.flatMap(function(n){var r=y(u,n);return d(r)?r:[r]}):i}function w(n,r){if(void 0===r&&(r=a),d(n)){var e=n;return e.some(m)?Promise.all(e).then(function(n){return r(n,!0)}):r(e,!1)}return m(n)?n.then(function(n){return r(n,!0)}):r(n,!1)}function b(n,r){if(void 0===r)return function(r){return b(n,r)};if(d(r))return r.map(n);if(!h(r))throw new TypeError("'map' only works on array or plain object");return Object.fromEntries(Object.entries(r).map(n))}function g(n,r){if(void 0===r)return function(r){return g(n,r)};if(d(r))return r.filter(n);if(!h(r))throw new TypeError("'filter' only works on array or plain object");return Object.fromEntries(Object.entries(r).filter(n))}function P(n,r){try{var e=n();m(e)&&e.catch(function(n){v(r)&&r(n)})}catch(n){v(r)&&r(n)}}function E(n,r){return Object.hasOwn?Object.hasOwn(n,r):Object.prototype.hasOwnProperty.call(n,r)}var j=["array","function","object"],C=j.join("', '"),O=new Map,x=null;function _(n){return O.get(n)||{}}function A(){return x}var S=["+"];function k(n,r){return void 0===r&&(r=!1),h(n)?r?M(n):n:n?void 0:{}}function M(n,r){var e;if(!n)return n;var t=Object.keys(n);return t.some(function(n){return n.startsWith("$")})?r?((e={})[r]=n,e):n:t.reduce(function(e,t){var i=t.indexOf(".");if(i>=0){var u=t.slice(0,i),c=n[u];if(c&&!h(c))return e}var f,l=n[t],a=r?[r,t].join("."):t;return h(l)?o({},e,M(l,a)):o({},e,((f={})[a]=!!l,f))},void 0)}function T(n,r){var e;if(void 0===r&&(r={}),!h(n))return{_:k(n)};var t=function(n,r){void 0===r&&(r={});var e=Object.keys(r),t=A();if(t){var c=n[t],f=i(n,[t].map(u));return o(c?{"+":g(function(n){return e.includes(n[0])},c)}:{"+":void 0},f)}return Object.entries(n).reduce(function(n,r){var t,i,u=r[0],c=r[1];return e.includes(u)?o({},n,{"+":o({},n["+"]||{},(i={},i[u]=c,i))}):o({},n,((t={})[u]=c,t))},{})}(n,r),c=t["+"],f=i(t,S);return c?f&&null!=(e=Object.keys(f))&&e.length?{_:k(Object.keys(c).reduce(function(n,e){var t,i=r[e],u=i.on,c=i.deps,f=void 0===c?i.fields:c,l=Array.isArray(u)?((t={})[u[0]]=1,t):void 0;return l||f?o({},n,l,f):n},f),!0),"+":c}:{_:k(f,!0),"+":c}:{_:k(f,!0),"+":void 0}}function D(n,r){if(!I(n)&&!I(r))return n||r?N(R(n),R(r)):{}}function N(n,r){void 0===n&&(n={}),void 0===r&&(r={});for(var e=o({},n),t=0,i=Object.entries(r||{});t<i.length;t++){var u=i[t],c=u[0],f=u[1],l=e[c];e[c]=h(l)&&h(f)?N(l,f):f}return e}function I(n){return void 0===n||!!n&&!h(n)}function R(n){return h(n)?g(function(n){return n[1]},n):{}}function L(n,r){var e,t,i,u;if(!h(r))return r;var c=A(),f=c?null==(e=r[c])?void 0:e[n]:r[n];if("number"!=typeof f)return r;if(Infinity===f)return r;var l=f-1;return o({},r,c?((u={})[c]=o({},r[c],((i={})[n]=l,i)),u):((t={})[n]=l,t))}var $=["fields","transform"],F=["_key","Coll","on","single","postFetch","limit"],J=["_key","Coll","on","single","postFetch","limit"];function U(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=l(),u=t.count,c=t.findList,f=t.getTransform,a=_(n),m=f(n),p=e.fields,b=e.transform,g=void 0===b?m:b,P=i(e,$),E=function(n){return v(g)?g(n):n},j=T(p,a),C=j._,O=j["+"],x=void 0===O?{}:O,A=Object.keys(x);return!a||null==A||!A.length||p&&!h(p)?w(c(n,r,o({},P,{fields:C,transform:null})),function(n){return n.map(E)}):w(c(n,r,o({},P,{fields:C,transform:null})),function(r){var t=function(n,r){return void 0===n&&(n=[]),void 0===r&&(r={}),n.reduce(function(n,e){var t,i=r[e];if(!i)return n;var u=s(i.on),c=o({},i,{_key:e});return o({},n,((t={})[u]=[].concat(n[u]||[],[c]),t))},{})}(A,a),c=t.array,f=t.object,l=void 0===f?[]:f,m=t.function,b=void 0===m?[]:m;return w((void 0===c?[]:c).reduce(function(r,t){var c=t._key,f=t.Coll,l=t.on,a=t.single,m=t.postFetch,b=i(t,F);return w(r,function(r){var t,i,P=l[0],E=l[1],j=l[2],C=void 0===j?{}:j,O=d(P),A=O?r.flatMap(function(n){return n[P[0]]}):r.map(function(n){return n[P]}),S=d(E),M=o({},C,S?((t={})[E[0]]={$elemMatch:{$in:A}},t):((i={})[E]={$in:A},i)),D=f===n&&x[c]>1;return w(D&&u(n,M),function(n){var t,i=D&&!n,u=D?L(c,p):x[c],l=T(u,_(f)||{})._,j=!l||Object.keys(l).length<=0,C=h(u)&&!j&&"_id"!==E?o({},u,((t={})[E]=1,t)):u,A=o({},e,b,{fields:k(C),limit:void 0,transform:D?g:void 0});return w(i?[]:U(f,M,A),function(n){var e=S?{}:n.reduce(function(n,r){var e,t=y(E,r);return d(t)?t.reduce(function(n,e){var t;return o({},n,((t={})[e]=[].concat(n[e]||[],[r]),t))},n):o({},n,((e={})[t]=[].concat(n[t]||[],[r]),e))},{});return r.map(function(r){var t,i,u,f,l=[];S?l=n.filter(function(n){var e,t=n[E[0]]||[];return O?(e=t,(r[P[0]]||[]).some(function(n){return e.indexOf(n)>=0})):t.includes(r[P])}):O?(i="_id",u=(r[P[0]]||[]).flatMap(function(n){return e[n]||[]}),f=v(i)?i:"string"===s(i)?function(n){return n[i]}:function(n){return n},l=u.reduce(function(n,r){var e=f(r);return n.find(function(n){return f(n)===e})?n:[].concat(n,[r])},[])):l=e[r[P]]||[];var d=a?l[0]:l,h=v(m)?m(d,r):d;return o({},r,((t={})[c]=h,t))})})})})},r),function(r){return w(l.map(function(r){return K({Coll:n,join:r,fields:x[r._key],subSelector:r.on,options:P,parentFields:p})}),function(e){return w(r.map(function(r){var t=e.reduce(function(n,r){return r(n)},r);return w(b.reduce(function(e,t){var o=t.on;return w([e,K({Coll:n,join:t,fields:x[t._key],subSelector:v(o)?o(r):o,options:P,parentFields:p})],function(n){return(0,n[1])(n[0])})},t),function(n){return E(n)})}),function(n){return n})})})})}function q(n,r,e){return void 0===e&&(e={}),w(U(n,r,o({},e,{limit:1})),function(n){return n[0]})}function z(n,r){return w(q(n,r,{fields:{_id:1}}),function(n){return!!n})}function K(n){var r=n.Coll,e=n.join,t=e._key,u=e.Coll,c=e.single,f=e.postFetch,a=e.limit,s=i(e,J),d=n.fields,h=n.subSelector,m=n.options,p=n.parentFields,y=l(),b=u===r;return w(b&&(0,y.count)(r,h),function(n){var r=b&&(!d||!n),e=b?L(t,p):d,i=o({},m,s,{fields:k(e),limit:c?1:a||void 0});return w(r?[]:U(u,h,i),function(n){return function(r){var e,i=c?n[0]:n,u=v(f)?f(i,r):i;return o({},r,((e={})[t]=u,e))}})})}var V="drop",W="shift",Y=!1,B=H({maxConcurrent:10,maxPending:250});function G(){return Y=!0,B}function H(n){var r=function(n){try{if(a.size>=t)throw new Error("Max concurrent calls reached");var e=function(r,e){try{var t=function(r,e){try{var t=function(){a.add(n);var r=n.args;return Promise.resolve(n.fn.apply(void 0,void 0===r?[]:r)).then(function(){})}()}catch(n){return e(n)}return t&&t.then?t.then(void 0,e):t}(0,function(r){!function(n,r){var e=v(u)?u:console.error;Promise.resolve().then(function(){return e(n,r)}).catch(function(n){return console.error(n)})}(r,n)})}catch(n){return e(!0,n)}return t&&t.then?t.then(e.bind(null,!1),e.bind(null,!0)):e(!1,t)}(0,function(e,o){if(a.delete(n),function(){if(!(a.size>=t)){var n=l.shift();n&&r(n)}}(),e)throw o;return o});return Promise.resolve(e&&e.then?e.then(function(){}):void 0)}catch(n){return Promise.reject(n)}},e=n.maxConcurrent,t=void 0===e?10:e,o=n.maxPending,i=void 0===o?250:o,u=n.onError,c=n.onOverflow,f=void 0===c?Q:c;!function(n){void 0===n&&(n={});var r=n.maxConcurrent,e=n.maxPending,t=n.onOverflow;if(!(Number.isFinite(r)&&Number.isInteger(r)&&r>=1))throw new TypeError("'maxConcurrent' must be a finite positive integer.");if(!(Infinity===e||Number.isInteger(e)&&e>=0))throw new TypeError("'maxPending' must be a positive integer or `Infinity`");if(!v(t)&&![V,W].includes(t))throw new TypeError("'onOverflow' must be either a function or one of '"+V+"' or '"+W+"'")}({maxConcurrent:t,maxPending:i,onError:u,onOverflow:f});var l=[],a=new Set;function s(n){a.size<t?r(n):l.length<i?l.push(n):function(n){f!==V&&(f===W?(l.shift(),l.length<i&&s(n)):v(f)?function(n){var r=[].concat(l,[n]),e=f([].concat(l),n);if(void 0!==e){if(!Array.isArray(e))throw new TypeError("'onOverflow' must return an array");var t=e.reduce(function(n,e){var t=e._id,o=r.find(function(n){return n._id===t});return o?n.includes(o)?n:[].concat(n,[o]):n},[]);l=t}}(n):console.error("Invalid 'onOverflow'"))}(n)}return{add:function(n){s({_id:Symbol(),fn:n,args:Array.from([].slice.call(arguments,1))})},clear:function(){l=[]}}}function Q(){console.warn("'maxPending' limit reached. Call is dropped")}var X,Z=["beforeInsert","beforeUpdate","beforeRemove","onInserted","onUpdated","onRemoved"],nn=["onInserted","onUpdated","onRemoved"],rn=new Map;function en(n,r){var e=rn.get(n)||{};return r?e[r]:e}function tn(n,r){var e=en(n,r);if(e)return function(n,r){if(void 0===n&&(n=[]),void 0===r&&(r=!1),n.length){var e=function(n){return void 0===n&&(n=[]),n.reduce(function(n,r){return{fields:D(n.fields,r.fields),before:n.before||r.before}},{fields:null,before:void 0})}(n);return{before:e.before,fields:e.fields,fn:function(){var e=[].slice.call(arguments);if(!r)return w(n.map(function(n){return un.apply(void 0,[n].concat(e))}));n.forEach(function(n){return on.apply(void 0,[o({},n,{fireAndForget:r})].concat(e))})}}}}(e,nn.includes(r))}function on(n){void 0===n&&(n={});var r=null!=X?X:X||(X=G());r.add.apply(r,[un,n].concat([].slice.call(arguments,1)))}function un(n){void 0===n&&(n={});var r=[].slice.call(arguments,1),e=n.fireAndForget,t=n.fn,o=n.onError,i=n.unless,u=n.when,c=l().bindEnvironment;function f(n){var r=[].slice.call(arguments,1);if(v(n))return e&&v(c)?c(n).apply(void 0,r):n.apply(void 0,r)}if(v(t)){var a=function(r){if(!v(o))throw r;f(o,r,n)};try{var s=w(f.apply(void 0,[i].concat(r)),function(n){if(!n)return w(!u||f.apply(void 0,[u].concat(r)),function(n){if(n)return f.apply(void 0,[t].concat(r))})});return m(s)?s.catch(a):s}catch(n){return a(n)}}}function cn(n,r){var e;null==(e=console)||e.error("Error in '"+r.hookType+"' hook of '"+r.collName+"' collection:",n)}function fn(n,r){var e=l(),t=tn(n,"beforeRemove"),o=tn(n,"onRemoved"),i=function(){var n=[].slice.call(arguments).filter(function(n){return n});return n.length?n.reduce(function(n,r){return D(n,r.fields)},null):null}(t,o);return w(null===i?[]:U(n,r,{fields:i}),function(i){return w(v(null==t?void 0:t.fn)&&t.fn(i),function(){return w(e.remove(n,r),function(n){return n&&v(null==o?void 0:o.fn)?(P(function(){return i.forEach(function(n){return o.fn(n)})},function(n){var r;return null==(r=console)?void 0:r.error("'onRemoved' error:",n)}),n):n})})})}var ln=["Coll","children","deps","debug","fields","selector","on"],an=["join"],sn=["maxConcurrent","on"],dn=["Coll","selector","children","deps","debug","on"],vn=["Coll","selector","children","on"];function hn(n,r){try{var e=n()}catch(n){return r(n)}return e&&e.then?e.then(void 0,r):e}var mn="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function pn(n,r,e){if(!n.s){if(e instanceof yn){if(!e.s)return void(e.o=pn.bind(null,n,r));1&r&&(r=e.s),e=e.v}if(e&&e.then)return void e.then(pn.bind(null,n,r),pn.bind(null,n,2));n.s=r,n.v=e;var t=n.o;t&&t(n)}}var yn=/*#__PURE__*/function(){function n(){}return n.prototype.then=function(r,e){var t=new n,o=this.s;if(o){var i=1&o?r:e;if(i){try{pn(t,1,i(this.v))}catch(n){pn(t,2,n)}return t}return this}return this.o=function(n){try{var o=n.v;1&n.s?pn(t,1,r?r(o):o):e?pn(t,1,e(o)):pn(t,2,o)}catch(n){pn(t,2,n)}},t},n}();function wn(n){return n instanceof yn&&1&n.s}var bn=function(n,r){void 0===r&&(r=[]);try{var e,t=function(t){if(e)return t;if(d(n)){var i=(r||[])[0];if(!i)return console.warn("[`publish`]: A parent is necessary to use a join selector."),Cn;var u,c=n[0],f=n[1],l=n[2],a=d(c),s=d(f);if(!a&&!s){var v,h=i[c];if(void 0===h)return Cn;(v={})[f]=h,u=v}if(a&&!s){var m,p=i[c[0]];if(void 0===p)return Cn;(m={})[f]={$in:p||[]},u=m}if(!a&&s){var y,w=i[c];if(void 0===w)return Cn;(y={})[f[0]]={$elemMatch:{$eq:w}},u=y}if(a&&s){var b,g=i[c[0]];if(void 0===g)return Cn;(b={})[f[0]]={$elemMatch:{$in:g||[]}},u=b}return u?l?o({},l,u):u:Cn}return"object"==typeof n?n:Cn};if(!n)return Promise.resolve(Cn);var i=function(){if(v(n))return Promise.resolve(n.apply(void 0,r)).then(function(n){return n?(e=1,n):(console.warn("[`publish`]: `selector` function should produce a valid selector object"),e=1,Cn)})}();return Promise.resolve(i&&i.then?i.then(t):t(i))}catch(n){return Promise.reject(n)}},gn="|";function Pn(){var n=new Map;return n.find=function(r,e){var t=n.get(r);if(t)return Array.from(t.values()).find(e)},n.push=function(r,e){var t=n.get(r);return t?t.add(e):n.set(r,new Set([e])),n},n.pull=function(r,e){if(!n.has(r))return n;var t=n.get(r);return t&&(t.delete(e),t.size||n.delete(r)),n},n}function En(n,r){void 0===r&&(r={});var e=l();return[e.getName(n),e.stringify(r)].join(gn)}function jn(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=l(),o=e.fields,i=e.limit,u=e.skip,c=e.sort;return En(n,r)+[o,c,i,u].filter(function(n){return void 0!==n}).map(function(n){return h(n)?t.stringify(n):n.toString()}).join(gn)}var Cn={_id:{$exists:!1}};function On(n){if(void 0!==n)return"boolean"==typeof n?n:v(n)?function(){try{return Promise.resolve(n.apply(void 0,[].slice.call(arguments))).then(On)}catch(n){return Promise.reject(n)}}:d(n)?n:h(n)?Object.entries(n).filter(function(n){return n[1]}).map(function(n){return n[0]}):n instanceof Set?[].concat(n):"string"==typeof n&&[n]}function xn(n){return function(r){var e;n&&(!0===n||null!=n&&n[r])&&(e=console).log.apply(e,[r].concat([].slice.call(arguments,1)))}}function _n(n,r,e){var t,i=null==(t=_(n))?void 0:t[r];if(!i){var u=l();throw new Error("Join '"+r+"' is not defined on collection '"+u.getName(n)+"'.")}var c=i.deps;return o({Coll:i.Coll,on:i.on,deps:void 0===c?i.fields:c,limit:i.single?1:i.limit},e)}var An=["multi"];function Sn(n,r,e,t){var u=void 0===t?{}:t,c=u.multi,f=void 0===c||c,a=i(u,An),s=l(),d=tn(n,"beforeUpdate"),h=tn(n,"onUpdated"),m=o({multi:f},a),p=function(n,r){if(!n&&!r)return null;if(!r)return null==n?void 0:n.fields;var e=r.before?r.fields:{_id:1};return n?D(n.fields,e):e}(d,h);return w(null===p?[]:U(n,r,{fields:p,limit:f?void 0:1}),function(t){return w(v(null==d?void 0:d.fn)&&d.fn(t,e),function(){return w(s.update(n,r,e,m),function(r){if(!r||!v(null==h?void 0:h.fn))return r;var e=function(n){return void 0===n&&(n=[]),Object.fromEntries(n.map(function(n){return[n._id,n]}))}(t);return w(U(n,{_id:{$in:Object.keys(e)}},{fields:h.fields}),function(n){return P(function(){return n.forEach(function(n){h.fn(n,e[n._id])})},function(n){var r;return null==(r=console)?void 0:r.error("'onUpdated' error:",n)}),r})})})})}var kn=new Map;function Mn(n){return!n||h(n)}function Tn(n){return Array.isArray(n)&&2===n.length&&h(n[0])&&(h(r=n[1])||"string"==typeof r);var r}var Dn=["multi"],Nn=["multi"],In={__proto__:null,meteorAsync:{count:function(n,r,e){var t=n.rawCollection();return t.countDocuments?t.countDocuments(r):n.find(r,e).countAsync()},findList:function(n,r,e){return n.find(r,e).fetchAsync()},getName:function(n){return n._name||""},getTransform:function(n){return n._transform},insert:function(n,r){return n.insertAsync(r)},observe:function(n,r,e,t){return n.find(r,t).observeChangesAsync(e)},remove:function(n,r){return n.removeAsync(r)},update:function(n,r,e,t){return n.updateAsync(r,e,o({multi:!0},t))}},meteorSync:{count:function(n,r,e){return n.find(r,e).count()},findList:function(n,r,e){return n.find(r,e).fetch()},getName:function(n){return n._name||""},getTransform:function(n){return n._transform},bindEnvironment:function(n){var r=null==globalThis?void 0:globalThis.Meteor,e=null==r?void 0:r.bindEnvironment;return"function"!=typeof e?n:e(n)},insert:function(n,r){return n.insert(r)},observe:function(n,r,e,t){return n.find(r,t).observeChanges(e)},remove:function(n,r){return n.remove(r)},update:function(n,r,e,t){return n.update(r,e,o({multi:!0},t))}},node:{count:function(n,r,e){return void 0===r&&(r={}),void 0===e&&(e={}),n.countDocuments(r||{},e)},findList:function(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=p({fields:"projection"},e||{});return n.find(r||{},t).toArray()},getName:function(n){return n.collectionName||""},getTransform:function(n){return"function"==typeof(null==n?void 0:n.transform)?n.transform:void 0},insert:function(n,r,e){return n.insertOne(r,e).then(function(n){return null==n?void 0:n.insertedId})},remove:function(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=e||{},o=t.multi,u=void 0===o||o,c=i(t,Dn);return(u?n.deleteMany(r||{},c):n.deleteOne(r||{},c)).then(function(n){var r;return null!=(r=null==n?void 0:n.deletedCount)?r:0})},update:function(n,r,e,t){void 0===r&&(r={}),void 0===e&&(e={}),void 0===t&&(t={});var o=t||{},u=o.multi,c=void 0===u||u,f=i(o,Nn);return(c?n.updateMany(r||{},e||{},f):n.updateOne(r||{},e||{},f)).then(function(n){var r,e;return null!=(r=null!=(e=null==n?void 0:n.modifiedCount)?e:null==n?void 0:n.upsertedCount)?r:0})}}};exports.configurePool=function(n){if(void 0===n&&(n={}),Y)throw new Error("'configurePool' must be called at startup before processing hooks");B=H(n)},exports.count=function(n,r,e){return w((0,l().count)(n,r,e),function(n){return n})},exports.exists=z,exports.fetchIds=function(n,r,e){return w(U(n,r,o({},e,{fields:{_id:1}})),function(n){return n.map(function(n){return n._id})})},exports.fetchList=U,exports.fetchOne=q,exports.flattenFields=M,exports.getJoinPrefix=A,exports.getJoins=_,exports.hook=function(n,r){Object.entries(r).forEach(function(r){var e=r[0],t=r[1];if(!d(t))throw new TypeError("'"+e+"' hooks must be an array");t.forEach(function(r){return function(n,r,e){var t;if(!Z.includes(r))throw new TypeError("'"+r+"' is not a valid hook type");if(!v(null==e?void 0:e.fn))throw new TypeError("'hook' must be a function or contain a 'fn' key");var i=l().getName,u=en(n),c=u[r]||[],f=o({onError:nn.includes(r)?cn:void 0},e,{Coll:n,collName:i(n),hookType:r}),a=[].concat(c,[f]);rn.set(n,o({},u,((t={})[r]=a,t)))}(n,e,r)})})},exports.insert=function(n,r){var e=l(),t=tn(n,"beforeInsert");return w(v(null==t?void 0:t.fn)&&t.fn(r),function(){var t=tn(n,"onInserted");return w(e.insert(n,r),function(r){if(!t)return r;var e=t.fields,o=t.fn,i=e?Object.keys(e):[];return w(1===i.length&&"_id"===i[0]?{_id:r}:q(n,{_id:r},{fields:e}),function(n){return P(function(){return o(n)},function(n){var r;return null==(r=console)?void 0:r.error("'onInserted' error:",n)}),r})})})},exports.join=function(n,r){r?(Object.entries(r).forEach(function(n){var r=n[0],e=n[1],t=e.on,o=e.deps,i=void 0===o?e.fields:o;if(!e.Coll)throw new Error("Collection 'Coll' for '"+r+"' join is required.");if(!t)throw new Error("Join '"+r+"' has no 'on' condition specified.");var u=s(t);if(!j.includes(u))throw new Error("Join '"+r+"' has an unrecognized 'on' condition type of '"+u+"'. Should be one of '"+C+"'.");v(t)&&!i&&function(){var n;console&&console.warn&&(n=console).warn.apply(n,[].slice.call(arguments))}("Join '"+r+"' is defined with a function 'on', but no 'deps' are explicitly specified. This could lead to failed joins if the keys necessary for the join are not specified at query time.")}),O.set(n,o({},O.get(n),r))):O.set(n,void 0)},exports.protocols=In,exports.publish=function(n,e,t,u){void 0===u&&(u={});try{if(!v(n.ready))throw new Error("'publication' context with a 'ready' method must be passed to 'publish'");var c=o({},u,{Coll:e,selector:t});return Promise.resolve(hn(function(){return Promise.resolve(function(n,e){void 0===e&&(e={});try{var t=function(e,c){void 0===e&&(e={});var f=(void 0===c?{}:c).ancestors,a=void 0===f?[]:f;try{if(s)return Promise.resolve(null);var b=function(n){var r=n.Coll,e=n.children,t=void 0===e?[]:e,u=n.deps,c=n.debug,f=n.fields,a=n.selector,s=n.on,d=void 0===s?a:s,v=i(n,ln),m=T(f,_(r)),p=m._,y=m["+"],w=void 0===y?{}:y,b=Object.keys(w),g=t.reduce(function(n,e){if(!e)return n;if(!h(e)){var t=l();throw new Error("Each child of '"+t.getName(r)+"' collection must be an object or a falsy value to ignore.")}if(!e.join)return[].concat(n,[e]);var o=e.join,u=i(e,an);if(b.includes(o))throw new Error("Join '"+o+"' is defined both in parent fields and as an explicit child. Choose one or the other.");return[].concat(n,[_n(r,o,u)])},[]),P=b.map(function(n){return _n(r,n,{debug:c,fields:w[n]})});return o({Coll:r,selector:a,fields:p,children:[].concat(g,P),deps:u,debug:c,on:d},v)}(e),g=b.Coll,P=b.selector,j=b.children,C=void 0===j?[]:j,O=b.debug,x=b.on,A=void 0===x?P:x,S=i(b,dn);if(!P&&!A)throw new Error("'selector' or 'on' is necessary to create an observer.");var k=xn(O),M=C.filter(h),D=r.nanoid(),N=function(n){return[D,R,n].join(gn)},I=l(),R=I.getName(g),L=!1,$=new Set;return Promise.resolve(bn(A,a)).then(function(e){var c=function(n,r,e,o){try{return L||s?Promise.resolve():_.check(r,e)?Promise.resolve(t(n,{ancestors:o})).then(function(n){n&&(L||s||!_.check(r,e)?n.unfollowMaybeCancel(r):(u(r,n),$.add(n)))}):Promise.resolve()}catch(n){return Promise.reject(n)}},f=En(g,e),l=jn(g,e,S),b=function(n){if(null==n||!n.length)return function(){return!1};var r=n.reduce(function(n,r){if(n){var e=function(n){var r=n.on,e=void 0===r?n.selector:r,t=On(n.deps);if("boolean"==typeof t)return t;if(h(e)&&void 0===t)return[];if(!d(e))return t;var o=e[0],i=d(o)?o[0]:o;return d(t)?[i].concat(t):v(t)?[i,t]:[i]}(r);return!0===e||void 0===e||(d(e)?e.forEach(function(r){return n.add(r)}):n.add(e),n)}},new Set);if(!0===r)return function(){return!0};var e=Array.from(r).map(function(n){return function(r){try{var e,t=function(t){return e?t:"string"!=typeof n||E(r,n)},o=arguments;if("boolean"==typeof n)return Promise.resolve(n);var i=function(){if(v(n))return Promise.resolve(n.apply(void 0,[r].concat([].slice.call(o,1)))).then(function(n){if(d(n)){var t=n.some(function(n){return E(r,n)});return e=1,t}return e=1,!n})}();return Promise.resolve(i&&i.then?i.then(t):t(i))}catch(n){return Promise.reject(n)}}});return function(){try{var n,r=arguments,t=function(n,r,e){if("function"==typeof n[mn]){var t,o,i,u=function(n){try{for(;!((t=c.next()).done||e&&e());)if((n=r(t.value))&&n.then){if(!wn(n))return void n.then(u,i||(i=pn.bind(null,o=new yn,2)));n=n.v}o?pn(o,1,n):o=n}catch(n){pn(o||(o=new yn),2,n)}},c=n[mn]();if(u(),c.return){var f=function(n){try{t.done||c.return()}catch(n){}return n};if(o&&o.then)return o.then(f,function(n){throw f(n)});f()}return o}if(!("length"in n))throw new TypeError("Object is not iterable");for(var l=[],a=0;a<n.length;a++)l.push(n[a]);return function(n,r,e){var t,o,i=-1;return function u(c){try{for(;++i<n.length&&(!e||!e());)if((c=r(i))&&c.then){if(!wn(c))return void c.then(u,o||(o=pn.bind(null,t=new yn,2)));c=c.v}t?pn(t,1,c):t=c}catch(n){pn(t||(t=new yn),2,n)}}(),t}(l,function(n){return r(l[n])},e)}(e,function(e){return Promise.resolve(e.apply(void 0,[].slice.call(r))).then(function(r){if(r)return n=!0})},function(){return n});return Promise.resolve(t&&t.then?t.then(function(r){return!!n&&r}):!!n&&t)}catch(n){return Promise.reject(n)}}}(M),P=p.get(l);if(P)return k("REUSED",f),P;var j,C,O,x=new Set,_=(j=new Map,{check:function(n,r){return j.get(n)===r},register:function(n){var e=r.nanoid();return j.set(n,e),e},remove:function(n){j.delete(n)}}),A=new Promise(function(n,r){C=n,O=r});function T(n,r){r.unfollowMaybeCancel(n),$.delete(r),m.pull(n,r)}function F(r,e){var t,o=[r,e].join("|");x.delete(o);var i=null!=(t=y.get(o))?t:0,u=Math.max(0,i-1);u<=0?(y.delete(o),k("DOC_REMOVED",r,e),null==n.removed||n.removed(r,e)):y.set(o,u)}return p.set(l,A),hn(function(){if(e===Cn)return k("BYPASSED",f),p.delete(l),C(null),null;var r={added:function(r,e){try{if(L)return Promise.resolve();if(function(r,e,t){var o,i=[r,e].join("|");x.add(i);var u=null!=(o=y.get(i))?o:0;y.set(i,u+1),k("DOC_ADDED",r,e),null==n.added||n.added(r,e,t)}(R,r,e),null==M||!M.length)return Promise.resolve();var t=N(r),i=_.register(t),u=[o({},e,{_id:r})].concat(a);return M.forEach(function(n){return w.add(c,n,t,i,u)}),Promise.resolve()}catch(n){return Promise.reject(n)}},changed:function(r,e){try{return L?Promise.resolve():(k("DOC_CHANGED",R,r,e),null==n.changed||n.changed(R,r,e),null!=M&&M.length?Promise.resolve(q(g,{_id:r},{fields:S.fields,transform:null})).then(function(n){var t=[n].concat(a);return Promise.resolve(b.apply(void 0,[e].concat(t))).then(function(n){if(n){k("INVALIDATED",f);var e=N(r);return Promise.resolve(function(n){try{var r=m.get(n);return r?Promise.resolve(Promise.all(r.values())).then(function(n){return new Map(n.map(function(n){return[n.queryKey,n]}))}):Promise.resolve(new Map)}catch(n){return Promise.reject(n)}}(e)).then(function(n){return Promise.resolve(function(n,r){try{return null!=r&&r.length?Promise.resolve(Promise.all(r.map(function(r){var e=r.Coll,t=r.on,o=void 0===t?r.selector:t,u=i(r,vn);return Promise.resolve(bn(o,n)).then(function(n){return[jn(e,n,u),r]})}))).then(function(n){return new Map(n)}):Promise.resolve(new Map)}catch(n){return Promise.reject(n)}}(t,M)).then(function(r){var o=Array.from(r.entries()).reduce(function(r,e){var t=e[1];return n.has(e[0])?r:[].concat(r,[t])},[]);if(o.length){var i=_.register(e);o.forEach(function(n){w.add(c,n,e,i,t)})}n.forEach(function(n,t){r.has(t)||w.add(T,e,n)})})})}})}):Promise.resolve())}catch(n){return Promise.reject(n)}},removed:function(n){if(!L){F(R,n);var r=N(n);_.remove(r),(m.get(r)||new Set).forEach(function(n){return w.add(T,r,n)})}}};return Promise.resolve(I.observe(g,e,r,S)).then(function(n){return k("CREATED",f),s?(n.stop(),p.delete(l),C(null),null):(n.id=D,n.queryKey=l,n.docsList=x,n.cancel=function(){L||(n.stop(),$.forEach(function(n){return n.unfollowMaybeCancel()}),$.clear(),Array.from(m.entries()).forEach(function(n){var r=n[0],e=n[1],t=void 0===e?new Set:e;(function(n){return n.split(gn)[0]===D})(r)&&(t.forEach(function(n){return n.unfollowMaybeCancel(r)}),m.delete(r))}),Array.from(x).forEach(function(n){var r=n.split("|");F(r[0],r[1])}),x.clear(),p.delete(l),L=!0,k("CANCELLED",f))},n.unfollowMaybeCancel=function(r){n.followers&&(n.followers.delete(r),k("UNFOLLOWED","from",f,"by",r)),m.pull(r,n),(!n.followers||n.followers.size<1)&&n.cancel()},p.set(l,n),C(n),n)})},function(n){throw p.delete(l),O(n),n})})}catch(n){return Promise.reject(n)}},u=function(n,r){var e=r.followers;e?e.add(n):r.followers=new Set([n]),m.push(n,r)},c=xn(e.debug),f=e.maxConcurrent,a=i(e,sn),s=!1,m=Pn(),p=Pn(),y=Pn(),w=H({maxConcurrent:null!=f?f:10,maxPending:Infinity});return Promise.resolve(t(a)).then(function(r){if(!r)throw new Error("`publish` failed to create root observer");var e={stop:function(){s=!0,r.cancel(),p.forEach(function(n){return null==n||null==n.cancel?void 0:n.cancel()}),p.clear(),m.clear(),c("STOPPED")}};return null==n.onStop||n.onStop(e.stop),n.ready(),c("READY"),e})}catch(n){return Promise.reject(n)}}(n,c))},function(r){if(!v(n.error))throw r;n.error(r)}))}catch(n){return Promise.reject(n)}},exports.registerSoftRemove=function(n,r){var e=void 0===r?{}:r,t=e.docToCollSelectorPairs,o=e.fields,i=void 0===o?{_id:1}:o,u=e.keepModifier,c=e.when;if(!h(n))throw new TypeError("Collection must be an object");var f=l().getName(n);if(kn.has(n))throw new Error("'registerSoftRemove' already exists for collection '"+f+"'");if(![t,c].some(v))throw new TypeError("'"+f+"' 'registerSoftRemove' must provide at least one predicate.");kn.set(n,{fields:i,defaultKeepModifier:u,shouldKeepDoc:function(n){return w(v(c)&&c(n),function(r){return!!r||!!v(t)&&w(function(n,r){return w(n(r),function(n){if(!Array.isArray(n)||!n.every(Tn))throw new TypeError("'docToCollSelectorPairs' should return an array of '[Coll, selector]' tuples");return n})}(t,n),function(n){return w(function(n){return void 0===n&&(n=[]),w(n.map(function(n){return z(n[0],n[1])}),function(n){return n.some(function(n){return n})})}(n),function(n){return!!n})})})}})},exports.remove=fn,exports.setJoinPrefix=function(n){x=n},exports.setProtocol=function(n){void 0===n&&(n={}),f=o({},c,n)},exports.softRemove=function(n,r,e,t){void 0===r&&(r={});var i=(void 0===t?{}:t).detailed,u=void 0!==i&&i,c=function(n){var r=kn.get(n);if(!r){var e=l().getName(n);throw new Error("'softRemove' must be registered with 'registerSoftRemove' before using it with collection '"+e+"'")}return r}(n),f=c.fields,a=c.shouldKeepDoc,s=c.defaultKeepModifier;function d(n){var r=n.removed,e=void 0===r?0:r,t=n.updated,o=void 0===t?null:t;return u?{removed:e,updated:o}:(null!=e?e:0)+(null!=o?o:0)}return w(U(n,r,{fields:o({},null!=f?f:{},{_id:1}),transform:null}),function(t){return w(t.map(function(n){return w(a(n),function(r){return r?n._id:null})}),function(t){var o=t.filter(function(n){return null!==n});return o.length?w(function(n){if(Mn(n))return n||null;if(v(n))return w(n(),function(n){if(Mn(n))return n||null;throw new TypeError("'keepModifier' must be a valid modifier, a falsy value or a function that returns one of those.")});throw new TypeError("'keepModifier' must be a valid modifier, a falsy value or a function that returns one of those.")}(null!=e?e:s),function(e){return w([fn(n,{$and:[h(r)?r:{_id:r},{_id:{$nin:o}}]}),e?Sn(n,{_id:{$in:o}},e):null],function(n){return d({removed:n[0],updated:n[1]})})}):w(fn(n,r),function(n){return d({removed:n})})})})},exports.update=Sn;
|
|
1
|
+
var n=require("ejson"),r=require("nanoid/non-secure");function e(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}var t=/*#__PURE__*/e(n);function o(){return o=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)({}).hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n},o.apply(null,arguments)}function i(n,r){if(null==n)return{};var e={};for(var t in n)if({}.hasOwnProperty.call(n,t)){if(-1!==r.indexOf(t))continue;e[t]=n[t]}return e}function u(n){var r=function(n){if("object"!=typeof n||!n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var e=r.call(n,"string");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"==typeof r?r:r+""}var c={count:function(){throw new Error("'count' method must be defined with 'setProtocol'.")},findList:function(){throw new Error("'findList' method must be defined with 'setProtocol'.")},getName:function(){return""},getTransform:function(){},bindEnvironment:function(n){return n},insert:function(){throw new Error("'insert' method must be defined with 'setProtocol'.")},observe:function(){throw new Error("'observe' method must be defined with 'setProtocol'.")},remove:function(){throw new Error("'remove' method must be defined with 'setProtocol'.")},stringify:function(n){return t.default.stringify(n,{canonical:!0})},update:function(){throw new Error("'update' method must be defined with 'setProtocol'.")}},f=c;function l(n){return n?"function"==typeof n?n(f):"object"==typeof n?n:f:f}var a=function(){},s=function(n){return{}.toString.call(n).split(" ")[1].slice(0,-1).toLowerCase()},d=function(n){return Array.isArray(n)},v=function(n){return"function"==typeof n},h=function(n){return n&&!d(n)&&"object"===s(n)};function m(n){return v(null==n?void 0:n.then)}function p(n,r){return g(function(r){var e=r[0];return[n[e]||e,r[1]]},r)}function y(n,r){var e=n.split("."),t=e[0],o=function(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,t=Array(r);e<r;e++)t[e]=n[e];return t}(e).slice(1),i=r[t];if(o.length<1)return i;var u=o.join(".");return h(i)?y(u,i):d(i)?i.flatMap(function(n){var r=y(u,n);return d(r)?r:[r]}):i}function w(n,r){if(void 0===r&&(r=a),d(n)){var e=n;return e.some(m)?Promise.all(e).then(function(n){return r(n,!0)}):r(e,!1)}return m(n)?n.then(function(n){return r(n,!0)}):r(n,!1)}function g(n,r){if(void 0===r)return function(r){return g(n,r)};if(d(r))return r.map(n);if(!h(r))throw new TypeError("'map' only works on array or plain object");return Object.fromEntries(Object.entries(r).map(n))}function b(n,r){if(void 0===r)return function(r){return b(n,r)};if(d(r))return r.filter(n);if(!h(r))throw new TypeError("'filter' only works on array or plain object");return Object.fromEntries(Object.entries(r).filter(n))}function E(n,r){try{var e=n();m(e)&&e.catch(function(n){v(r)&&r(n)})}catch(n){v(r)&&r(n)}}function P(n,r){return Object.hasOwn?Object.hasOwn(n,r):Object.prototype.hasOwnProperty.call(n,r)}function j(n){void 0===n&&(n=function(){return r.nanoid()});var e=new Map,t=new Map;function o(n){return e.get(n)}function i(r){var t=o(r),i=n(t);return e.set(r,i),i}function u(n,r){null==r?n.clear():n.delete(r)}return{check:function(n,r){return t.get(n)===r},get:function(n){return t.get(n)},generate:i,last:o,register:function(n,r){return void 0===r&&(r=i(n)),t.set(n,r),r},reset:function(n){u(e,n),u(t,n)},unregister:function(n){u(t,n)}}}var C=["array","function","object"],_=C.join("', '"),x=new Map,O=null;function A(n){return x.get(n)||{}}function k(){return O}var S=["+"];function M(n,r){return void 0===r&&(r=!1),h(n)?r?T(n):n:n?void 0:{}}function T(n,r){var e;if(!n)return n;var t=Object.keys(n);return t.some(function(n){return n.startsWith("$")})?r?((e={})[r]=n,e):n:t.reduce(function(e,t){var i=t.indexOf(".");if(i>=0){var u=t.slice(0,i),c=n[u];if(c&&!h(c))return e}var f,l=n[t],a=r?[r,t].join("."):t;return h(l)?o({},e,T(l,a)):o({},e,((f={})[a]=!!l,f))},void 0)}function D(n,r){var e;if(void 0===r&&(r={}),!h(n))return{_:M(n)};var t=function(n,r){void 0===r&&(r={});var e=Object.keys(r),t=k();if(t){var c=n[t],f=i(n,[t].map(u));return o(c?{"+":b(function(n){return e.includes(n[0])},c)}:{"+":void 0},f)}return Object.entries(n).reduce(function(n,r){var t,i,u=r[0],c=r[1];return e.includes(u)?o({},n,{"+":o({},n["+"]||{},(i={},i[u]=c,i))}):o({},n,((t={})[u]=c,t))},{})}(n,r),c=t["+"],f=i(t,S);return c?f&&null!=(e=Object.keys(f))&&e.length?{_:M(Object.keys(c).reduce(function(n,e){var t,i=r[e],u=i.on,c=i.deps,f=void 0===c?i.fields:c,l=Array.isArray(u)?((t={})[u[0]]=1,t):void 0;return l||f?o({},n,l,f):n},f),!0),"+":c}:{_:M(f,!0),"+":c}:{_:M(f,!0),"+":void 0}}function N(n,r){if(!F(n)&&!F(r))return n||r?I(L(n),L(r)):{}}function I(n,r){void 0===n&&(n={}),void 0===r&&(r={});for(var e=o({},n),t=0,i=Object.entries(r||{});t<i.length;t++){var u=i[t],c=u[0],f=u[1],l=e[c];e[c]=h(l)&&h(f)?I(l,f):f}return e}function F(n){return void 0===n||!!n&&!h(n)}function L(n){return h(n)?b(function(n){return n[1]},n):{}}function R(n,r){var e,t,i,u;if(!h(r))return r;var c=k(),f=c?null==(e=r[c])?void 0:e[n]:r[n];if("number"!=typeof f)return r;if(Infinity===f)return r;var l=f-1;return o({},r,c?((u={})[c]=o({},r[c],((i={})[n]=l,i)),u):((t={})[n]=l,t))}var $=["fields","transform"],z=["_key","Coll","on","single","postFetch","limit"],K=["_key","Coll","on","single","postFetch","limit"];function J(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=l(),u=t.count,c=t.findList,f=t.getTransform,a=A(n),m=f(n),p=e.fields,g=e.transform,b=void 0===g?m:g,E=i(e,$),P=function(n){return v(b)?b(n):n},j=D(p,a),C=j._,_=j["+"],x=void 0===_?{}:_,O=Object.keys(x);return!a||null==O||!O.length||p&&!h(p)?w(c(n,r,o({},E,{fields:C,transform:null})),function(n){return n.map(P)}):w(c(n,r,o({},E,{fields:C,transform:null})),function(r){var t=function(n,r){return void 0===n&&(n=[]),void 0===r&&(r={}),n.reduce(function(n,e){var t,i=r[e];if(!i)return n;var u=s(i.on),c=o({},i,{_key:e});return o({},n,((t={})[u]=[].concat(n[u]||[],[c]),t))},{})}(O,a),c=t.array,f=t.object,l=void 0===f?[]:f,m=t.function,g=void 0===m?[]:m;return w((void 0===c?[]:c).reduce(function(r,t){var c=t._key,f=t.Coll,l=t.on,a=t.single,m=t.postFetch,g=i(t,z);return w(r,function(r){var t,i,E=l[0],P=l[1],j=l[2],C=void 0===j?{}:j,_=d(E),O=_?r.flatMap(function(n){return n[E[0]]}):r.map(function(n){return n[E]}),k=d(P),S=o({},C,k?((t={})[P[0]]={$elemMatch:{$in:O}},t):((i={})[P]={$in:O},i)),T=f===n&&x[c]>1;return w(T&&u(n,S),function(n){var t,i=T&&!n,u=T?R(c,p):x[c],l=D(u,A(f)||{})._,j=!l||Object.keys(l).length<=0,C=h(u)&&!j&&"_id"!==P?o({},u,((t={})[P]=1,t)):u,O=o({},e,g,{fields:M(C),limit:void 0,transform:T?b:void 0});return w(i?[]:J(f,S,O),function(n){var e=k?{}:n.reduce(function(n,r){var e,t=y(P,r);return d(t)?t.reduce(function(n,e){var t;return o({},n,((t={})[e]=[].concat(n[e]||[],[r]),t))},n):o({},n,((e={})[t]=[].concat(n[t]||[],[r]),e))},{});return r.map(function(r){var t,i,u,f,l=[];k?l=n.filter(function(n){var e,t=n[P[0]]||[];return _?(e=t,(r[E[0]]||[]).some(function(n){return e.indexOf(n)>=0})):t.includes(r[E])}):_?(i="_id",u=(r[E[0]]||[]).flatMap(function(n){return e[n]||[]}),f=v(i)?i:"string"===s(i)?function(n){return n[i]}:function(n){return n},l=u.reduce(function(n,r){var e=f(r);return n.find(function(n){return f(n)===e})?n:[].concat(n,[r])},[])):l=e[r[E]]||[];var d=a?l[0]:l,h=v(m)?m(d,r):d;return o({},r,((t={})[c]=h,t))})})})})},r),function(r){return w(l.map(function(r){return V({Coll:n,join:r,fields:x[r._key],subSelector:r.on,options:E,parentFields:p})}),function(e){return w(r.map(function(r){var t=e.reduce(function(n,r){return r(n)},r);return w(g.reduce(function(e,t){var o=t.on;return w([e,V({Coll:n,join:t,fields:x[t._key],subSelector:v(o)?o(r):o,options:E,parentFields:p})],function(n){return(0,n[1])(n[0])})},t),function(n){return P(n)})}),function(n){return n})})})})}function U(n,r,e){return void 0===e&&(e={}),w(J(n,r,o({},e,{limit:1})),function(n){return n[0]})}function q(n,r){return w(U(n,r,{fields:{_id:1}}),function(n){return!!n})}function V(n){var r=n.Coll,e=n.join,t=e._key,u=e.Coll,c=e.single,f=e.postFetch,a=e.limit,s=i(e,K),d=n.fields,h=n.subSelector,m=n.options,p=n.parentFields,y=l(),g=u===r;return w(g&&(0,y.count)(r,h),function(n){var r=g&&(!d||!n),e=g?R(t,p):d,i=o({},m,s,{fields:M(e),limit:c?1:a||void 0});return w(r?[]:J(u,h,i),function(n){return function(r){var e,i=c?n[0]:n,u=v(f)?f(i,r):i;return o({},r,((e={})[t]=u,e))}})})}var W="drop",Y="shift",B=!1,G=Q({maxConcurrent:10,maxPending:250});function H(){return B=!0,G}function Q(n){var r=function(n){try{if(a.size>=t)throw new Error("Max concurrent calls reached");var e=n.fn,o=n.args,i=void 0===o?[]:o,c=n.resolve,f=n.reject,s=function(r,t){try{var o=function(r,t){try{var o=(a.add(n),Promise.resolve(e.apply(void 0,i)).then(function(n){null==c||c(n)}))}catch(n){return t(n)}return o&&o.then?o.then(void 0,t):o}(0,function(r){!function(n,r){var e=v(u)?u:console.error;Promise.resolve().then(function(){return e(n,r)}).catch(function(n){return console.error(n)})}(r,n),null==f||f(r)})}catch(n){return t(!0,n)}return o&&o.then?o.then(t.bind(null,!1),t.bind(null,!0)):t(!1,o)}(0,function(e,o){if(a.delete(n),function(){if(!(a.size>=t)){var n=l.shift();n&&r(n),p()}}(),e)throw o;return o});return Promise.resolve(s&&s.then?s.then(function(){}):void 0)}catch(n){return Promise.reject(n)}},e=n.maxConcurrent,t=void 0===e?10:e,o=n.maxPending,i=void 0===o?250:o,u=n.onError,c=n.onOverflow,f=void 0===c?X:c;!function(n){void 0===n&&(n={});var r=n.maxConcurrent,e=n.maxPending,t=n.onOverflow;if(!(Number.isFinite(r)&&Number.isInteger(r)&&r>=1))throw new TypeError("'maxConcurrent' must be a finite positive integer.");if(!(Infinity===e||Number.isInteger(e)&&e>=0))throw new TypeError("'maxPending' must be a positive integer or `Infinity`");if(!v(t)&&![W,Y].includes(t))throw new TypeError("'onOverflow' must be either a function or one of '"+W+"' or '"+Y+"'")}({maxConcurrent:t,maxPending:i,onError:u,onOverflow:f});var l=[],a=new Set,s=[];function d(n){a.size<t?r(n):l.length<i?l.push(n):function(n){if(f!==W)return f===Y?(h(l.shift(),"First call dropped"),void(l.length<i&&d(n))):void(v(f)?function(n){var r=[].concat(l,[n]),e=f([].concat(l),n);if(void 0!==e){if(!Array.isArray(e))throw new TypeError("'onOverflow' must return an array");var t=e.reduce(function(n,e){var t=e._id,o=r.find(function(n){return n._id===t});return o?n.includes(o)?n:[].concat(n,[o]):n},[]);r.forEach(function(n){!t.some(function(r){return r._id===n._id})&&h(n,"Call selectively dropped")}),l=t}else h(n,"Last call dropped")}(n):console.error("Invalid 'onOverflow'"));h(n,"Last call dropped")}(n)}function h(n,r){void 0===r&&(r="Call dropped"),n.reject&&n.reject(new Error(r))}function m(){return!a.size&&!l.length}function p(){m()&&s.length&&(s.forEach(function(n){return n(!0)}),s=[])}return{add:function(n){d({_id:Symbol(),fn:n,args:Array.from([].slice.call(arguments,1))})},clear:function(){l.forEach(function(n){return h(n,"Call cleared")}),l=[],p()},waitFor:function(n){var r=arguments;return new Promise(function(e,t){d({_id:Symbol(),fn:n,args:Array.from([].slice.call(r,1)),resolve:e,reject:t})})},waitForIdle:function(){return m()?Promise.resolve(!0):new Promise(function(n){s.push(n)})}}}function X(){console.warn("'maxPending' limit reached. Call is dropped")}var Z,nn=["beforeInsert","beforeUpdate","beforeRemove","onInserted","onUpdated","onRemoved"],rn=["onInserted","onUpdated","onRemoved"],en=new Map;function tn(n,r){var e=en.get(n)||{};return r?e[r]:e}function on(n,r){var e=tn(n,r);if(e)return function(n,r){if(void 0===n&&(n=[]),void 0===r&&(r=!1),n.length){var e=function(n){return void 0===n&&(n=[]),n.reduce(function(n,r){return{fields:N(n.fields,r.fields),before:n.before||r.before}},{fields:null,before:void 0})}(n);return{before:e.before,fields:e.fields,fn:function(){var e=[].slice.call(arguments);if(!r)return w(n.map(function(n){return cn.apply(void 0,[n].concat(e))}));n.forEach(function(n){return un.apply(void 0,[o({},n,{fireAndForget:r})].concat(e))})}}}}(e,rn.includes(r))}function un(n){void 0===n&&(n={});var r=null!=Z?Z:Z||(Z=H());r.add.apply(r,[cn,n].concat([].slice.call(arguments,1)))}function cn(n){void 0===n&&(n={});var r=[].slice.call(arguments,1),e=n.fireAndForget,t=n.fn,o=n.onError,i=n.unless,u=n.when,c=l().bindEnvironment;function f(n){var r=[].slice.call(arguments,1);if(v(n))return e&&v(c)?c(n).apply(void 0,r):n.apply(void 0,r)}if(v(t)){var a=function(r){if(!v(o))throw r;f(o,r,n)};try{var s=w(f.apply(void 0,[i].concat(r)),function(n){if(!n)return w(!u||f.apply(void 0,[u].concat(r)),function(n){if(n)return f.apply(void 0,[t].concat(r))})});return m(s)?s.catch(a):s}catch(n){return a(n)}}}function fn(n,r){var e;null==(e=console)||e.error("Error in '"+r.hookType+"' hook of '"+r.collName+"' collection:",n)}function ln(n,r){var e=l(),t=on(n,"beforeRemove"),o=on(n,"onRemoved"),i=function(){var n=[].slice.call(arguments).filter(function(n){return n});return n.length?n.reduce(function(n,r){return N(n,r.fields)},null):null}(t,o);return w(null===i?[]:J(n,r,{fields:i}),function(i){return w(v(null==t?void 0:t.fn)&&t.fn(i),function(){return w(e.remove(n,r),function(n){return n&&v(null==o?void 0:o.fn)?(E(function(){return i.forEach(function(n){return o.fn(n)})},function(n){var r;return null==(r=console)?void 0:r.error("'onRemoved' error:",n)}),n):n})})})}var an=["Coll","children","deps","debug","fields","selector","on"],sn=["join"],dn=["maxConcurrent","on"],vn=["Coll","selector","children","deps","debug","on","awaited"],hn=["Coll","selector","children","on"];function mn(n,r){try{var e=n()}catch(n){return r(n)}return e&&e.then?e.then(void 0,r):e}var pn="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function yn(n,r,e){if(!n.s){if(e instanceof wn){if(!e.s)return void(e.o=yn.bind(null,n,r));1&r&&(r=e.s),e=e.v}if(e&&e.then)return void e.then(yn.bind(null,n,r),yn.bind(null,n,2));n.s=r,n.v=e;var t=n.o;t&&t(n)}}var wn=/*#__PURE__*/function(){function n(){}return n.prototype.then=function(r,e){var t=new n,o=this.s;if(o){var i=1&o?r:e;if(i){try{yn(t,1,i(this.v))}catch(n){yn(t,2,n)}return t}return this}return this.o=function(n){try{var o=n.v;1&n.s?yn(t,1,r?r(o):o):e?yn(t,1,e(o)):yn(t,2,o)}catch(n){yn(t,2,n)}},t},n}();function gn(n){return n instanceof wn&&1&n.s}var bn=function(n,r){void 0===r&&(r=[]);try{var e,t=function(t){if(e)return t;if(d(n)){var i=(r||[])[0];if(!i)return console.warn("[`publish`]: A parent is necessary to use a join selector."),_n;var u,c=n[0],f=n[1],l=n[2],a=d(c),s=d(f);if(!a&&!s){var v,h=i[c];if(void 0===h)return _n;(v={})[f]=h,u=v}if(a&&!s){var m,p=i[c[0]];if(void 0===p)return _n;(m={})[f]={$in:p||[]},u=m}if(!a&&s){var y,w=i[c];if(void 0===w)return _n;(y={})[f[0]]={$elemMatch:{$eq:w}},u=y}if(a&&s){var g,b=i[c[0]];if(void 0===b)return _n;(g={})[f[0]]={$elemMatch:{$in:b||[]}},u=g}return u?l?o({},l,u):u:_n}return"object"==typeof n?n:_n};if(!n)return Promise.resolve(_n);var i=function(){if(v(n))return Promise.resolve(n.apply(void 0,r)).then(function(n){return n?(e=1,n):(console.warn("[`publish`]: `selector` function should produce a valid selector object"),e=1,_n)})}();return Promise.resolve(i&&i.then?i.then(t):t(i))}catch(n){return Promise.reject(n)}},En="|";function Pn(){var n=new Map;return n.find=function(r,e){var t=n.get(r);if(t)return Array.from(t.values()).find(e)},n.push=function(r,e){var t=n.get(r);return t?t.add(e):n.set(r,new Set([e])),n},n.pull=function(r,e){if(!n.has(r))return n;var t=n.get(r);return t&&(t.delete(e),t.size||n.delete(r)),n},n}function jn(n,r){void 0===r&&(r={});var e=l();return[e.getName(n),e.stringify(r)].join(En)}function Cn(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=l(),o=e.fields,i=e.limit,u=e.skip,c=e.sort;return jn(n,r)+[o,c,i,u].filter(function(n){return void 0!==n}).map(function(n){return h(n)?t.stringify(n):n.toString()}).join(En)}var _n={_id:{$exists:!1}};function xn(n){if(void 0!==n)return"boolean"==typeof n?n:v(n)?function(){try{return Promise.resolve(n.apply(void 0,[].slice.call(arguments))).then(xn)}catch(n){return Promise.reject(n)}}:d(n)?n:h(n)?Object.entries(n).filter(function(n){return n[1]}).map(function(n){return n[0]}):n instanceof Set?[].concat(n):"string"==typeof n&&[n]}function On(n){return function(r){var e;(function(r){return!!n&&(!0===n||(d(n)?n.includes(r):!!h(n)&&!!n[r]))})(r)&&(e=console).log.apply(e,[r].concat([].slice.call(arguments,1)))}}function An(n,r,e){var t,i=null==(t=A(n))?void 0:t[r];if(!i){var u=l();throw new Error("Join '"+r+"' is not defined on collection '"+u.getName(n)+"'.")}var c=i.deps;return o({Coll:i.Coll,on:i.on,deps:void 0===c?i.fields:c,limit:i.single?1:i.limit},e)}var kn=["multi"];function Sn(n,r,e,t){var u=void 0===t?{}:t,c=u.multi,f=void 0===c||c,a=i(u,kn),s=l(),d=on(n,"beforeUpdate"),h=on(n,"onUpdated"),m=o({multi:f},a),p=function(n,r){if(!n&&!r)return null;if(!r)return null==n?void 0:n.fields;var e=r.before?r.fields:{_id:1};return n?N(n.fields,e):e}(d,h);return w(null===p?[]:J(n,r,{fields:p,limit:f?void 0:1}),function(t){return w(v(null==d?void 0:d.fn)&&d.fn(t,e),function(){return w(s.update(n,r,e,m),function(r){if(!r||!v(null==h?void 0:h.fn))return r;var e=function(n){return void 0===n&&(n=[]),Object.fromEntries(n.map(function(n){return[n._id,n]}))}(t);return w(J(n,{_id:{$in:Object.keys(e)}},{fields:h.fields}),function(n){return E(function(){return n.forEach(function(n){h.fn(n,e[n._id])})},function(n){var r;return null==(r=console)?void 0:r.error("'onUpdated' error:",n)}),r})})})})}var Mn=new Map;function Tn(n){return!n||h(n)}function Dn(n){return Array.isArray(n)&&2===n.length&&h(n[0])&&(h(r=n[1])||"string"==typeof r);var r}var Nn=["multi"],In=["multi"],Fn={__proto__:null,meteorAsync:{count:function(n,r,e){var t=n.rawCollection();return t.countDocuments?t.countDocuments(r):n.find(r,e).countAsync()},findList:function(n,r,e){return n.find(r,e).fetchAsync()},getName:function(n){return n._name||""},getTransform:function(n){return n._transform},insert:function(n,r){return n.insertAsync(r)},observe:function(n,r,e,t){return n.find(r,t).observeChangesAsync(e)},remove:function(n,r){return n.removeAsync(r)},update:function(n,r,e,t){return n.updateAsync(r,e,o({multi:!0},t))}},meteorSync:{count:function(n,r,e){return n.find(r,e).count()},findList:function(n,r,e){return n.find(r,e).fetch()},getName:function(n){return n._name||""},getTransform:function(n){return n._transform},bindEnvironment:function(n){var r=null==globalThis?void 0:globalThis.Meteor,e=null==r?void 0:r.bindEnvironment;return"function"!=typeof e?n:e(n)},insert:function(n,r){return n.insert(r)},observe:function(n,r,e,t){return n.find(r,t).observeChanges(e)},remove:function(n,r){return n.remove(r)},update:function(n,r,e,t){return n.update(r,e,o({multi:!0},t))}},node:{count:function(n,r,e){return void 0===r&&(r={}),void 0===e&&(e={}),n.countDocuments(r||{},e)},findList:function(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=p({fields:"projection"},e||{});return n.find(r||{},t).toArray()},getName:function(n){return n.collectionName||""},getTransform:function(n){return"function"==typeof(null==n?void 0:n.transform)?n.transform:void 0},insert:function(n,r,e){return n.insertOne(r,e).then(function(n){return null==n?void 0:n.insertedId})},remove:function(n,r,e){void 0===r&&(r={}),void 0===e&&(e={});var t=e||{},o=t.multi,u=void 0===o||o,c=i(t,Nn);return(u?n.deleteMany(r||{},c):n.deleteOne(r||{},c)).then(function(n){var r;return null!=(r=null==n?void 0:n.deletedCount)?r:0})},update:function(n,r,e,t){void 0===r&&(r={}),void 0===e&&(e={}),void 0===t&&(t={});var o=t||{},u=o.multi,c=void 0===u||u,f=i(o,In);return(c?n.updateMany(r||{},e||{},f):n.updateOne(r||{},e||{},f)).then(function(n){var r,e;return null!=(r=null!=(e=null==n?void 0:n.modifiedCount)?e:null==n?void 0:n.upsertedCount)?r:0})}}};exports.configurePool=function(n){if(void 0===n&&(n={}),B)throw new Error("'configurePool' must be called at startup before processing hooks");G=Q(n)},exports.count=function(n,r,e){return w((0,l().count)(n,r,e),function(n){return n})},exports.exists=q,exports.fetchIds=function(n,r,e){return w(J(n,r,o({},e,{fields:{_id:1}})),function(n){return n.map(function(n){return n._id})})},exports.fetchList=J,exports.fetchOne=U,exports.flattenFields=T,exports.getJoinPrefix=k,exports.getJoins=A,exports.hook=function(n,r){Object.entries(r).forEach(function(r){var e=r[0],t=r[1];if(!d(t))throw new TypeError("'"+e+"' hooks must be an array");t.forEach(function(r){return function(n,r,e){var t;if(!nn.includes(r))throw new TypeError("'"+r+"' is not a valid hook type");if(!v(null==e?void 0:e.fn))throw new TypeError("'hook' must be a function or contain a 'fn' key");var i=l().getName,u=tn(n),c=u[r]||[],f=o({onError:rn.includes(r)?fn:void 0},e,{Coll:n,collName:i(n),hookType:r}),a=[].concat(c,[f]);en.set(n,o({},u,((t={})[r]=a,t)))}(n,e,r)})})},exports.insert=function(n,r){var e=l(),t=on(n,"beforeInsert");return w(v(null==t?void 0:t.fn)&&t.fn(r),function(){var t=on(n,"onInserted");return w(e.insert(n,r),function(r){if(!t)return r;var e=t.fields,o=t.fn,i=e?Object.keys(e):[];return w(1===i.length&&"_id"===i[0]?{_id:r}:U(n,{_id:r},{fields:e}),function(n){return E(function(){return o(n)},function(n){var r;return null==(r=console)?void 0:r.error("'onInserted' error:",n)}),r})})})},exports.join=function(n,r){r?(Object.entries(r).forEach(function(n){var r=n[0],e=n[1],t=e.on,o=e.deps,i=void 0===o?e.fields:o;if(!e.Coll)throw new Error("Collection 'Coll' for '"+r+"' join is required.");if(!t)throw new Error("Join '"+r+"' has no 'on' condition specified.");var u=s(t);if(!C.includes(u))throw new Error("Join '"+r+"' has an unrecognized 'on' condition type of '"+u+"'. Should be one of '"+_+"'.");v(t)&&!i&&function(){var n;console&&console.warn&&(n=console).warn.apply(n,[].slice.call(arguments))}("Join '"+r+"' is defined with a function 'on', but no 'deps' are explicitly specified. This could lead to failed joins if the keys necessary for the join are not specified at query time.")}),x.set(n,o({},x.get(n),r))):x.set(n,void 0)},exports.protocols=Fn,exports.publish=function(n,e,t,u){void 0===u&&(u={});try{if(!v(n.ready))throw new Error("'publication' context with a 'ready' method must be passed to 'publish'");var c=o({},u,{Coll:e,selector:t});return Promise.resolve(mn(function(){return Promise.resolve(function(n,e){void 0===e&&(e={});try{var t=function(e,c){void 0===e&&(e={});var f=void 0===c?{}:c,a=f.ancestors,w=void 0===a?[]:a,g=f.initializing,C=void 0!==g&&g;try{if(s)return Promise.resolve(null);var _=function(n){var r=n.Coll,e=n.children,t=void 0===e?[]:e,u=n.deps,c=n.debug,f=n.fields,a=n.selector,s=n.on,v=void 0===s?a:s,m=i(n,an),p=D(f,A(r)),y=p._,w=p["+"],g=void 0===w?{}:w,b=Object.keys(g),E=t.reduce(function(n,e){if(!e)return n;if(!h(e)){var t=l();throw new Error("Each child of '"+t.getName(r)+"' collection must be an object or a falsy value to ignore.")}if(!e.join)return[].concat(n,[e]);var o=e.join,u=i(e,sn);if(b.includes(o))throw new Error("Join '"+o+"' is defined both in parent fields and as an explicit child. Choose one or the other.");return[].concat(n,[An(r,o,u)])},[]),P=b.map(function(n){return An(r,n,{debug:c,fields:g[n]})}),j=[].concat(E,P),C=j.flatMap(function(n){return function(n){var r=n.deps,e=n.on,t=void 0===e?n.selector:e,o=new Set;if(d(t)){var i=t[0],u=d(i)?i[0]:i;"string"==typeof u&&o.add(u)}var c=xn(r);return d(c)?(c.forEach(function(n){"string"==typeof n&&o.add(n)}),Array.from(o)):Array.from(o)}(n)}),_=Object.fromEntries(Array.from(new Set(C)).map(function(n){return[n,1]})),x=void 0===f||void 0===y?y:o({},y,_);return o({Coll:r,selector:a,fields:x,children:j,deps:u,debug:c,on:v},m)}(e),x=_.Coll,O=_.selector,k=_.children,S=void 0===k?[]:k,M=_.debug,T=_.on,N=void 0===T?O:T,I=_.awaited,F=void 0===I||I,L=i(_,vn);if(!O&&!N)throw new Error("'selector' or 'on' is necessary to create an observer.");var R=On(M),$=S.filter(h),z=r.nanoid(),K=function(n){return[z,q,n].join(En)},J=l(),q=J.getName(x),V=!1,W=new Set;return Promise.resolve(bn(N,w)).then(function(r){var e=function(n){var r=n.childArgs,e=n.followerKey,i=n.initializing,c=n.token,f=n.ancestors;try{return V||s?Promise.resolve():A.check(e,c)?Promise.resolve(t(o({awaited:F},r),{ancestors:f,initializing:i})).then(function(n){n&&(V||s||!A.check(e,c)?n.unfollowMaybeCancel(e):(u(e,n),W.add(n)))}):Promise.resolve()}catch(n){return Promise.reject(n)}},c=jn(x,r),f=Cn(x,r,L),l=function(n){if(null==n||!n.length)return function(){return!1};var r=n.reduce(function(n,r){if(n){var e=function(n){var r=n.on,e=void 0===r?n.selector:r,t=xn(n.deps);if("boolean"==typeof t)return t;if(h(e)&&void 0===t)return[];if(!d(e))return t;var o=e[0],i=d(o)?o[0]:o;return d(t)?[i].concat(t):v(t)?[i,t]:[i]}(r);return!0===e||void 0===e||(d(e)?e.forEach(function(r){return n.add(r)}):n.add(e),n)}},new Set);if(!0===r)return function(){return!0};var e=Array.from(r).map(function(n){return function(r){try{var e,t=function(t){return e?t:"string"!=typeof n||P(r,n)},o=arguments;if("boolean"==typeof n)return Promise.resolve(n);var i=function(){if(v(n))return Promise.resolve(n.apply(void 0,[r].concat([].slice.call(o,1)))).then(function(n){if(d(n)){var t=n.some(function(n){return P(r,n)});return e=1,t}return e=1,!n})}();return Promise.resolve(i&&i.then?i.then(t):t(i))}catch(n){return Promise.reject(n)}}});return function(){try{var n,r=arguments,t=function(n,r,e){if("function"==typeof n[pn]){var t,o,i,u=function(n){try{for(;!((t=c.next()).done||e&&e());)if((n=r(t.value))&&n.then){if(!gn(n))return void n.then(u,i||(i=yn.bind(null,o=new wn,2)));n=n.v}o?yn(o,1,n):o=n}catch(n){yn(o||(o=new wn),2,n)}},c=n[pn]();if(u(),c.return){var f=function(n){try{t.done||c.return()}catch(n){}return n};if(o&&o.then)return o.then(f,function(n){throw f(n)});f()}return o}if(!("length"in n))throw new TypeError("Object is not iterable");for(var l=[],a=0;a<n.length;a++)l.push(n[a]);return function(n,r,e){var t,o,i=-1;return function u(c){try{for(;++i<n.length&&(!e||!e());)if((c=r(i))&&c.then){if(!gn(c))return void c.then(u,o||(o=yn.bind(null,t=new wn,2)));c=c.v}t?yn(t,1,c):t=c}catch(n){yn(t||(t=new wn),2,n)}}(),t}(l,function(n){return r(l[n])},e)}(e,function(e){return Promise.resolve(e.apply(void 0,[].slice.call(r))).then(function(r){if(r)return n=!0})},function(){return n});return Promise.resolve(t&&t.then?t.then(function(r){return!!n&&r}):!!n&&t)}catch(n){return Promise.reject(n)}}}($),a=p.get(f);if(a)return R("REUSED",c),a;var g,_,O=new Set,A=j(),k=j(function(n){return void 0===n&&(n=0),n+1}),S=new Promise(function(n,r){g=n,_=r});function M(n,r){r.unfollowMaybeCancel(n),W.delete(r),m.pull(n,r)}function T(n,r,e){A.check(n,e)&&M(n,r)}function D(r,e){var t,o=[r,e].join("|");O.delete(o);var i=null!=(t=y.get(o))?t:0,u=Math.max(0,i-1);u<=0?(y.delete(o),R("DOC_REMOVED",r,e),null==n.removed||n.removed(r,e)):y.set(o,u)}return p.set(f,S),mn(function(){if(r===_n)return R("BYPASSED",c),p.delete(f),g(null),null;var t=C,u={added:function(r,i){try{if(V)return Promise.resolve();if(function(r,e,t){var o,i=[r,e].join("|");O.add(i);var u=null!=(o=y.get(i))?o:0;y.set(i,u+1),R("DOC_ADDED",r,e),null==n.added||n.added(r,e,t)}(q,r,i),null==$||!$.length)return Promise.resolve();var u=K(r),c=A.register(u),f=[o({},i,{_id:r})].concat(w);return $.forEach(function(n){var r,o=null!=(r=n.awaited)?r:F;(t&&o?b:E).add(e,{childArgs:n,followerKey:u,initializing:t,token:c,ancestors:f})}),Promise.resolve()}catch(n){return Promise.reject(n)}},changed:function(r,t){try{if(V)return Promise.resolve();if(R("DOC_CHANGED",q,r,t),null==n.changed||n.changed(q,r,t),null==$||!$.length)return Promise.resolve();var o=K(r),u=k.generate(o);return Promise.resolve(U(x,{_id:r},{fields:L.fields,transform:null})).then(function(n){if(n){var r=[n].concat(w);return Promise.resolve(l.apply(void 0,[t].concat(r))).then(function(n){if(n&&!(k.get(o)>u))return k.register(o,u),R("INVALIDATED",c),Promise.resolve(function(n){try{var r=m.get(n);return r?Promise.resolve(Promise.all(r.values())).then(function(n){return new Map(n.map(function(n){return[n.queryKey,n]}))}):Promise.resolve(new Map)}catch(n){return Promise.reject(n)}}(o)).then(function(n){return Promise.resolve(function(n,r){try{return null!=r&&r.length?Promise.resolve(Promise.all(r.map(function(r){var e=r.Coll,t=r.on,o=void 0===t?r.selector:t,u=i(r,hn);return Promise.resolve(bn(o,n)).then(function(n){return[Cn(e,n,u),r]})}))).then(function(n){return new Map(n)}):Promise.resolve(new Map)}catch(n){return Promise.reject(n)}}(r,$)).then(function(t){if(k.check(o,u)){var i=A.register(o),c=Array.from(t.entries()).reduce(function(r,e){var t=e[1];return n.has(e[0])?r:[].concat(r,[t])},[]);c.length&&c.forEach(function(n){E.add(e,{childArgs:n,followerKey:o,initializing:!1,token:i,ancestors:r})}),n.forEach(function(n,r){t.has(r)||E.add(T,o,n,i)})}})})})}k.register(o)})}catch(n){return Promise.reject(n)}},removed:function(n){if(!V){D(q,n);var r=K(n);k.register(r),A.reset(r),(m.get(r)||new Set).forEach(function(n){E.add(M,r,n)})}}};return Promise.resolve(J.observe(x,r,u,L)).then(function(n){return t=!1,R("CREATED",c),s?(n.stop(),p.delete(f),g(null),null):(n.id=z,n.queryKey=f,n.docsList=O,n.cancel=function(){V||(n.stop(),W.forEach(function(n){return n.unfollowMaybeCancel()}),W.clear(),Array.from(m.entries()).forEach(function(n){var r=n[0],e=n[1],t=void 0===e?new Set:e;(function(n){return n.split(En)[0]===z})(r)&&(t.forEach(function(n){return n.unfollowMaybeCancel(r)}),m.delete(r))}),Array.from(O).forEach(function(n){var r=n.split("|");D(r[0],r[1])}),O.clear(),p.delete(f),V=!0,R("CANCELLED",c))},n.unfollowMaybeCancel=function(r){n.followers&&(n.followers.delete(r),R("UNFOLLOWED","from",c,"by",r)),m.pull(r,n),(!n.followers||n.followers.size<1)&&n.cancel()},p.set(f,n),g(n),n)})},function(n){throw p.delete(f),_(n),n})})}catch(n){return Promise.reject(n)}},u=function(n,r){var e=r.followers;e?e.add(n):r.followers=new Set([n]),m.push(n,r)},c=On(e.debug),f=e.maxConcurrent,a=i(e,dn),s=!1,m=Pn(),p=Pn(),y=Pn(),w=null,g=void 0,b=Q({maxConcurrent:null!=f?f:10,maxPending:Infinity,onError:function(n){g||(g=n),stopPublication()}}),E=Q({maxConcurrent:null!=f?f:10,maxPending:Infinity});return Promise.resolve(t(a,{initializing:!0})).then(function(r){if(!(w=r))throw new Error("`publish` failed to create root observer");var e={stop:function(){var n;s=!0,null==(n=w)||null==n.cancel||n.cancel(),p.forEach(function(n){return null==n||null==n.cancel?void 0:n.cancel()}),p.clear(),m.clear(),c("STOPPED")}};return null==n.onStop||n.onStop(e.stop),Promise.resolve(b.waitForIdle()).then(function(){if(g)throw g;return n.ready(),c("READY"),e})})}catch(n){return Promise.reject(n)}}(n,c))},function(r){if(!v(n.error))throw r;n.error(r)}))}catch(n){return Promise.reject(n)}},exports.registerSoftRemove=function(n,r){var e=void 0===r?{}:r,t=e.docToCollSelectorPairs,o=e.fields,i=void 0===o?{_id:1}:o,u=e.keepModifier,c=e.when;if(!h(n))throw new TypeError("Collection must be an object");var f=l().getName(n);if(Mn.has(n))throw new Error("'registerSoftRemove' already exists for collection '"+f+"'");if(![t,c].some(v))throw new TypeError("'"+f+"' 'registerSoftRemove' must provide at least one predicate.");Mn.set(n,{fields:i,defaultKeepModifier:u,shouldKeepDoc:function(n){return w(v(c)&&c(n),function(r){return!!r||!!v(t)&&w(function(n,r){return w(n(r),function(n){if(!Array.isArray(n)||!n.every(Dn))throw new TypeError("'docToCollSelectorPairs' should return an array of '[Coll, selector]' tuples");return n})}(t,n),function(n){return w(function(n){return void 0===n&&(n=[]),w(n.map(function(n){return q(n[0],n[1])}),function(n){return n.some(function(n){return n})})}(n),function(n){return!!n})})})}})},exports.remove=ln,exports.setJoinPrefix=function(n){O=n},exports.setProtocol=function(n){void 0===n&&(n={}),f=o({},c,n)},exports.softRemove=function(n,r,e,t){void 0===r&&(r={});var i=(void 0===t?{}:t).detailed,u=void 0!==i&&i,c=function(n){var r=Mn.get(n);if(!r){var e=l().getName(n);throw new Error("'softRemove' must be registered with 'registerSoftRemove' before using it with collection '"+e+"'")}return r}(n),f=c.fields,a=c.shouldKeepDoc,s=c.defaultKeepModifier;function d(n){var r=n.removed,e=void 0===r?0:r,t=n.updated,o=void 0===t?null:t;return u?{removed:e,updated:o}:(null!=e?e:0)+(null!=o?o:0)}return w(J(n,r,{fields:o({},null!=f?f:{},{_id:1}),transform:null}),function(t){return w(t.map(function(n){return w(a(n),function(r){return r?n._id:null})}),function(t){var o=t.filter(function(n){return null!==n});return o.length?w(function(n){if(Tn(n))return n||null;if(v(n))return w(n(),function(n){if(Tn(n))return n||null;throw new TypeError("'keepModifier' must be a valid modifier, a falsy value or a function that returns one of those.")});throw new TypeError("'keepModifier' must be a valid modifier, a falsy value or a function that returns one of those.")}(null!=e?e:s),function(e){return w([ln(n,{$and:[h(r)?r:{_id:r},{_id:{$nin:o}}]}),e?Sn(n,{_id:{$in:o}},e):null],function(n){return d({removed:n[0],updated:n[1]})})}):w(ln(n,r),function(n){return d({removed:n})})})})},exports.update=Sn;
|
|
2
2
|
//# sourceMappingURL=coll-fns.cjs.map
|