@graffy/common 0.15.7 → 0.15.8-alpha.4

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/index.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";var e=Object.defineProperty,r=Object.defineProperties,n=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,s=(r,n,t)=>n in r?e(r,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[n]=t,c=(e,r)=>{for(var n in r||(r={}))o.call(r,n)&&s(e,n,r[n]);if(t)for(var n of t(r))i.call(r,n)&&s(e,n,r[n]);return e},l=(e,t)=>r(e,n(t)),u=(e,r)=>{var n={};for(var s in e)o.call(e,s)&&r.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&t)for(var s of t(e))r.indexOf(s)<0&&i.call(e,s)&&(n[s]=e[s]);return n};Object.defineProperty(exports,"__esModule",{value:!0}),exports[Symbol.toStringTag]="Module";var f=require("text-encoder-lite"),a=require("global/window.js"),d=require("nanoid/non-secure"),y=require("@graffy/testing"),p=require("merge-async-iterators"),h=require("@graffy/stream"),k=require("lodash/isEqual.js");function $(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=$(f),v=$(a),w=$(p),b=$(k);v.default.TextEncoder&&v.default.TextDecoder||(v.default.TextEncoder=g.default.TextEncoderLite,v.default.TextDecoder=g.default.TextDecoderLite);const x=v.default.TextEncoder?new v.default.TextEncoder:new g.default.TextEncoderLite,A=v.default.TextDecoder?new v.default.TextDecoder("utf-8"):new g.default.TextDecoderLite("utf-8");function m(e){return x.encode(e)}function _(e){const r=new ArrayBuffer(8),n=new DataView(r);return n.setFloat64(0,e),e<0?(n.setUint32(0,~n.getUint32(0)>>>0),n.setUint32(4,~n.getUint32(4)>>>0)):n.setUint8(0,128|n.getUint8(0)),new Uint8Array(r)}function j(e){const{buffer:r,byteOffset:n,byteLength:t}=e,o=new DataView(r,n,t),i=o.getUint8(0);return 128&i?o.setUint8(0,127&i):(o.setUint32(0,~o.getUint32(0)>>>0),o.setUint32(4,~o.getUint32(4)>>>0)),o.getFloat64(0)}var O="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";function E(e,r){return r<e.byteLength?e.getUint8(r):0}function S(e,r){return r<e.length?O.indexOf(e[r]):0}function U(e){return null===e?[1]:!1===e?[2]:!0===e?[3]:"number"==typeof e?[4,_(e)]:"string"==typeof e?[5,m(e),0]:Array.isArray(e)?[6,...e.flatMap((e=>U(e))),0]:"object"==typeof e?(r=e,[7,...Object.keys(r).sort().flatMap((e=>[5,m(e),0,...U(r[e])])),0]):[1];var r}function L(e){const r=U(e);for(;0===r[r.length-1];)r.pop();const n=r.reduce(((e,r)=>e+("number"==typeof r?1:r.length)),0),t=new Uint8Array(n);let o=0;for(const i of r)"number"==typeof i?(t[o]=i,o++):(t.set(i,o),o+=i.length);return function(e){const{buffer:r,byteOffset:n,byteLength:t}=e,o=new DataView(r,n,t);let i="";for(let s=0;s<o.byteLength;s+=3){let e=(E(o,s)<<16)+(E(o,s+1)<<8)+E(o,s+2),r="";for(let n=0;n<4;n++)r=O[63&e]+r,e=e>>6|0;i+=r}return i.substr(0,Math.ceil(4*o.byteLength/3))}(t)}const N=new WeakMap;function P(e){let r=0;const n=function(e,r=0){const n=new ArrayBuffer(Math.floor(3*(e.length-r)/4)),t=new DataView(n);for(let o=r;o<e.length;o+=4){let r=(S(e,o)<<18)+(S(e,o+1)<<12)+(S(e,o+2)<<6)+S(e,o+3);for(let e=3*o/4+2;e>=3*o/4;e--)e<t.byteLength&&t.setUint8(e,255&r),r=r>>8|0}return new Uint8Array(n)}(e,0),t=[[]];function o(){let e=r;for(;r<n.length&&0!==n[r];)r++;const t=(o=n.subarray(e,r),A.decode(o));var o;return r++,t}function i(e,r){const n=t[t.length-1];6!==e&&7!==e||t.push(r),n&&(Array.isArray(n)?n.push(r):N.has(n)?(n[N.get(n)]=r,N.delete(n)):N.set(n,r))}for(;r<n.length;){const e=n[r],s=++r;switch(e){case 0:t.pop();break;case 1:i(e,null);break;case 2:i(e,!1);break;case 3:i(e,!0);break;case 4:r+=8,i(e,j(n.subarray(s,r)));break;case 5:i(e,o());break;case 6:i(e,[]);break;case 7:i(e,{});break;default:throw new Error("Invalid byte "+e+" at "+s)}}return t[0][0]}function C(e){if(""===e)return{key:e,step:1};if("￿"===e)return{key:e,step:-1};const r=e.length-1;switch(e.charCodeAt(r)){case 0:return{key:e.substr(0,r),step:1};case 65535:return{key:e.substr(0,r-1)+String.fromCharCode(e.charCodeAt(r-1)+1),step:-1};default:return{key:e,step:0}}}function D(e){if(""===e||"￿"===e||"\0"===e||"\0￿"===e)return e;const r=e.length-1;return 0===e.charCodeAt(r)?e.substr(0,r):e.substr(0,r)+String.fromCharCode(e.charCodeAt(r)-1)+"￿"}function T(e){if(""===e||"￿"===e||"\0"===e||"\0￿"===e)return e;const r=e.length-1;return 65535===e.charCodeAt(r)?e.substr(0,r-1)+String.fromCharCode(e.charCodeAt(r-1)+1):e+"\0"}function B(e,r={}){var n=r,{cause:t}=n,o=u(n,["cause"]);const i=new Error(e+(o?" "+JSON.stringify(o):""));throw i.cause=t,i}function K(e,r,n){r&&B(e,n)}function I(e){for(const r in e)return!1;return!0}function V(e){return void 0!==e}function q(e){return"object"==typeof e&&e&&!Array.isArray(e)}function J(e){return"\0"===e[0]}function G(e,r,n=0,t=e.length){let o=n,i=t;for(;o<i;){const n=(o+i)/2|0,t=r(e[n]);if(t<0)o=n+1;else{if(!(t>0))return n;i=n}}return o}function M(e){return"string"==typeof e?e:"\0"+L(e)}function R(e){if(J(e)){const{key:r,step:n}=C(e.slice(1));return{key:""===r||"￿"===r?r:P(r),step:n}}return C(e)}const z={$all:1,$first:1,$last:1,$after:1,$before:1,$since:1,$until:1,$cursor:1};function F(e){const r={},n={};for(const t in e)(t in z?r:n)[t]=e[t];return[I(r)?void 0:r,I(n)?void 0:n]}function Q(e){if(!q(e))return{key:M(e)};const[r,n]=F(e);if(K("page_and_filter",r&&n),!r)return{key:M(n||{})};const t=r,{$cursor:o}=t,i=u(t,["$cursor"]),{$first:s,$all:c,$last:l,$after:f,$before:a,$since:d,$until:y}=i,p=!I(i);K("first_and_last",V(s)&&V(l)),K("all_and_last",V(c)&&V(l)),K("all_and_first",V(s)&&V(c)),K("after_and_since",V(f)&&V(d)),K("before_and_until",V(a)&&V(y)),K("cursor_and_range_arg",V(o)&&p);let[h,k]=p?["","￿"]:[];V(o)&&(h=M(o)),V(f)&&(h=T(M(f))),V(a)&&(k=D(M(a))),V(d)&&(h=M(d)),V(y)&&(k=M(y)),V(l)&&([h,k]=[k,h]);const $={key:h};return V(k)&&($.end=k),(s||l)&&($.limit=s||l),$}function W(e){if("string"==typeof e)return e;const{key:r,end:n,limit:t}=e;if(!(J(r)||V(n)&&n!==r))return r;K("no_key",!V(r)),K("limit_without_end",V(t)&&!V(n));const o=R(r);if(!V(n))return o.key;const i=R(n),[s,c]=r<n?[o,i]:[i,o],l={};return t?l[r<n?"$first":"$last"]=t:""===s.key&&"￿"===c.key&&(l.$all=!0),""!==s.key&&(l[1===s.step?"$after":"$since"]=s.key),"￿"!==c.key&&(l[-1===c.step?"$before":"$until"]=c.key),l}function H(e){if("string"==typeof e){if(!e.length||"."===e)return[];e=e.split(".")}if(!Array.isArray(e))throw Error("encodePath.invalid:"+JSON.stringify(e));function r(e){if("string"==typeof e)return e;const{key:r,end:n}=Q(e);if(n)throw"encodePath.unexpected_range_key";return r}if(!q(e[e.length-1]))return e.map(r);const[n,t={}]=F(e[e.length-1]);return n?e.slice(0,-1).concat([t]).map(r):e.map(r)}function X(e){if(!Array.isArray(e))throw Error("decodePath.invalid:"+JSON.stringify(e));return e.map((e=>W({key:e})))}function Y(e){if(!Array.isArray(e))return[];const r=e[e.length-1];return q(r)?F(r):[]}var Z=d.customAlphabet(O,20);function ee(e,r){return G(e,(({key:e,end:n})=>e===r||n&&e<r&&n>=r?0:e<r?-1:1))}function re(e,r,n,t){const o=ee(e,r);return e[o]&&e[o].key<=r?o+1:o}function ne(e){return e&&void 0!==e.end}function te(e){return e&&void 0!==e.children}function oe(e){return e&&e.prefix}function ie(e){return e&&void 0!==e.path}function se(e,r){return void 0!==e.version&&e.version<r}function ce(e,r){let n=!1,t=0;for(const o of r){const r=le(o),i=te(o);t=G(e,r,t);const s=e[t],c=te(s);if(!s||r(s)){e.splice(t,0,fe(o)),n=!0;continue}if(i&&c)n=ce(s.children,o.children)||n;else{if(i||c)throw new Error("add.branch_leaf_mismatch");s.value+=o.value}(c?s.children.length:s.value)||(e.splice(t,1),n=!0)}return n}function le(e){return r=>ue(r.key,e.key)||ue(r.end,e.end)||ue(r.limit,e.limit)}function ue(e,r){return e===r?0:e<r?-1:1}function fe(e){const r=c({},e);return e.children&&(r.children=e.children.map((e=>fe(e)))),r}function ae(e,r){let n=0;for(const t of r)n=ne(t)?de(e,t,n):pe(e,t,n);return e}function de(e,r,n=0){const{key:t,end:o}=r,i=ee(e,t),s=re(e,o),c=[r];for(let l=i;l<s;l++){const r=e[l];ne(r)?c.push(...ye(c.pop(),r)):pe(c,r,c.length-1)}return e.splice(i,s-i,...c),i+c.length}function ye(e,r){return r.version<e.version&&([r,e]=[e,r]),[e.key<r.key&&l(c({},e),{end:D(r.key)}),r,e.end>r.end&&l(c({},e),{key:T(r.end)})].filter(Boolean)}function pe(e,r,n=0){if(!e)throw new Error("merge.insertNode: "+e);const t=r.key,o=ee(e,t),i=e[o];return i&&i.key<=t?ne(i)?function(e,r,n){const t=n.key,o=e[r],i=he(n,o);if(!i)return;const s=[o.key<t&&l(c({},o),{end:D(t)}),i,o.end>t&&l(c({},o),{key:T(t)})].filter(Boolean);return e.splice(r,1,...s),r+s.length}(e,o,r):function(e,r,n){const t=e[r];if(te(n)&&te(t))ae(t.children,n.children);else if(te(t)){const o=he(t,n);e[r]=o||n}else{const o=he(n,t);o&&(e[r]=o)}n.prefix&&(e[r].prefix=!0);return r+1}(e,o,r):(e.splice(o,0,r),o+1)}function he(e,r){const{version:n}=r;if(te(e)){const r=[{key:"",end:"￿",version:n}];return ae(r,e.children),1===r.length?null:l(c({},e),{children:r})}return e.version>=n?e:null}const ke=Symbol("IS_VAL");function $e(e,r,n=0,t=!1){if(!Array.isArray(r))throw Error("wrap.path_not_array "+r);if(!r.length)return e;let o=r.length-1;if(Array.isArray(e)){if(!e.length)return;e=[l(c({},Q(r[o--])),{version:n,children:e})]}else e=[l(c({},Q(r[o--])),{value:e,version:n})];for(t&&(e[0].prefix=!0);o>=0;)e=[l(c({},Q(r[o--])),{version:n,children:e})];return e}function ge(e,r){if(!Array.isArray(r))throw Error("unwrap.path_not_array "+r);let n={children:e};for(let t=0;t<r.length;t++){const{key:o}=Q(r[t]);if(!(e=n.children))return null;if(n=e[ee(e,o)],!n||n.key>o)return;if(ne(n))return null}return ve(n)}function ve(e){return e.children?e.children:(e.value&&"object"==typeof e.value&&(e.value[ke]=!0),e.value)}class we{constructor(e){this.root=e||this}addKnown(e){this.known=this.known||[],ae(this.known,[e])}addUnknown(e){this.unknown=this.unknown||[],this.unknown.push(e)}addLinked(e){if(this.root!==this)return this.root.addLinked(e);this.linked=this.linked||[],ce(this.linked,e)}}function be(e,r,n){let t=new we(n),o=r;for(;o;){let r=0;for(const n of o)if(ne(n))Ae(e,n,t);else{r=ee(e,n.key),xe(e[r],n,t)}o=n?void 0:t.linked,delete t.linked}return delete t.root,t}function xe(e,r,n){const{key:t,version:o}=r,{root:i}=n;if(!e||e.key>t||se(e,o))n.addUnknown(r);else if(ne(e))if(te(r)){const{known:o}=be([{key:"",end:"￿",version:e.version}],r.children);n.addKnown({key:t,version:e.version,children:o})}else n.addKnown({key:t,end:t,version:e.version});else if(te(e)&&te(r)){const{known:t,unknown:o}=be(e.children,r.children,i);t&&n.addKnown(l(c({},e),{children:t})),o&&n.addUnknown(l(c({},r),{children:o}))}else if(ie(e))n.addKnown(e),e.prefix&&ne(r)?n.addLinked($e([r],e.path,o,!0)):n.addLinked($e(r.children||r.value,e.path,o,e.prefix||r.prefix));else if(te(e)&&r.options&&r.options.subtree)n.addKnown(e);else{if(te(e)||te(r))throw new Error("slice.leaf_branch_mismatch:"+y.format(e)+"\n"+y.format(r));n.addKnown(e)}}function Ae(e,r,n){let{key:t,end:o,limit:i=1/0,version:s}=r;const u=t<o?1:-1;if(""===e[0].key&&e[0].prefix)xe(e[0],r,n);else{if(t<o)for(let u=ee(e,t);t<=o&&i>0;u++){const f=e[u];if(!f||t<f.key||se(f,s))break;ne(f)?n.addKnown(me(f,t,o)):(xe(f,l(c({},r),{key:t}),n),i--),t=T(f.end||f.key)}else for(let u=re(e,t)-1;t>=o&&i>0;u--){const f=e[u];if(!f||t>(f.end||f.key)||se(f,s))break;ne(f)?n.addKnown(me(f,o,t)):(xe(f,l(c({},r),{key:t}),n),i--),t=D(f.key)}if(i&&(u<0?t>o:t<o)){const e=l(c({},r),{key:t,end:o,limit:i});n.addUnknown(e)}}}function me(e,r,n){return e.key>=r&&e.end<=n?e:l(c({},e),{key:e.key>r?e.key:r,end:e.end<n?e.end:n})}function _e(e,r,n=[]){let t=0;for(const o of r)t=ne(o)?je(e,o,n,t):Ee(e,o,n,t);return n}function je(e,r,n,t=0){const{key:o,end:i}=r,s=ee(e,o),c=re(e,i);if(s===c&&!(e[s]&&e[s].key<=o&&e[s].end>=i))return s;const l=[];let u=r.key;for(let a=s;a<c;a++){const n=e[a];if(ne(n)&&n.version>=0?(n.key>u&&l.push({key:u,end:D(n.key),version:r.version}),u=T(n.end)):Ue(n,r)&&(l.push({key:u,end:D(n.key),version:r.version}),u=T(n.key)),u>=r.end)break}u<=r.end&&l.push({key:u,end:r.end,version:r.version}),l.length&&n.push(...l);const f=[r];for(let a=s;a<c;a++){const r=e[a];ne(r)?f.push(...Oe(f.pop(),r)):Ee(f,r,[],f.length-1)}return e.splice(s,c-s,...f),s+f.length}function Oe(e,r){return r.version<e.version&&([r,e]=[e,r]),[e.key<r.key&&l(c({},e),{end:D(r.key)}),r,e.end>r.end&&l(c({},e),{key:T(r.end)})].filter(Boolean)}function Ee(e,r,n,t=0){const o=r.key,i=ee(e,o),s=e[i];return s&&s.key<=o?ne(s)?function(e,r,n,t){const o=n.key,i=e[r],s=Ue(n,i),u=Se(n,i);if(!s)return;t.push(s);const f=[i.key<o&&l(c({},i),{end:D(o)}),u,i.end>o&&l(c({},i),{key:T(o)})].filter(Boolean);return e.splice(r,1,...f),r+f.length}(e,i,r,n):function(e,r,n,t){const o=e[r];if(te(n)&&te(o)){const e=[];o.version=n.version,_e(o.children,n.children,e),e.length&&t.push(l(c({},n),{children:e}))}else if(te(o)){const i=Se(o,n);e[r]=i||n,i||t.push(n)}else{const i=Ue(n,o),s=Se(n,o);s&&(e[r]=s),!i||n.value===o.value&&function(e,r){if(!e&&!r)return!0;if(!e||!r)return!1;if(e.length!==r.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==r[n])return!1;return!0}(n.path,o.path)||t.push(i)}return r+1}(e,i,r,n):i}function Se(e,r){if(te(e)){const n={key:"",end:"￿",version:r.version},t=[n];return _e(t,e.children),1===t.length&&t[0]===n?null:l(c({},e),{children:t})}return e.version>=r.version?e:null}function Ue(e,r){if(te(e)){const n=e.children.filter((e=>Ue(e,r)));return n.length&&l(c({},e),{children:n})}return e.version>=r.version?e:null}function Le(e,r){for(const n of e)n.version=r,n.children&&Le(n.children,r);return e}function Ne(e,r,n=Date.now()){let t=[{key:"",end:"￿",version:0}];return r&&(t=be(t,r).known||[]),t=Le(ae(t,e),n),t}function Pe(e=[],{isGraph:r}={}){function n(e){let n=[],c=!0,f=!0;function a(...e){for(const r of e)V(r)&&!Number.isInteger(r.$key)&&(f=!1),V(r)&&"string"!=typeof r.$key&&(c=!1);n.push(...e)}const d=[];let y=null;function p({key:e,end:r}){if(y)if(y.end){if(e===T(y.end))return y.end=r||e,r&&r!==e}else e===T(y.key)&&(e=y.key);return r&&e!==r?(y={key:e,end:r},d.push(y),!0):(y={key:e},!1)}for(const u of e)r&&p(u)||(oe(u)?a(...t(u)):r&&ne(u)?a(s(u)):te(u)?a(o(u)):ie(u)?a(l(u)):a(i(u)));return(f||c)&&(n=n.reduce(((e,n)=>{if(Array.isArray(n))return e[n.$key]=n,delete n.$key,e;const t=n,{$key:o,$val:i}=t,s=u(t,["$key","$val"]);return"object"==typeof i&&(i.$val=!0),e[o]=V(i)?i:I(s)?!r||null:s,e}),c?{}:[])),r&&d.length&&(1===d.length&&""===d[0].key&&"￿"===d[0].end?n.$put=!0:n.$put=d.map((e=>W(e)))),n}function t(e){let r=W(e);if(""===r&&(r={}),"string"==typeof r)throw Error("decode.unencoded_prefix: "+r);if(ie(e)){r.$all=!0;const n=X(e.path),t=n[n.length-1];if("string"==typeof t)throw Error("decode.unencoded_prefix_ref: "+e.path);return t.$all=!0,[{$key:r,$ref:n}]}const t=n(e.children);if(!Array.isArray(t))throw Error("decode.prefix_without_encoded_child_keys:"+e.key);for(const n of t){if("string"==typeof n.$key)throw Error("decode.prefix_with_unencoded_child_key:"+n.$key);F(n.$key)[0]||(n.$key={$cursor:n.$key}),n.$key=c(c({},r),n.$key)}return t}function o(e){const r=n(e.children);return r.$key=W(e),r}function i(e){const n=r?{$val:e.value}:{};return n.$key=W(e),n}function s(e){if(e.key===e.end)return{$key:W({key:e.key})}}function l(e){return{$key:W(e),$ref:X(e.path)}}return n(e)}function Ce(e){return Pe(e,{isGraph:!0})}const De=Symbol(),Te=Symbol();const Be=Symbol();function Ke(e,{version:r,isGraph:n}={}){var t;const o=[];const i=n?ae:ce;function s(e,r,t){var f;if(!V(e))return;if("object"==typeof e&&e&&I(e))return;const a=e||{},{$key:d,$ver:y}=a,p=u(a,["$key","$ver"]),h=p,{$ref:k,$val:$,$chi:g,$put:v}=h,w=u(h,["$ref","$val","$chi","$put"]);if(V(y)&&(t=y),q(d)){const[o,i]=F(d);if(n&&o&&!V(o.$cursor)&&!I(p)){const n=s(l(c({},e),{$key:i||""}),r,t);return n.prefix=!0,n}if((!V(r)||Number.isInteger(r))&&o&&i){const n=s({$key:i,$chi:[l(c({},e),{$key:V(o.$cursor)?o.$cursor:o})]},r,t);return n.prefix=!0,n}}!V(d)||!Number.isInteger(r)&&V(r)||(r=d);const b=r!==Be&&V(r)?Q(r):{};if(b.version=t,null===e)b.end=b.key;else if(V(d)&&V(r)&&r!==d)b.children=[s(e,void 0,t)].filter(Boolean);else if(k){if(function(e,r,t,i,l){const[u,f]=Y(e);let a=I(t)?V(l)?s(u?[{$key:u,$chi:l}]:l,void 0,r).children:V(i)?i:n?void 0:1:s(u?[c({$key:u},t)]:t,void 0,r).children;a&&o.push($e(a,H(e),r,!!u)[0])}(k,b.version,w,$,g),!n)return;b.path=H(k)}else if(!0===$)b.value=w;else if(V($))b.value=$;else if("object"!=typeof e)b.value=n||"number"==typeof e?e:1;else if(V(g)){const e=g.map((e=>s(e,void 0,t))).filter(Boolean).sort(((e,r)=>e.key<=r.key?-1:1));e.length&&(b.children=e)}else if(Array.isArray(e)){const r=e.map(((e,r)=>s(e,r,t))).filter(Boolean).reduce(((e,r)=>(i(e,[r]),e)),[]);r.length&&(b.children=r)}else{const r=Object.keys(w).sort().map((r=>s(e[r],r,t))).filter(Boolean);r.length?b.children=r:n?b.key&&!b.end&&(b.end=b.key):b.value=1}let x;return Array.isArray(e)&&!e.some((e=>V(null==e?void 0:e.$key)))&&(x=[Q({$since:0,$until:1/0})]),!0===v?x=null:Array.isArray(v)?x=v.map((e=>Q(e))):V(v)&&(x=[Q(v)]),n&&V(x)&&(b.children=Ne(b.children||[],x,b.version)),(null==(f=b.children)?void 0:f.length)||V(b.end)||V(b.value)||V(b.path)?b:void 0}(null==e?void 0:e.$key)&&(e=[e]);let f=(null==(t=s(e,Be,r))?void 0:t.children)||[];for(;o.length;)i(f,[o.pop()]);return f}exports.IS_VAL=ke,exports.add=ce,exports.cloneObject=function e(r){if("object"!=typeof r||!r)return r;const n={};for(const t in r){const o=e(r[t]);null!==o&&(n[t]=o)}return I(n)?null:n},exports.decodeArgs=W,exports.decodeGraph=Ce,exports.decodePath=X,exports.decodeQuery=function(e){return Pe(e,{isGraph:!1})},exports.decodeUrl=function(e){return JSON.parse(decodeURIComponent(e))},exports.decodeValue=P,exports.decorate=function(e,r){function n(e,r){const{key:n}=Q(r);if(!Array.isArray(e))return null;const o=e[ee(e,n)];if(!o)return;if(ne(o)&&o.end>=n)return null;if(o.key!==n)return;const i=t(o);return o.prefix&&(i[Te]=r),i}function t(r){let n;return r.path?(n=ge(e,r.path),"object"==typeof n&&(n[De]=r.path)):n=ve(r),n}return function r(o,i){if(null===o)return null;let s;if(V(o)||(o=[]),i.$key&&(i=[i]),i.$ref){const n=i,{$ref:t}=n,o=u(n,["$ref"]),[l,f]=Y(t),a=H(t),d=ge(e,a);l&&(d[Te]=f),s=r(d,l?c({$key:l},o):o),s.$ref=t}else if(Array.isArray(i)){let e;s=i.flatMap(((i,s)=>{if(!(null==i?void 0:i.$key))return r(n(o,s),i);const f=i,{$key:a,$chi:d}=f,y=u(f,["$key","$chi"]),p=d||(I(y)?1:y);if(!q(a)||!F(a)[0])return r(n(o,a),p);if(e)throw Error("decorate.multi_range_query:"+JSON.stringify({$key:a,pageKey:e}));e=a;const h=function(e,r){const[t,o]=F(r);V(o)?e=n(e,o):""===e[0].key&&e[0].prefix&&(e=n(e,""));const{key:i,end:s,limit:c=1/0}=Q(t),l=ee(e,i);let u,f=l;if(i<s){for(let r=0;f<e.length&&r<c;f++)ne(e[f])||r++;u=e.slice(l,f)}else{for(let r=0;f>=0&&r<c;f--)ne(e[f])||r++;u=e.slice(f+1,l+1)}e[De]&&(u[De]=e[De]);e[Te]&&(u[Te]=e[Te]);return u}(o,a);return h.filter((e=>!ne(e))).map((e=>{const n=W(e),o=r(t(e),p);return"object"==typeof o&&(o.$key=h[Te]?l(c({},h[Te]),{$cursor:n}):n),o}))})),function(e,r){if(r.$all)return void Object.assign(e,{$page:r,$prev:null,$next:null});const[n,...t]=F(r),o=n,{$first:i,$last:s}=o,f=u(o,["$first","$last"]),[a]=t,d=i||s,y=l(c(c({},a),f),{$all:!0});if(e.length===d)if(i){const r=e[e.length-1].$key;y.$until=V(null==r?void 0:r.$cursor)?r.$cursor:r,delete y.$before}else{const r=e[0].$key;y.$since=V(null==r?void 0:r.$cursor)?r.$cursor:r,delete y.$after}const p=V(y.$after)?l(c({},a),{$last:d,$until:y.$after}):V(y.$since)?l(c({},a),{$last:d,$before:y.$since}):null;let h=V(y.$before)?l(c({},a),{$first:d,$since:y.$before}):V(y.$until)?l(c({},a),{$first:d,$after:y.$until}):null;Object.assign(e,{$page:y,$next:h,$prev:p})}(s,e)}else if("object"==typeof i){s={};for(const e in i)s[e]=r(n(o,e),i[e])}else if(i)if(Array.isArray(o)&&!o.length)s=void 0;else if("object"==typeof o&&o)if(o[ke])s=Array.isArray(o)?o.slice(0):c({},o),s.$val=!0;else{if(!Array.isArray(o))throw Error("decorate.unexpected_graph",o);s=Ce(o)}else s=o;return o[De]&&(s.$ref=o[De]),s}(e,r)},exports.deserialize=function(e){return JSON.parse(e)},exports.encodeArgs=Q,exports.encodeGraph=function(e,r=Date.now()){return Ke(e,{version:r,isGraph:!0})},exports.encodePath=H,exports.encodeQuery=function(e,r=0){return Ke(e,{version:r,isGraph:!1})},exports.encodeUrl=function(e){return encodeURIComponent(JSON.stringify(e))},exports.encodeValue=L,exports.err=B,exports.errIf=K,exports.finalize=Ne,exports.find=G,exports.findFirst=ee,exports.findLast=re,exports.getKnown=function e(r,n=0){const t=[];for(const{key:o,end:i,children:s}of r){const r={key:o,version:n};i&&(i!==o&&(r.end=i),r.options={subtree:!0}),s?r.children=e(s):r.value=1,t.push(r)}return t},exports.getNodeValue=ve,exports.isBranch=te,exports.isDef=V,exports.isEmpty=I,exports.isEncoded=function(e){return e&&"\0"===e.key[0]},exports.isEncodedKey=J,exports.isLink=ie,exports.isNewer=function(e,r){return void 0!==e.version&&e.version>r},exports.isOlder=se,exports.isPlainObject=q,exports.isPrefix=oe,exports.isRange=ne,exports.keyAfter=T,exports.keyBefore=D,exports.keyStep=C,exports.makeId=Z,exports.makeWatcher=function(){const e=new Set;return{write:function(r){for(const n of e)n(r)},watch:function(...r){return h.makeStream(((n,t)=>(e.add(n),r.length&&Promise.resolve(r[0]).then(n),()=>e.delete(n))))}}},exports.merge=ae,exports.mergeObject=function e(r,n){if("object"!=typeof n||"object"!=typeof r||!r||!n)return n;for(const t in n)if(t in r){const o=e(r[t],n[t]);null===o?delete r[t]:r[t]=o}else r[t]=n[t];return I(r)?null:r},exports.mergeStreams=async function*(...e){const r=(await Promise.all(e.map((e=>e.next())))).map((e=>e.value));if(r.some((e=>void 0===e))){yield;for(const e of r)void 0!==e&&(yield e)}else{let e=[];for(const n of r)ae(e,n);yield e}yield*w.default(e)},exports.remove=function e(r,n){if(!Array.isArray(n))throw Error("del.path_not_array "+n);if(!r)return null;if(!n.length)return[];const t=n[0],o=ee(r,t),i=r[o];if(!i||i.key>t||ne(i))return r;if(1===n.length)return r.slice(0,o).concat(r.slice(o+1));if(!te(i))return r;const s=e(i.children,n.slice(1));if(s===n.children)return r;const u=s.length?l(c({},i),{children:s}):[];return r.slice(0,o).concat(u,r.slice(o+1))},exports.serialize=function(e){return JSON.stringify(e).replace(/\uffff/g,"\\uffff")},exports.setVersion=Le,exports.sieve=_e,exports.slice=be,exports.splitArgs=F,exports.splitRef=Y,exports.unwrap=ge,exports.unwrapObject=function(e,r){if(!Array.isArray(r))throw Error("unwrapObject.path_not_array "+r);for(let n=0;n<r.length;n++){if(!e||"object"!=typeof e)return;const t=r[n];if("string"==typeof t){if(Array.isArray(e))throw Error("unwrapObject.string_key_array:"+t);e=e[t]}else{if(!Array.isArray(e))throw Error("unwrapObject.arg_key_object:"+JSON.stringify(t));const[r,n]=F(t);if(r&&!r.$cursor)return e;{const t=(null==r?void 0:r.$cursor)?l(c({},n),{$cursor:r.$cursor}):n;e=e.find((({$key:e})=>b.default(e,t)))}}}return e},exports.wrap=$e,exports.wrapObject=function(e,r){if(!Array.isArray(r))throw Error("wrapObject.path_not_array "+r);for(let n=r.length-1;n>=0;n--){const t=r[n];e="string"==typeof t?{[t]:e}:Array.isArray(e)?[{$key:t,$chi:e}]:[c({$key:t},e)]}return e},exports.wrapValue=function(e,r,n=0){return $e([l(c({},Q(r[r.length-1])),{value:e,version:n})],r.slice(0,-1),n)};
package/index.mjs ADDED
@@ -0,0 +1 @@
1
+ var e=Object.defineProperty,n=Object.defineProperties,r=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,s=(n,r,t)=>r in n?e(n,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[r]=t,c=(e,n)=>{for(var r in n||(n={}))o.call(n,r)&&s(e,r,n[r]);if(t)for(var r of t(n))i.call(n,r)&&s(e,r,n[r]);return e},f=(e,t)=>n(e,r(t)),l=(e,n)=>{var r={};for(var s in e)o.call(e,s)&&n.indexOf(s)<0&&(r[s]=e[s]);if(null!=e&&t)for(var s of t(e))n.indexOf(s)<0&&i.call(e,s)&&(r[s]=e[s]);return r};import u from"text-encoder-lite";import a from"global/window.js";import{customAlphabet as d}from"nanoid/non-secure";import{format as y}from"@graffy/testing";import h from"merge-async-iterators";import{makeStream as k}from"@graffy/stream";import p from"lodash/isEqual.js";function $(e){return encodeURIComponent(JSON.stringify(e))}function v(e){return JSON.parse(decodeURIComponent(e))}a.TextEncoder&&a.TextDecoder||(a.TextEncoder=u.TextEncoderLite,a.TextDecoder=u.TextDecoderLite);const g=a.TextEncoder?new a.TextEncoder:new u.TextEncoderLite,w=a.TextDecoder?new a.TextDecoder("utf-8"):new u.TextDecoderLite("utf-8");function b(e){return g.encode(e)}function m(e){const n=new ArrayBuffer(8),r=new DataView(n);return r.setFloat64(0,e),e<0?(r.setUint32(0,~r.getUint32(0)>>>0),r.setUint32(4,~r.getUint32(4)>>>0)):r.setUint8(0,128|r.getUint8(0)),new Uint8Array(n)}function A(e){const{buffer:n,byteOffset:r,byteLength:t}=e,o=new DataView(n,r,t),i=o.getUint8(0);return 128&i?o.setUint8(0,127&i):(o.setUint32(0,~o.getUint32(0)>>>0),o.setUint32(4,~o.getUint32(4)>>>0)),o.getFloat64(0)}var _="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz";function x(e,n){return n<e.byteLength?e.getUint8(n):0}function j(e,n){return n<e.length?_.indexOf(e[n]):0}function O(e){return null===e?[1]:!1===e?[2]:!0===e?[3]:"number"==typeof e?[4,m(e)]:"string"==typeof e?[5,b(e),0]:Array.isArray(e)?[6,...e.flatMap((e=>O(e))),0]:"object"==typeof e?(n=e,[7,...Object.keys(n).sort().flatMap((e=>[5,b(e),0,...O(n[e])])),0]):[1];var n}function E(e){const n=O(e);for(;0===n[n.length-1];)n.pop();const r=n.reduce(((e,n)=>e+("number"==typeof n?1:n.length)),0),t=new Uint8Array(r);let o=0;for(const i of n)"number"==typeof i?(t[o]=i,o++):(t.set(i,o),o+=i.length);return function(e){const{buffer:n,byteOffset:r,byteLength:t}=e,o=new DataView(n,r,t);let i="";for(let s=0;s<o.byteLength;s+=3){let e=(x(o,s)<<16)+(x(o,s+1)<<8)+x(o,s+2),n="";for(let r=0;r<4;r++)n=_[63&e]+n,e=e>>6|0;i+=n}return i.substr(0,Math.ceil(4*o.byteLength/3))}(t)}const U=new WeakMap;function S(e){let n=0;const r=function(e,n=0){const r=new ArrayBuffer(Math.floor(3*(e.length-n)/4)),t=new DataView(r);for(let o=n;o<e.length;o+=4){let n=(j(e,o)<<18)+(j(e,o+1)<<12)+(j(e,o+2)<<6)+j(e,o+3);for(let e=3*o/4+2;e>=3*o/4;e--)e<t.byteLength&&t.setUint8(e,255&n),n=n>>8|0}return new Uint8Array(r)}(e,0),t=[[]];function o(){let e=n;for(;n<r.length&&0!==r[n];)n++;const t=(o=r.subarray(e,n),w.decode(o));var o;return n++,t}function i(e,n){const r=t[t.length-1];6!==e&&7!==e||t.push(n),r&&(Array.isArray(r)?r.push(n):U.has(r)?(r[U.get(r)]=n,U.delete(r)):U.set(r,n))}for(;n<r.length;){const e=r[n],s=++n;switch(e){case 0:t.pop();break;case 1:i(e,null);break;case 2:i(e,!1);break;case 3:i(e,!0);break;case 4:n+=8,i(e,A(r.subarray(s,n)));break;case 5:i(e,o());break;case 6:i(e,[]);break;case 7:i(e,{});break;default:throw new Error("Invalid byte "+e+" at "+s)}}return t[0][0]}function L(e){if(""===e)return{key:e,step:1};if("￿"===e)return{key:e,step:-1};const n=e.length-1;switch(e.charCodeAt(n)){case 0:return{key:e.substr(0,n),step:1};case 65535:return{key:e.substr(0,n-1)+String.fromCharCode(e.charCodeAt(n-1)+1),step:-1};default:return{key:e,step:0}}}function C(e){if(""===e||"￿"===e||"\0"===e||"\0￿"===e)return e;const n=e.length-1;return 0===e.charCodeAt(n)?e.substr(0,n):e.substr(0,n)+String.fromCharCode(e.charCodeAt(n)-1)+"￿"}function D(e){if(""===e||"￿"===e||"\0"===e||"\0￿"===e)return e;const n=e.length-1;return 65535===e.charCodeAt(n)?e.substr(0,n-1)+String.fromCharCode(e.charCodeAt(n-1)+1):e+"\0"}function N(e,n={}){var r=n,{cause:t}=r,o=l(r,["cause"]);const i=new Error(e+(o?" "+JSON.stringify(o):""));throw i.cause=t,i}function P(e,n,r){n&&N(e,r)}function T(e){for(const n in e)return!1;return!0}function B(e){return void 0!==e}function K(e){return"object"==typeof e&&e&&!Array.isArray(e)}function I(e){return"\0"===e[0]}function J(e,n,r=0,t=e.length){let o=r,i=t;for(;o<i;){const r=(o+i)/2|0,t=n(e[r]);if(t<0)o=r+1;else{if(!(t>0))return r;i=r}}return o}function V(e){return"string"==typeof e?e:"\0"+E(e)}function G(e){if(I(e)){const{key:n,step:r}=L(e.slice(1));return{key:""===n||"￿"===n?n:S(n),step:r}}return L(e)}const M={$all:1,$first:1,$last:1,$after:1,$before:1,$since:1,$until:1,$cursor:1};function q(e){const n={},r={};for(const t in e)(t in M?n:r)[t]=e[t];return[T(n)?void 0:n,T(r)?void 0:r]}function F(e){if(!K(e))return{key:V(e)};const[n,r]=q(e);if(P("page_and_filter",n&&r),!n)return{key:V(r||{})};const t=n,{$cursor:o}=t,i=l(t,["$cursor"]),{$first:s,$all:c,$last:f,$after:u,$before:a,$since:d,$until:y}=i,h=!T(i);P("first_and_last",B(s)&&B(f)),P("all_and_last",B(c)&&B(f)),P("all_and_first",B(s)&&B(c)),P("after_and_since",B(u)&&B(d)),P("before_and_until",B(a)&&B(y)),P("cursor_and_range_arg",B(o)&&h);let[k,p]=h?["","￿"]:[];B(o)&&(k=V(o)),B(u)&&(k=D(V(u))),B(a)&&(p=C(V(a))),B(d)&&(k=V(d)),B(y)&&(p=V(y)),B(f)&&([k,p]=[p,k]);const $={key:k};return B(p)&&($.end=p),(s||f)&&($.limit=s||f),$}function R(e){if("string"==typeof e)return e;const{key:n,end:r,limit:t}=e;if(!(I(n)||B(r)&&r!==n))return n;P("no_key",!B(n)),P("limit_without_end",B(t)&&!B(r));const o=G(n);if(!B(r))return o.key;const i=G(r),[s,c]=n<r?[o,i]:[i,o],f={};return t?f[n<r?"$first":"$last"]=t:""===s.key&&"￿"===c.key&&(f.$all=!0),""!==s.key&&(f[1===s.step?"$after":"$since"]=s.key),"￿"!==c.key&&(f[-1===c.step?"$before":"$until"]=c.key),f}function W(e){if("string"==typeof e){if(!e.length||"."===e)return[];e=e.split(".")}if(!Array.isArray(e))throw Error("encodePath.invalid:"+JSON.stringify(e));function n(e){if("string"==typeof e)return e;const{key:n,end:r}=F(e);if(r)throw"encodePath.unexpected_range_key";return n}if(!K(e[e.length-1]))return e.map(n);const[r,t={}]=q(e[e.length-1]);return r?e.slice(0,-1).concat([t]).map(n):e.map(n)}function z(e){if(!Array.isArray(e))throw Error("decodePath.invalid:"+JSON.stringify(e));return e.map((e=>R({key:e})))}function H(e){if(!Array.isArray(e))return[];const n=e[e.length-1];return K(n)?q(n):[]}var Q=d(_,20);function X(e,n){return J(e,(({key:e,end:r})=>e===n||r&&e<n&&r>=n?0:e<n?-1:1))}function Y(e,n,r,t){const o=X(e,n);return e[o]&&e[o].key<=n?o+1:o}function Z(e){return e&&void 0!==e.end}function ee(e){return e&&void 0!==e.children}function ne(e){return e&&e.prefix}function re(e){return e&&void 0!==e.path}function te(e){return e&&"\0"===e.key[0]}function oe(e,n){return void 0!==e.version&&e.version<n}function ie(e,n){return void 0!==e.version&&e.version>n}function se(e,n){let r=!1,t=0;for(const o of n){const n=ce(o),i=ee(o);t=J(e,n,t);const s=e[t],c=ee(s);if(!s||n(s)){e.splice(t,0,le(o)),r=!0;continue}if(i&&c)r=se(s.children,o.children)||r;else{if(i||c)throw new Error("add.branch_leaf_mismatch");s.value+=o.value}(c?s.children.length:s.value)||(e.splice(t,1),r=!0)}return r}function ce(e){return n=>fe(n.key,e.key)||fe(n.end,e.end)||fe(n.limit,e.limit)}function fe(e,n){return e===n?0:e<n?-1:1}function le(e){const n=c({},e);return e.children&&(n.children=e.children.map((e=>le(e)))),n}function ue(e,n){let r=0;for(const t of n)r=Z(t)?ae(e,t,r):ye(e,t,r);return e}function ae(e,n,r=0){const{key:t,end:o}=n,i=X(e,t),s=Y(e,o),c=[n];for(let f=i;f<s;f++){const n=e[f];Z(n)?c.push(...de(c.pop(),n)):ye(c,n,c.length-1)}return e.splice(i,s-i,...c),i+c.length}function de(e,n){return n.version<e.version&&([n,e]=[e,n]),[e.key<n.key&&f(c({},e),{end:C(n.key)}),n,e.end>n.end&&f(c({},e),{key:D(n.end)})].filter(Boolean)}function ye(e,n,r=0){if(!e)throw new Error("merge.insertNode: "+e);const t=n.key,o=X(e,t),i=e[o];return i&&i.key<=t?Z(i)?function(e,n,r){const t=r.key,o=e[n],i=he(r,o);if(!i)return;const s=[o.key<t&&f(c({},o),{end:C(t)}),i,o.end>t&&f(c({},o),{key:D(t)})].filter(Boolean);return e.splice(n,1,...s),n+s.length}(e,o,n):function(e,n,r){const t=e[n];if(ee(r)&&ee(t))ue(t.children,r.children);else if(ee(t)){const o=he(t,r);e[n]=o||r}else{const o=he(r,t);o&&(e[n]=o)}r.prefix&&(e[n].prefix=!0);return n+1}(e,o,n):(e.splice(o,0,n),o+1)}function he(e,n){const{version:r}=n;if(ee(e)){const n=[{key:"",end:"￿",version:r}];return ue(n,e.children),1===n.length?null:f(c({},e),{children:n})}return e.version>=r?e:null}const ke=Symbol("IS_VAL");function pe(e,n,r=0){return $e([f(c({},F(n[n.length-1])),{value:e,version:r})],n.slice(0,-1),r)}function $e(e,n,r=0,t=!1){if(!Array.isArray(n))throw Error("wrap.path_not_array "+n);if(!n.length)return e;let o=n.length-1;if(Array.isArray(e)){if(!e.length)return;e=[f(c({},F(n[o--])),{version:r,children:e})]}else e=[f(c({},F(n[o--])),{value:e,version:r})];for(t&&(e[0].prefix=!0);o>=0;)e=[f(c({},F(n[o--])),{version:r,children:e})];return e}function ve(e,n){if(!Array.isArray(n))throw Error("unwrap.path_not_array "+n);let r={children:e};for(let t=0;t<n.length;t++){const{key:o}=F(n[t]);if(!(e=r.children))return null;if(r=e[X(e,o)],!r||r.key>o)return;if(Z(r))return null}return ge(r)}function ge(e){return e.children?e.children:(e.value&&"object"==typeof e.value&&(e.value[ke]=!0),e.value)}function we(e,n){if(!Array.isArray(n))throw Error("del.path_not_array "+n);if(!e)return null;if(!n.length)return[];const r=n[0],t=X(e,r),o=e[t];if(!o||o.key>r||Z(o))return e;if(1===n.length)return e.slice(0,t).concat(e.slice(t+1));if(!ee(o))return e;const i=we(o.children,n.slice(1));if(i===n.children)return e;const s=i.length?f(c({},o),{children:i}):[];return e.slice(0,t).concat(s,e.slice(t+1))}class be{constructor(e){this.root=e||this}addKnown(e){this.known=this.known||[],ue(this.known,[e])}addUnknown(e){this.unknown=this.unknown||[],this.unknown.push(e)}addLinked(e){if(this.root!==this)return this.root.addLinked(e);this.linked=this.linked||[],se(this.linked,e)}}function me(e,n,r){let t=new be(r),o=n;for(;o;){let n=0;for(const r of o)if(Z(r))_e(e,r,t);else{n=X(e,r.key),Ae(e[n],r,t)}o=r?void 0:t.linked,delete t.linked}return delete t.root,t}function Ae(e,n,r){const{key:t,version:o}=n,{root:i}=r;if(!e||e.key>t||oe(e,o))r.addUnknown(n);else if(Z(e))if(ee(n)){const{known:o}=me([{key:"",end:"￿",version:e.version}],n.children);r.addKnown({key:t,version:e.version,children:o})}else r.addKnown({key:t,end:t,version:e.version});else if(ee(e)&&ee(n)){const{known:t,unknown:o}=me(e.children,n.children,i);t&&r.addKnown(f(c({},e),{children:t})),o&&r.addUnknown(f(c({},n),{children:o}))}else if(re(e))r.addKnown(e),e.prefix&&Z(n)?r.addLinked($e([n],e.path,o,!0)):r.addLinked($e(n.children||n.value,e.path,o,e.prefix||n.prefix));else if(ee(e)&&n.options&&n.options.subtree)r.addKnown(e);else{if(ee(e)||ee(n))throw new Error("slice.leaf_branch_mismatch:"+y(e)+"\n"+y(n));r.addKnown(e)}}function _e(e,n,r){let{key:t,end:o,limit:i=1/0,version:s}=n;const l=t<o?1:-1;if(""===e[0].key&&e[0].prefix)Ae(e[0],n,r);else{if(t<o)for(let l=X(e,t);t<=o&&i>0;l++){const u=e[l];if(!u||t<u.key||oe(u,s))break;Z(u)?r.addKnown(xe(u,t,o)):(Ae(u,f(c({},n),{key:t}),r),i--),t=D(u.end||u.key)}else for(let l=Y(e,t)-1;t>=o&&i>0;l--){const u=e[l];if(!u||t>(u.end||u.key)||oe(u,s))break;Z(u)?r.addKnown(xe(u,o,t)):(Ae(u,f(c({},n),{key:t}),r),i--),t=C(u.key)}if(i&&(l<0?t>o:t<o)){const e=f(c({},n),{key:t,end:o,limit:i});r.addUnknown(e)}}}function xe(e,n,r){return e.key>=n&&e.end<=r?e:f(c({},e),{key:e.key>n?e.key:n,end:e.end<r?e.end:r})}function je(e,n,r=[]){let t=0;for(const o of n)t=Z(o)?Oe(e,o,r,t):Ue(e,o,r,t);return r}function Oe(e,n,r,t=0){const{key:o,end:i}=n,s=X(e,o),c=Y(e,i);if(s===c&&!(e[s]&&e[s].key<=o&&e[s].end>=i))return s;const f=[];let l=n.key;for(let a=s;a<c;a++){const r=e[a];if(Z(r)&&r.version>=0?(r.key>l&&f.push({key:l,end:C(r.key),version:n.version}),l=D(r.end)):Le(r,n)&&(f.push({key:l,end:C(r.key),version:n.version}),l=D(r.key)),l>=n.end)break}l<=n.end&&f.push({key:l,end:n.end,version:n.version}),f.length&&r.push(...f);const u=[n];for(let a=s;a<c;a++){const n=e[a];Z(n)?u.push(...Ee(u.pop(),n)):Ue(u,n,[],u.length-1)}return e.splice(s,c-s,...u),s+u.length}function Ee(e,n){return n.version<e.version&&([n,e]=[e,n]),[e.key<n.key&&f(c({},e),{end:C(n.key)}),n,e.end>n.end&&f(c({},e),{key:D(n.end)})].filter(Boolean)}function Ue(e,n,r,t=0){const o=n.key,i=X(e,o),s=e[i];return s&&s.key<=o?Z(s)?function(e,n,r,t){const o=r.key,i=e[n],s=Le(r,i),l=Se(r,i);if(!s)return;t.push(s);const u=[i.key<o&&f(c({},i),{end:C(o)}),l,i.end>o&&f(c({},i),{key:D(o)})].filter(Boolean);return e.splice(n,1,...u),n+u.length}(e,i,n,r):function(e,n,r,t){const o=e[n];if(ee(r)&&ee(o)){const e=[];o.version=r.version,je(o.children,r.children,e),e.length&&t.push(f(c({},r),{children:e}))}else if(ee(o)){const i=Se(o,r);e[n]=i||r,i||t.push(r)}else{const i=Le(r,o),s=Se(r,o);s&&(e[n]=s),!i||r.value===o.value&&function(e,n){if(!e&&!n)return!0;if(!e||!n)return!1;if(e.length!==n.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==n[r])return!1;return!0}(r.path,o.path)||t.push(i)}return n+1}(e,i,n,r):i}function Se(e,n){if(ee(e)){const r={key:"",end:"￿",version:n.version},t=[r];return je(t,e.children),1===t.length&&t[0]===r?null:f(c({},e),{children:t})}return e.version>=n.version?e:null}function Le(e,n){if(ee(e)){const r=e.children.filter((e=>Le(e,n)));return r.length&&f(c({},e),{children:r})}return e.version>=n.version?e:null}function Ce(e,n){for(const r of e)r.version=n,r.children&&Ce(r.children,n);return e}function De(e,n=0){const r=[];for(const{key:t,end:o,children:i}of e){const e={key:t,version:n};o&&(o!==t&&(e.end=o),e.options={subtree:!0}),i?e.children=De(i):e.value=1,r.push(e)}return r}function Ne(e,n,r=Date.now()){let t=[{key:"",end:"￿",version:0}];return n&&(t=me(t,n).known||[]),t=Ce(ue(t,e),r),t}function Pe(e=[],{isGraph:n}={}){function r(e){let r=[],c=!0,u=!0;function a(...e){for(const n of e)B(n)&&!Number.isInteger(n.$key)&&(u=!1),B(n)&&"string"!=typeof n.$key&&(c=!1);r.push(...e)}const d=[];let y=null;function h({key:e,end:n}){if(y)if(y.end){if(e===D(y.end))return y.end=n||e,n&&n!==e}else e===D(y.key)&&(e=y.key);return n&&e!==n?(y={key:e,end:n},d.push(y),!0):(y={key:e},!1)}for(const l of e)n&&h(l)||(ne(l)?a(...t(l)):n&&Z(l)?a(s(l)):ee(l)?a(o(l)):re(l)?a(f(l)):a(i(l)));return(u||c)&&(r=r.reduce(((e,r)=>{if(Array.isArray(r))return e[r.$key]=r,delete r.$key,e;const t=r,{$key:o,$val:i}=t,s=l(t,["$key","$val"]);return"object"==typeof i&&(i.$val=!0),e[o]=B(i)?i:T(s)?!n||null:s,e}),c?{}:[])),n&&d.length&&(1===d.length&&""===d[0].key&&"￿"===d[0].end?r.$put=!0:r.$put=d.map((e=>R(e)))),r}function t(e){let n=R(e);if(""===n&&(n={}),"string"==typeof n)throw Error("decode.unencoded_prefix: "+n);if(re(e)){n.$all=!0;const r=z(e.path),t=r[r.length-1];if("string"==typeof t)throw Error("decode.unencoded_prefix_ref: "+e.path);return t.$all=!0,[{$key:n,$ref:r}]}const t=r(e.children);if(!Array.isArray(t))throw Error("decode.prefix_without_encoded_child_keys:"+e.key);for(const r of t){if("string"==typeof r.$key)throw Error("decode.prefix_with_unencoded_child_key:"+r.$key);q(r.$key)[0]||(r.$key={$cursor:r.$key}),r.$key=c(c({},n),r.$key)}return t}function o(e){const n=r(e.children);return n.$key=R(e),n}function i(e){const r=n?{$val:e.value}:{};return r.$key=R(e),r}function s(e){if(e.key===e.end)return{$key:R({key:e.key})}}function f(e){return{$key:R(e),$ref:z(e.path)}}return r(e)}function Te(e){return Pe(e,{isGraph:!0})}function Be(e){return Pe(e,{isGraph:!1})}const Ke=Symbol(),Ie=Symbol();function Je(e,n){function r(e,n){const{key:r}=F(n);if(!Array.isArray(e))return null;const o=e[X(e,r)];if(!o)return;if(Z(o)&&o.end>=r)return null;if(o.key!==r)return;const i=t(o);return o.prefix&&(i[Ie]=n),i}function t(n){let r;return n.path?(r=ve(e,n.path),"object"==typeof r&&(r[Ke]=n.path)):r=ge(n),r}return function n(o,i){if(null===o)return null;let s;if(B(o)||(o=[]),i.$key&&(i=[i]),i.$ref){const r=i,{$ref:t}=r,o=l(r,["$ref"]),[f,u]=H(t),a=W(t),d=ve(e,a);f&&(d[Ie]=u),s=n(d,f?c({$key:f},o):o),s.$ref=t}else if(Array.isArray(i)){let e;s=i.flatMap(((i,s)=>{if(!(null==i?void 0:i.$key))return n(r(o,s),i);const u=i,{$key:a,$chi:d}=u,y=l(u,["$key","$chi"]),h=d||(T(y)?1:y);if(!K(a)||!q(a)[0])return n(r(o,a),h);if(e)throw Error("decorate.multi_range_query:"+JSON.stringify({$key:a,pageKey:e}));e=a;const k=function(e,n){const[t,o]=q(n);B(o)?e=r(e,o):""===e[0].key&&e[0].prefix&&(e=r(e,""));const{key:i,end:s,limit:c=1/0}=F(t),f=X(e,i);let l,u=f;if(i<s){for(let n=0;u<e.length&&n<c;u++)Z(e[u])||n++;l=e.slice(f,u)}else{for(let n=0;u>=0&&n<c;u--)Z(e[u])||n++;l=e.slice(u+1,f+1)}e[Ke]&&(l[Ke]=e[Ke]);e[Ie]&&(l[Ie]=e[Ie]);return l}(o,a);return k.filter((e=>!Z(e))).map((e=>{const r=R(e),o=n(t(e),h);return"object"==typeof o&&(o.$key=k[Ie]?f(c({},k[Ie]),{$cursor:r}):r),o}))})),function(e,n){if(n.$all)return void Object.assign(e,{$page:n,$prev:null,$next:null});const[r,...t]=q(n),o=r,{$first:i,$last:s}=o,u=l(o,["$first","$last"]),[a]=t,d=i||s,y=f(c(c({},a),u),{$all:!0});if(e.length===d)if(i){const n=e[e.length-1].$key;y.$until=B(null==n?void 0:n.$cursor)?n.$cursor:n,delete y.$before}else{const n=e[0].$key;y.$since=B(null==n?void 0:n.$cursor)?n.$cursor:n,delete y.$after}const h=B(y.$after)?f(c({},a),{$last:d,$until:y.$after}):B(y.$since)?f(c({},a),{$last:d,$before:y.$since}):null;let k=B(y.$before)?f(c({},a),{$first:d,$since:y.$before}):B(y.$until)?f(c({},a),{$first:d,$after:y.$until}):null;Object.assign(e,{$page:y,$next:k,$prev:h})}(s,e)}else if("object"==typeof i){s={};for(const e in i)s[e]=n(r(o,e),i[e])}else if(i)if(Array.isArray(o)&&!o.length)s=void 0;else if("object"==typeof o&&o)if(o[ke])s=Array.isArray(o)?o.slice(0):c({},o),s.$val=!0;else{if(!Array.isArray(o))throw Error("decorate.unexpected_graph",o);s=Te(o)}else s=o;return o[Ke]&&(s.$ref=o[Ke]),s}(e,n)}function Ve(e){return JSON.stringify(e).replace(/\uffff/g,"\\uffff")}function Ge(e){return JSON.parse(e)}const Me=Symbol();function qe(e,{version:n,isGraph:r}={}){var t;const o=[];const i=r?ue:se;function s(e,n,t){var u;if(!B(e))return;if("object"==typeof e&&e&&T(e))return;const a=e||{},{$key:d,$ver:y}=a,h=l(a,["$key","$ver"]),k=h,{$ref:p,$val:$,$chi:v,$put:g}=k,w=l(k,["$ref","$val","$chi","$put"]);if(B(y)&&(t=y),K(d)){const[o,i]=q(d);if(r&&o&&!B(o.$cursor)&&!T(h)){const r=s(f(c({},e),{$key:i||""}),n,t);return r.prefix=!0,r}if((!B(n)||Number.isInteger(n))&&o&&i){const r=s({$key:i,$chi:[f(c({},e),{$key:B(o.$cursor)?o.$cursor:o})]},n,t);return r.prefix=!0,r}}!B(d)||!Number.isInteger(n)&&B(n)||(n=d);const b=n!==Me&&B(n)?F(n):{};if(b.version=t,null===e)b.end=b.key;else if(B(d)&&B(n)&&n!==d)b.children=[s(e,void 0,t)].filter(Boolean);else if(p){if(function(e,n,t,i,f){const[l,u]=H(e);let a=T(t)?B(f)?s(l?[{$key:l,$chi:f}]:f,void 0,n).children:B(i)?i:r?void 0:1:s(l?[c({$key:l},t)]:t,void 0,n).children;a&&o.push($e(a,W(e),n,!!l)[0])}(p,b.version,w,$,v),!r)return;b.path=W(p)}else if(!0===$)b.value=w;else if(B($))b.value=$;else if("object"!=typeof e)b.value=r||"number"==typeof e?e:1;else if(B(v)){const e=v.map((e=>s(e,void 0,t))).filter(Boolean).sort(((e,n)=>e.key<=n.key?-1:1));e.length&&(b.children=e)}else if(Array.isArray(e)){const n=e.map(((e,n)=>s(e,n,t))).filter(Boolean).reduce(((e,n)=>(i(e,[n]),e)),[]);n.length&&(b.children=n)}else{const n=Object.keys(w).sort().map((n=>s(e[n],n,t))).filter(Boolean);n.length?b.children=n:r?b.key&&!b.end&&(b.end=b.key):b.value=1}let m;return Array.isArray(e)&&!e.some((e=>B(null==e?void 0:e.$key)))&&(m=[F({$since:0,$until:1/0})]),!0===g?m=null:Array.isArray(g)?m=g.map((e=>F(e))):B(g)&&(m=[F(g)]),r&&B(m)&&(b.children=Ne(b.children||[],m,b.version)),(null==(u=b.children)?void 0:u.length)||B(b.end)||B(b.value)||B(b.path)?b:void 0}(null==e?void 0:e.$key)&&(e=[e]);let u=(null==(t=s(e,Me,n))?void 0:t.children)||[];for(;o.length;)i(u,[o.pop()]);return u}function Fe(e,n=Date.now()){return qe(e,{version:n,isGraph:!0})}function Re(e,n=0){return qe(e,{version:n,isGraph:!1})}async function*We(...e){const n=(await Promise.all(e.map((e=>e.next())))).map((e=>e.value));if(n.some((e=>void 0===e))){yield;for(const e of n)void 0!==e&&(yield e)}else{let e=[];for(const r of n)ue(e,r);yield e}yield*h(e)}function ze(){const e=new Set;return{write:function(n){for(const r of e)r(n)},watch:function(...n){return k(((r,t)=>(e.add(r),n.length&&Promise.resolve(n[0]).then(r),()=>e.delete(r))))}}}function He(e,n){if("object"!=typeof n||"object"!=typeof e||!e||!n)return n;for(const r in n)if(r in e){const t=He(e[r],n[r]);null===t?delete e[r]:e[r]=t}else e[r]=n[r];return T(e)?null:e}function Qe(e){if("object"!=typeof e||!e)return e;const n={};for(const r in e){const t=Qe(e[r]);null!==t&&(n[r]=t)}return T(n)?null:n}function Xe(e,n){if(!Array.isArray(n))throw Error("wrapObject.path_not_array "+n);for(let r=n.length-1;r>=0;r--){const t=n[r];e="string"==typeof t?{[t]:e}:Array.isArray(e)?[{$key:t,$chi:e}]:[c({$key:t},e)]}return e}function Ye(e,n){if(!Array.isArray(n))throw Error("unwrapObject.path_not_array "+n);for(let r=0;r<n.length;r++){if(!e||"object"!=typeof e)return;const t=n[r];if("string"==typeof t){if(Array.isArray(e))throw Error("unwrapObject.string_key_array:"+t);e=e[t]}else{if(!Array.isArray(e))throw Error("unwrapObject.arg_key_object:"+JSON.stringify(t));const[n,r]=q(t);if(n&&!n.$cursor)return e;{const t=(null==n?void 0:n.$cursor)?f(c({},r),{$cursor:n.$cursor}):r;e=e.find((({$key:e})=>p(e,t)))}}}return e}export{ke as IS_VAL,se as add,Qe as cloneObject,R as decodeArgs,Te as decodeGraph,z as decodePath,Be as decodeQuery,v as decodeUrl,S as decodeValue,Je as decorate,Ge as deserialize,F as encodeArgs,Fe as encodeGraph,W as encodePath,Re as encodeQuery,$ as encodeUrl,E as encodeValue,N as err,P as errIf,Ne as finalize,J as find,X as findFirst,Y as findLast,De as getKnown,ge as getNodeValue,ee as isBranch,B as isDef,T as isEmpty,te as isEncoded,I as isEncodedKey,re as isLink,ie as isNewer,oe as isOlder,K as isPlainObject,ne as isPrefix,Z as isRange,D as keyAfter,C as keyBefore,L as keyStep,Q as makeId,ze as makeWatcher,ue as merge,He as mergeObject,We as mergeStreams,we as remove,Ve as serialize,Ce as setVersion,je as sieve,me as slice,q as splitArgs,H as splitRef,ve as unwrap,Ye as unwrapObject,$e as wrap,Xe as wrapObject,pe as wrapValue};
package/package.json CHANGED
@@ -2,8 +2,13 @@
2
2
  "name": "@graffy/common",
3
3
  "description": "Common libraries that used by various Graffy modules.",
4
4
  "author": "aravind (https://github.com/aravindet)",
5
- "version": "0.15.7",
6
- "main": "./cjs/index.js",
5
+ "version": "0.15.8-alpha.4",
6
+ "main": "./index.cjs",
7
+ "exports": {
8
+ "import": "./index.mjs",
9
+ "require": "./index.cjs"
10
+ },
11
+ "module": "./index.mjs",
7
12
  "types": "./types/index.d.ts",
8
13
  "repository": {
9
14
  "type": "git",
@@ -11,13 +16,12 @@
11
16
  },
12
17
  "license": "Apache-2.0",
13
18
  "dependencies": {
14
- "@babel/runtime-corejs3": "^7.15.3",
15
- "lodash": "^4.17.19",
16
- "nanoid": "^3.1.25",
17
19
  "text-encoder-lite": "^2.0.0",
18
20
  "global": "^4.4.0",
19
- "@graffy/testing": "0.15.7",
20
- "@graffy/stream": "0.15.7",
21
- "merge-async-iterators": "^0.2.1"
21
+ "nanoid": "^3.1.25",
22
+ "@graffy/testing": "0.15.8-alpha.4",
23
+ "merge-async-iterators": "^0.2.1",
24
+ "@graffy/stream": "0.15.8-alpha.4",
25
+ "lodash": "^4.17.19"
22
26
  }
23
27
  }
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.default = void 0;
5
-
6
- /*
7
- This is just like standard URL-safe Base64, except for using an alphabet
8
- re-ordered for sortability.
9
- */
10
- var _default = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
11
- exports.default = _default;
12
- module.exports = exports.default;
@@ -1,151 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
-
5
- exports.__esModule = true;
6
- exports.splitArgs = splitArgs;
7
- exports.encode = encode;
8
- exports.decode = decode;
9
-
10
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose"));
11
-
12
- var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
13
-
14
- var _struct = require("./struct.js");
15
-
16
- var _step = require("../ops/step.js");
17
-
18
- var _util = require("../util.js");
19
-
20
- var _excluded = ["$cursor"];
21
-
22
- function maybeEncode(value) {
23
- return typeof value === 'string' ? value : '\0' + (0, _struct.encode)(value);
24
- }
25
-
26
- function maybeDecode(string) {
27
- if ((0, _util.isEncodedKey)(string)) {
28
- var _keyStep = (0, _step.keyStep)((0, _slice.default)(string).call(string, 1)),
29
- key = _keyStep.key,
30
- step = _keyStep.step;
31
-
32
- var value = key === '' || key === "\uFFFF" ? key : (0, _struct.decode)(key);
33
- return {
34
- key: value,
35
- step: step
36
- };
37
- } else {
38
- return (0, _step.keyStep)(string);
39
- }
40
- }
41
-
42
- var pageProps = {
43
- $all: 1,
44
- $first: 1,
45
- $last: 1,
46
- $after: 1,
47
- $before: 1,
48
- $since: 1,
49
- $until: 1,
50
- $cursor: 1
51
- };
52
-
53
- function splitArgs(arg) {
54
- var page = {};
55
- var filter = {};
56
-
57
- for (var p in arg) {
58
- (p in pageProps ? page : filter)[p] = arg[p];
59
- }
60
-
61
- return [(0, _util.isEmpty)(page) ? undefined : page, (0, _util.isEmpty)(filter) ? undefined : filter];
62
- }
63
-
64
- function encode(arg) {
65
- if (!(0, _util.isPlainObject)(arg)) return {
66
- key: maybeEncode(arg)
67
- };
68
-
69
- var _splitArgs = splitArgs(arg),
70
- page = _splitArgs[0],
71
- filter = _splitArgs[1];
72
-
73
- (0, _util.errIf)('page_and_filter', page && filter);
74
- if (!page) return {
75
- key: maybeEncode(filter || {})
76
- };
77
- var $cursor = page.$cursor,
78
- range = (0, _objectWithoutPropertiesLoose2.default)(page, _excluded);
79
- var $first = range.$first,
80
- $all = range.$all,
81
- $last = range.$last,
82
- $after = range.$after,
83
- $before = range.$before,
84
- $since = range.$since,
85
- $until = range.$until;
86
- var hasRange = !(0, _util.isEmpty)(range);
87
- (0, _util.errIf)('first_and_last', (0, _util.isDef)($first) && (0, _util.isDef)($last));
88
- (0, _util.errIf)('all_and_last', (0, _util.isDef)($all) && (0, _util.isDef)($last));
89
- (0, _util.errIf)('all_and_first', (0, _util.isDef)($first) && (0, _util.isDef)($all));
90
- (0, _util.errIf)('after_and_since', (0, _util.isDef)($after) && (0, _util.isDef)($since));
91
- (0, _util.errIf)('before_and_until', (0, _util.isDef)($before) && (0, _util.isDef)($until));
92
- (0, _util.errIf)('cursor_and_range_arg', (0, _util.isDef)($cursor) && hasRange);
93
-
94
- var _ref = hasRange ? ['', "\uFFFF"] : [],
95
- key = _ref[0],
96
- end = _ref[1];
97
-
98
- if ((0, _util.isDef)($cursor)) key = maybeEncode($cursor);
99
- if ((0, _util.isDef)($after)) key = (0, _step.keyAfter)(maybeEncode($after));
100
- if ((0, _util.isDef)($before)) end = (0, _step.keyBefore)(maybeEncode($before));
101
- if ((0, _util.isDef)($since)) key = maybeEncode($since);
102
- if ((0, _util.isDef)($until)) end = maybeEncode($until);
103
-
104
- if ((0, _util.isDef)($last)) {
105
- var _ref2 = [end, key];
106
- key = _ref2[0];
107
- end = _ref2[1];
108
- }
109
-
110
- var node = {
111
- key: key
112
- };
113
- if ((0, _util.isDef)(end)) node.end = end;
114
- if ($first || $last) node.limit = $first || $last;
115
- return node;
116
- }
117
-
118
- function decode(node) {
119
- if (typeof node === 'string') return node;
120
- var key = node.key,
121
- end = node.end,
122
- limit = node.limit;
123
- if (!(0, _util.isEncodedKey)(key) && (!(0, _util.isDef)(end) || end === key)) return key;
124
- (0, _util.errIf)('no_key', !(0, _util.isDef)(key));
125
- (0, _util.errIf)('limit_without_end', (0, _util.isDef)(limit) && !(0, _util.isDef)(end));
126
- var kParts = maybeDecode(key);
127
- if (!(0, _util.isDef)(end)) return kParts.key;
128
- var eParts = maybeDecode(end);
129
-
130
- var _ref3 = key < end ? [kParts, eParts] : [eParts, kParts],
131
- lower = _ref3[0],
132
- upper = _ref3[1];
133
-
134
- var args = {};
135
-
136
- if (limit) {
137
- args[key < end ? '$first' : '$last'] = limit;
138
- } else if (lower.key === '' && upper.key === "\uFFFF") {
139
- args.$all = true;
140
- }
141
-
142
- if (lower.key !== '') {
143
- args[lower.step === 1 ? '$after' : '$since'] = lower.key;
144
- }
145
-
146
- if (upper.key !== "\uFFFF") {
147
- args[upper.step === -1 ? '$before' : '$until'] = upper.key;
148
- }
149
-
150
- return args;
151
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
-
5
- exports.__esModule = true;
6
- exports.encode = encode;
7
- exports.decode = decode;
8
-
9
- var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
10
-
11
- var _alphabet = _interopRequireDefault(require("./alphabet.js"));
12
-
13
- function getByte(view, offset) {
14
- return offset < view.byteLength ? view.getUint8(offset) : 0;
15
- }
16
-
17
- function getChar(string, offset) {
18
- return offset < string.length ? (0, _indexOf.default)(_alphabet.default).call(_alphabet.default, string[offset]) : 0;
19
- }
20
-
21
- function encode(u8Arr) {
22
- var buffer = u8Arr.buffer,
23
- byteOffset = u8Arr.byteOffset,
24
- byteLength = u8Arr.byteLength;
25
- var view = new DataView(buffer, byteOffset, byteLength);
26
- var str = '';
27
-
28
- for (var i = 0; i < view.byteLength; i += 3) {
29
- var value = (getByte(view, i) << 16) + (getByte(view, i + 1) << 8) + getByte(view, i + 2);
30
- var gstr = '';
31
-
32
- for (var j = 0; j < 4; j++) {
33
- gstr = _alphabet.default[value & 0x3f] + gstr;
34
- value = value >> 6 | 0;
35
- }
36
-
37
- str += gstr;
38
- }
39
-
40
- return str.substr(0, Math.ceil(view.byteLength * 4 / 3));
41
- }
42
-
43
- function decode(string, start) {
44
- if (start === void 0) {
45
- start = 0;
46
- }
47
-
48
- var buffer = new ArrayBuffer(Math.floor((string.length - start) * 3 / 4));
49
- var view = new DataView(buffer);
50
-
51
- for (var i = start; i < string.length; i += 4) {
52
- var value = (getChar(string, i) << 18) + (getChar(string, i + 1) << 12) + (getChar(string, i + 2) << 6) + getChar(string, i + 3);
53
-
54
- for (var j = i * 3 / 4 + 2; j >= i * 3 / 4; j--) {
55
- if (j < view.byteLength) view.setUint8(j, value & 0xff);
56
- value = value >> 8 | 0;
57
- }
58
- }
59
-
60
- return new Uint8Array(buffer);
61
- }
@@ -1,253 +0,0 @@
1
- "use strict";
2
-
3
- var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
4
-
5
- var _Array$from = require("@babel/runtime-corejs3/core-js-stable/array/from");
6
-
7
- var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
8
-
9
- var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
10
-
11
- var _bindInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/bind");
12
-
13
- var _Array$isArray2 = require("@babel/runtime-corejs3/core-js-stable/array/is-array");
14
-
15
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
16
-
17
- exports.__esModule = true;
18
- exports.decodeGraph = decodeGraph;
19
- exports.decodeQuery = decodeQuery;
20
-
21
- var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
22
-
23
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutPropertiesLoose"));
24
-
25
- var _isInteger = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/is-integer"));
26
-
27
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
28
-
29
- var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
30
-
31
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
32
-
33
- var _args = require("./args.js");
34
-
35
- var _path = require("./path.js");
36
-
37
- var _util = require("../util.js");
38
-
39
- var _index = require("../ops/index.js");
40
-
41
- var _index2 = require("../node/index.js");
42
-
43
- var _excluded = ["$key", "$val"];
44
-
45
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var _context2; var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (it) return _bindInstanceProperty(_context2 = (it = it.call(o)).next).call(_context2, it); if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
46
-
47
- function _unsupportedIterableToArray(o, minLen) { var _context; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
48
-
49
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
50
-
51
- /**
52
- @param {Tree} node
53
- @param {boolean} options.isGraph
54
- */
55
- function decode(nodes, _temp) {
56
- if (nodes === void 0) {
57
- nodes = [];
58
- }
59
-
60
- var _ref = _temp === void 0 ? {} : _temp,
61
- isGraph = _ref.isGraph;
62
-
63
- function decodeChildren(nodes) {
64
- var result = [];
65
- var allStrs = true;
66
- var allNums = true; //Pushes objects to the result set and updates allStrs and allNums.
67
-
68
- function pushResult() {
69
- var _result;
70
-
71
- for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {
72
- objects[_key] = arguments[_key];
73
- }
74
-
75
- for (var _i = 0, _objects = objects; _i < _objects.length; _i++) {
76
- var object = _objects[_i];
77
- if ((0, _util.isDef)(object) && !(0, _isInteger.default)(object.$key)) allNums = false;
78
- if ((0, _util.isDef)(object) && typeof object.$key !== 'string') allStrs = false;
79
- }
80
-
81
- (_result = result).push.apply(_result, objects);
82
- }
83
-
84
- var putRanges = [];
85
- var lastNode = null; // Graphs only: Constructs the $put array. Returns true if this is a range
86
- // node that does not require to be added to the results.
87
-
88
- function addPutRange(_ref2) {
89
- var key = _ref2.key,
90
- end = _ref2.end;
91
-
92
- if (lastNode) {
93
- if (lastNode.end) {
94
- if (key === (0, _index.keyAfter)(lastNode.end)) {
95
- lastNode.end = end || key;
96
- return end && end !== key;
97
- }
98
- } else {
99
- if (key === (0, _index.keyAfter)(lastNode.key)) key = lastNode.key;
100
- }
101
- }
102
-
103
- if (end && key !== end) {
104
- lastNode = {
105
- key: key,
106
- end: end
107
- };
108
- putRanges.push(lastNode);
109
- return true;
110
- }
111
-
112
- lastNode = {
113
- key: key
114
- };
115
- return false;
116
- }
117
-
118
- for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {
119
- var node = _step.value;
120
- if (isGraph && addPutRange(node)) continue;
121
- if ((0, _index2.isPrefix)(node)) pushResult.apply(void 0, decodePrefixNode(node));else if (isGraph && (0, _index2.isRange)(node)) pushResult(decodeRangeNode(node));else if ((0, _index2.isBranch)(node)) pushResult(decodeBranchNode(node));else if ((0, _index2.isLink)(node)) pushResult(decodeLinkNode(node));else pushResult(decodeLeafNode(node));
122
- } // Use a simplified format if all the keys are numbers or strings.
123
-
124
-
125
- if (allNums || allStrs) {
126
- result = (0, _reduce.default)(result).call(result, function (collection, item) {
127
- if ((0, _isArray.default)(item)) {
128
- collection[item.$key] = item;
129
- delete item.$key;
130
- return collection;
131
- }
132
-
133
- var $key = item.$key,
134
- $val = item.$val,
135
- rest = (0, _objectWithoutPropertiesLoose2.default)(item, _excluded);
136
- if (typeof $val === 'object') $val.$val = true; // prettier-ignore
137
-
138
- collection[$key] = (0, _util.isDef)($val) ? $val : !(0, _util.isEmpty)(rest) ? rest : isGraph ? null : true;
139
- return collection;
140
- }, allStrs ? {} : []);
141
- }
142
-
143
- if (isGraph && putRanges.length) {
144
- if (putRanges.length === 1 && putRanges[0].key === '' && putRanges[0].end === "\uFFFF") {
145
- result.$put = true;
146
- } else {
147
- result.$put = (0, _map.default)(putRanges).call(putRanges, function (rNode) {
148
- return (0, _args.decode)(rNode);
149
- });
150
- }
151
- }
152
-
153
- return result;
154
- }
155
-
156
- function decodePrefixNode(node) {
157
- var args = (0, _args.decode)(node);
158
- if (args === '') args = {};
159
-
160
- if (typeof args === 'string') {
161
- throw Error('decode.unencoded_prefix: ' + args);
162
- }
163
-
164
- if ((0, _index2.isLink)(node)) {
165
- args.$all = true;
166
- var $ref = (0, _path.decode)(node.path);
167
- var lastKey = $ref[$ref.length - 1];
168
-
169
- if (typeof lastKey === 'string') {
170
- throw Error('decode.unencoded_prefix_ref: ' + node.path);
171
- }
172
-
173
- lastKey.$all = true;
174
- return [{
175
- $key: args,
176
- $ref: $ref
177
- }];
178
- }
179
-
180
- var children = decodeChildren(node.children);
181
-
182
- if (!(0, _isArray.default)(children)) {
183
- throw Error('decode.prefix_without_encoded_child_keys:' + node.key);
184
- }
185
-
186
- for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
187
- var child = _step2.value;
188
-
189
- if (typeof child.$key === 'string') {
190
- throw Error('decode.prefix_with_unencoded_child_key:' + child.$key);
191
- }
192
-
193
- if (!(0, _args.splitArgs)(child.$key)[0]) {
194
- // splitArgs returns [page, filter]. If page is blank, it indicates
195
- // we have a bare cursor.
196
- child.$key = {
197
- $cursor: child.$key
198
- };
199
- }
200
-
201
- child.$key = (0, _extends2.default)({}, args, child.$key);
202
- }
203
-
204
- return children;
205
- }
206
-
207
- function decodeBranchNode(node) {
208
- var child = decodeChildren(node.children);
209
- child.$key = (0, _args.decode)(node);
210
- return child;
211
- }
212
-
213
- function decodeLeafNode(node) {
214
- var child = isGraph ? {
215
- $val: node.value
216
- } : {};
217
- child.$key = (0, _args.decode)(node);
218
- return child;
219
- }
220
- /**
221
- Only for graphs;
222
- */
223
-
224
-
225
- function decodeRangeNode(node) {
226
- if (node.key === node.end) return {
227
- $key: (0, _args.decode)({
228
- key: node.key
229
- })
230
- };
231
- }
232
-
233
- function decodeLinkNode(node) {
234
- return {
235
- $key: (0, _args.decode)(node),
236
- $ref: (0, _path.decode)(node.path)
237
- };
238
- }
239
-
240
- return decodeChildren(nodes);
241
- }
242
-
243
- function decodeGraph(graph) {
244
- return decode(graph, {
245
- isGraph: true
246
- });
247
- }
248
-
249
- function decodeQuery(query) {
250
- return decode(query, {
251
- isGraph: false
252
- });
253
- }