rmapi-js 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [2.3.0] - 2022-12-31
12
+
13
+ ### Added
14
+
15
+ - the root hash is now cached, with the default option of using the cached
16
+ value instead of making a request for it.
17
+
18
+ ## [2.2.0] - 2022-12-30
19
+
20
+ ### Added
21
+
22
+ - `create` and `move` apis added for a simple high level interface for adding
23
+ and moving documents.
24
+
25
+ ## [2.1.0] - 2022-12-30
26
+
27
+ ### Added
28
+
29
+ - `putMetadata` created for adding metadata and to parallel `getMetadata`. It's
30
+ just a thin wrapper around `putText`.
31
+ - `putCollection` add to simplify folder creation.
32
+
33
+ ## [2.0.0] - 2022-12-26
34
+
35
+ ### Added
36
+
37
+ - New default URLs to work with the new api.
38
+ - `syncComplete` was readded and working.
39
+ - `putPdf` added for uploading pdfs.
40
+ - `uploadPdf` and `uploadEpub` added to expose a different upload api.
41
+
11
42
  ## [1.1.0] - 2022-10-07
12
43
 
13
44
  ### Removed
@@ -1,4 +1,4 @@
1
- var Pt=Object.create;var H=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var Et=Object.getOwnPropertyNames;var Tt=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ot=(e,t)=>{for(var r in t)H(e,r,{get:t[r],enumerable:!0})},Ae=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Et(t))!At.call(e,i)&&i!==r&&H(e,i,{get:()=>t[i],enumerable:!(n=wt(t,i))||n.enumerable});return e};var ce=(e,t,r)=>(r=e!=null?Pt(Tt(e)):{},Ae(t||!e||!e.__esModule?H(r,"default",{value:e,enumerable:!0}):r,e)),Mt=e=>Ae(H({},"__esModule",{value:!0}),e);var ke=c(j=>{"use strict";j.byteLength=St;j.toByteArray=Ct;j.fromByteArray=It;var P=[],x=[],kt=typeof Uint8Array<"u"?Uint8Array:Array,pe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(O=0,Oe=pe.length;O<Oe;++O)P[O]=pe[O],x[pe.charCodeAt(O)]=O;var O,Oe;x["-".charCodeAt(0)]=62;x["_".charCodeAt(0)]=63;function Me(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function St(e){var t=Me(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Ft(e,t,r){return(t+r)*3/4-r}function Ct(e){var t,r=Me(e),n=r[0],i=r[1],a=new kt(Ft(e,n,i)),s=0,o=i>0?n-4:n,f;for(f=0;f<o;f+=4)t=x[e.charCodeAt(f)]<<18|x[e.charCodeAt(f+1)]<<12|x[e.charCodeAt(f+2)]<<6|x[e.charCodeAt(f+3)],a[s++]=t>>16&255,a[s++]=t>>8&255,a[s++]=t&255;return i===2&&(t=x[e.charCodeAt(f)]<<2|x[e.charCodeAt(f+1)]>>4,a[s++]=t&255),i===1&&(t=x[e.charCodeAt(f)]<<10|x[e.charCodeAt(f+1)]<<4|x[e.charCodeAt(f+2)]>>2,a[s++]=t>>8&255,a[s++]=t&255),a}function Dt(e){return P[e>>18&63]+P[e>>12&63]+P[e>>6&63]+P[e&63]}function Rt(e,t,r){for(var n,i=[],a=t;a<r;a+=3)n=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(e[a+2]&255),i.push(Dt(n));return i.join("")}function It(e){for(var t,r=e.length,n=r%3,i=[],a=16383,s=0,o=r-n;s<o;s+=a)i.push(Rt(e,s,s+a>o?o:s+a));return n===1?(t=e[r-1],i.push(P[t>>2]+P[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(P[t>>10]+P[t>>4&63]+P[t<<2&63]+"=")),i.join("")}});var me=c(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.default=Lt;var Ut=qt(require("crypto"));function qt(e){return e&&e.__esModule?e:{default:e}}var z=new Uint8Array(256),J=z.length;function Lt(){return J>z.length-16&&(Ut.default.randomFillSync(z),J=0),z.slice(J,J+=16)}});var Se=c(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.default=void 0;var Nt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;V.default=Nt});var L=c(G=>{"use strict";Object.defineProperty(G,"__esModule",{value:!0});G.default=void 0;var Bt=$t(Se());function $t(e){return e&&e.__esModule?e:{default:e}}function Ht(e){return typeof e=="string"&&Bt.default.test(e)}var jt=Ht;G.default=jt});var B=c(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});N.default=void 0;N.unsafeStringify=Fe;var Jt=zt(L());function zt(e){return e&&e.__esModule?e:{default:e}}var y=[];for(let e=0;e<256;++e)y.push((e+256).toString(16).slice(1));function Fe(e,t=0){return(y[e[t+0]]+y[e[t+1]]+y[e[t+2]]+y[e[t+3]]+"-"+y[e[t+4]]+y[e[t+5]]+"-"+y[e[t+6]]+y[e[t+7]]+"-"+y[e[t+8]]+y[e[t+9]]+"-"+y[e[t+10]]+y[e[t+11]]+y[e[t+12]]+y[e[t+13]]+y[e[t+14]]+y[e[t+15]]).toLowerCase()}function Vt(e,t=0){let r=Fe(e,t);if(!(0,Jt.default)(r))throw TypeError("Stringified UUID is invalid");return r}var Gt=Vt;N.default=Gt});var De=c(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.default=void 0;var Yt=Wt(me()),Zt=B();function Wt(e){return e&&e.__esModule?e:{default:e}}var Ce,ge,he=0,ve=0;function Kt(e,t,r){let n=t&&r||0,i=t||new Array(16);e=e||{};let a=e.node||Ce,s=e.clockseq!==void 0?e.clockseq:ge;if(a==null||s==null){let p=e.random||(e.rng||Yt.default)();a==null&&(a=Ce=[p[0]|1,p[1],p[2],p[3],p[4],p[5]]),s==null&&(s=ge=(p[6]<<8|p[7])&16383)}let o=e.msecs!==void 0?e.msecs:Date.now(),f=e.nsecs!==void 0?e.nsecs:ve+1,u=o-he+(f-ve)/1e4;if(u<0&&e.clockseq===void 0&&(s=s+1&16383),(u<0||o>he)&&e.nsecs===void 0&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");he=o,ve=f,ge=s,o+=122192928e5;let l=((o&268435455)*1e4+f)%4294967296;i[n++]=l>>>24&255,i[n++]=l>>>16&255,i[n++]=l>>>8&255,i[n++]=l&255;let v=o/4294967296*1e4&268435455;i[n++]=v>>>8&255,i[n++]=v&255,i[n++]=v>>>24&15|16,i[n++]=v>>>16&255,i[n++]=s>>>8|128,i[n++]=s&255;for(let p=0;p<6;++p)i[n+p]=a[p];return t||(0,Zt.unsafeStringify)(i)}var Qt=Kt;Y.default=Qt});var xe=c(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.default=void 0;var Xt=er(L());function er(e){return e&&e.__esModule?e:{default:e}}function tr(e){if(!(0,Xt.default)(e))throw TypeError("Invalid UUID");let t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=t&255,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=t&255,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=t&255,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=t&255,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=t&255,r}var rr=tr;Z.default=rr});var be=c(M=>{"use strict";Object.defineProperty(M,"__esModule",{value:!0});M.URL=M.DNS=void 0;M.default=or;var nr=B(),ir=ar(xe());function ar(e){return e&&e.__esModule?e:{default:e}}function sr(e){e=unescape(encodeURIComponent(e));let t=[];for(let r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}var Re="6ba7b810-9dad-11d1-80b4-00c04fd430c8";M.DNS=Re;var Ie="6ba7b811-9dad-11d1-80b4-00c04fd430c8";M.URL=Ie;function or(e,t,r){function n(i,a,s,o){var f;if(typeof i=="string"&&(i=sr(i)),typeof a=="string"&&(a=(0,ir.default)(a)),((f=a)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let u=new Uint8Array(16+i.length);if(u.set(a),u.set(i,a.length),u=r(u),u[6]=u[6]&15|t,u[8]=u[8]&63|128,s){o=o||0;for(let l=0;l<16;++l)s[o+l]=u[l];return s}return(0,nr.unsafeStringify)(u)}try{n.name=e}catch{}return n.DNS=Re,n.URL=Ie,n}});var Ue=c(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.default=void 0;var fr=ur(require("crypto"));function ur(e){return e&&e.__esModule?e:{default:e}}function lr(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),fr.default.createHash("md5").update(e).digest()}var dr=lr;W.default=dr});var Le=c(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});K.default=void 0;var cr=qe(be()),pr=qe(Ue());function qe(e){return e&&e.__esModule?e:{default:e}}var yr=(0,cr.default)("v3",48,pr.default),mr=yr;K.default=mr});var Ne=c(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.default=void 0;var gr=hr(require("crypto"));function hr(e){return e&&e.__esModule?e:{default:e}}var vr={randomUUID:gr.default.randomUUID};Q.default=vr});var He=c(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.default=void 0;var Be=$e(Ne()),xr=$e(me()),br=B();function $e(e){return e&&e.__esModule?e:{default:e}}function _r(e,t,r){if(Be.default.randomUUID&&!t&&!e)return Be.default.randomUUID();e=e||{};let n=e.random||(e.rng||xr.default)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){r=r||0;for(let i=0;i<16;++i)t[r+i]=n[i];return t}return(0,br.unsafeStringify)(n)}var Pr=_r;X.default=Pr});var je=c(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.default=void 0;var wr=Er(require("crypto"));function Er(e){return e&&e.__esModule?e:{default:e}}function Tr(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),wr.default.createHash("sha1").update(e).digest()}var Ar=Tr;ee.default=Ar});var ze=c(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.default=void 0;var Or=Je(be()),Mr=Je(je());function Je(e){return e&&e.__esModule?e:{default:e}}var kr=(0,Or.default)("v5",80,Mr.default),Sr=kr;te.default=Sr});var Ve=c(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.default=void 0;var Fr="00000000-0000-0000-0000-000000000000";re.default=Fr});var Ge=c(ne=>{"use strict";Object.defineProperty(ne,"__esModule",{value:!0});ne.default=void 0;var Cr=Dr(L());function Dr(e){return e&&e.__esModule?e:{default:e}}function Rr(e){if(!(0,Cr.default)(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}var Ir=Rr;ne.default=Ir});var Ye=c(_=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return Br.default}});Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return Jr.default}});Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return jr.default}});Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return Ur.default}});Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return qr.default}});Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return Lr.default}});Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return Nr.default}});Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return Hr.default}});Object.defineProperty(_,"version",{enumerable:!0,get:function(){return $r.default}});var Ur=E(De()),qr=E(Le()),Lr=E(He()),Nr=E(ze()),Br=E(Ve()),$r=E(Ge()),Hr=E(L()),jr=E(B()),Jr=E(xe());function E(e){return e&&e.__esModule?e:{default:e}}});var we=c(d=>{"use strict";var Ke=d&&d.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function zr(e){let{definitions:t,nullable:r,metadata:n}=e,i=Ke(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=zr;function Qe(e){return"ref"in e}d.isRefForm=Qe;function Vr(e){return"type"in e}d.isTypeForm=Vr;function Xe(e){return"enum"in e}d.isEnumForm=Xe;function et(e){return"elements"in e}d.isElementsForm=et;function Pe(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=Pe;function tt(e){return"values"in e}d.isValuesForm=tt;function rt(e){return"discriminator"in e}d.isDiscriminatorForm=rt;function k(e,t){if(t===void 0&&(t=e),e.definitions!==void 0){if(t!==e)return!1;for(let r of Object.values(e.definitions))if(!k(r,t))return!1}if(Qe(e)&&!(e.ref in(t.definitions||{}))||Xe(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(et(e))return k(e.elements,t);if(Pe(e)){for(let r of Object.values(e.properties||{}))if(!k(r,t))return!1;for(let r of Object.values(e.optionalProperties||{}))if(!k(r,t))return!1;for(let r of Object.keys(e.properties||{}))if(r in(e.optionalProperties||{}))return!1}if(tt(e))return k(e.values,t);if(rt(e)){for(let r of Object.values(e.mapping))if(!k(r,t)||!Pe(r)||r.nullable||e.discriminator in(r.properties||{})||e.discriminator in(r.optionalProperties||{}))return!1}return!0}d.isValidSchema=k;var Gr=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],Yr=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function S(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let t=e,{definitions:r=void 0,nullable:n=void 0,metadata:i=void 0,ref:a=void 0,type:s=void 0,enum:o=void 0,elements:f=void 0,properties:u=void 0,optionalProperties:l=void 0,additionalProperties:v=void 0,values:p=void 0,discriminator:le=void 0,mapping:U=void 0}=t,vt=Ke(t,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),xt=[a!==void 0,s!==void 0,o!==void 0,f!==void 0,u!==void 0,l!==void 0,v!==void 0,p!==void 0,le!==void 0,U!==void 0],de=!1;for(let b of Gr)de=de||b.every((bt,_t)=>bt===xt[_t]);if(!de)return!1;if(r!==void 0){if(typeof r!="object"||Array.isArray(r)||r===null)return!1;for(let b of Object.values(r))if(!S(b))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||a!==void 0&&typeof a!="string"||s!==void 0&&(typeof s!="string"||!Yr.includes(s))||o!==void 0&&(!Array.isArray(o)||!o.every(b=>typeof b=="string"))||f!==void 0&&!S(f))return!1;if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let b of Object.values(u))if(!S(b))return!1}if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let b of Object.values(l))if(!S(b))return!1}if(v!==void 0&&typeof v!="boolean"||p!==void 0&&!S(p)||le!==void 0&&typeof le!="string")return!1;if(U!==void 0){if(typeof U!="object"||Array.isArray(U)||U===null)return!1;for(let b of Object.values(U))if(!S(b))return!1}return Object.keys(vt).length===0}d.isSchema=S});var nt=c(Ee=>{"use strict";Object.defineProperty(Ee,"__esModule",{value:!0});var Zr=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function Wr(e){let t=e.match(Zr);if(t===null)return!1;let r=parseInt(t[1],10),n=parseInt(t[2],10),i=parseInt(t[3],10),a=parseInt(t[4],10),s=parseInt(t[5],10),o=parseInt(t[6],10);return!(n>12||i>Kr(r,n)||a>23||s>59||o>60)}Ee.default=Wr;function Kr(e,t){return t===2?Qr(e)?29:28:Xr[t]}function Qr(e){return e%4===0&&(e%100!==0||e%400===0)}var Xr=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var it=c(T=>{"use strict";var en=T&&T.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(T,"__esModule",{value:!0});T.validate=T.MaxDepthExceededError=void 0;var tn=en(nt()),F=we(),ae=class extends Error{};T.MaxDepthExceededError=ae;var se=class extends Error{};function rn(e,t,r){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:r||{maxDepth:0,maxErrors:0}};try{R(n,e,t)}catch(i){if(!(i instanceof se))throw i}return n.errors}T.validate=rn;function R(e,t,r,n){if(!(t.nullable&&r===null)){if(F.isRefForm(t)){if(e.schemaTokens.length===e.config.maxDepth)throw new ae;e.schemaTokens.push(["definitions",t.ref]),R(e,e.root.definitions[t.ref],r),e.schemaTokens.pop()}else if(F.isTypeForm(t)){switch(m(e,"type"),t.type){case"boolean":typeof r!="boolean"&&g(e);break;case"float32":case"float64":typeof r!="number"&&g(e);break;case"int8":q(e,r,-128,127);break;case"uint8":q(e,r,0,255);break;case"int16":q(e,r,-32768,32767);break;case"uint16":q(e,r,0,65535);break;case"int32":q(e,r,-2147483648,2147483647);break;case"uint32":q(e,r,0,4294967295);break;case"string":typeof r!="string"&&g(e);break;case"timestamp":typeof r!="string"?g(e):tn.default(r)||g(e);break}h(e)}else if(F.isEnumForm(t))m(e,"enum"),(typeof r!="string"||!t.enum.includes(r))&&g(e),h(e);else if(F.isElementsForm(t)){if(m(e,"elements"),Array.isArray(r))for(let[i,a]of r.entries())C(e,i.toString()),R(e,t.elements,a),D(e);else g(e);h(e)}else if(F.isPropertiesForm(t))if(typeof r=="object"&&r!==null&&!Array.isArray(r)){if(t.properties!==void 0){m(e,"properties");for(let[i,a]of Object.entries(t.properties))m(e,i),r.hasOwnProperty(i)?(C(e,i),R(e,a,r[i]),D(e)):g(e),h(e);h(e)}if(t.optionalProperties!==void 0){m(e,"optionalProperties");for(let[i,a]of Object.entries(t.optionalProperties))m(e,i),r.hasOwnProperty(i)&&(C(e,i),R(e,a,r[i]),D(e)),h(e);h(e)}if(t.additionalProperties!==!0)for(let i of Object.keys(r)){let a=t.properties&&i in t.properties,s=t.optionalProperties&&i in t.optionalProperties;!a&&!s&&i!==n&&(C(e,i),g(e),D(e))}}else t.properties!==void 0?m(e,"properties"):m(e,"optionalProperties"),g(e),h(e);else if(F.isValuesForm(t)){if(m(e,"values"),typeof r=="object"&&r!==null&&!Array.isArray(r))for(let[i,a]of Object.entries(r))C(e,i),R(e,t.values,a),D(e);else g(e);h(e)}else if(F.isDiscriminatorForm(t))if(typeof r=="object"&&r!==null&&!Array.isArray(r))if(r.hasOwnProperty(t.discriminator)){let i=r[t.discriminator];typeof i=="string"?i in t.mapping?(m(e,"mapping"),m(e,i),R(e,t.mapping[i],r,t.discriminator),h(e),h(e)):(m(e,"mapping"),C(e,t.discriminator),g(e),D(e),h(e)):(m(e,"discriminator"),C(e,t.discriminator),g(e),D(e),h(e))}else m(e,"discriminator"),g(e),h(e);else m(e,"discriminator"),g(e),h(e)}}function q(e,t,r,n){(typeof t!="number"||!Number.isInteger(t)||t<r||t>n)&&g(e)}function C(e,t){e.instanceTokens.push(t)}function D(e){e.instanceTokens.pop()}function m(e,t){e.schemaTokens[e.schemaTokens.length-1].push(t)}function h(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function g(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new se}});var st=c(A=>{"use strict";var nn=A&&A.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),at=A&&A.__exportStar||function(e,t){for(var r in e)r!=="default"&&!t.hasOwnProperty(r)&&nn(t,e,r)};Object.defineProperty(A,"__esModule",{value:!0});at(we(),A);at(it(),A)});var gn={};Ot(gn,{GenerationError:()=>ue,ResponseError:()=>I,builtinFontNames:()=>un,builtinLineHeights:()=>mt,builtinMargins:()=>yt,builtinTextScales:()=>pt,builtinTools:()=>fn,formatEntry:()=>gt,parseEntry:()=>ht,register:()=>yn,remarkable:()=>mn});module.exports=Mt(gn);var dt=ce(ke());var w=ce(Ye(),1),In=w.default.v1,Un=w.default.v3,ie=w.default.v4,qn=w.default.v5,Ln=w.default.NIL,Nn=w.default.version,Bn=w.default.validate,$n=w.default.stringify,Hn=w.default.parse;function _e(e){return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}function Ze(e){return new Uint8Array((e.match(/../g)??[]).map(t=>parseInt(t,16)))}function We(e){let t=0;for(let i of e)t+=i.length;let r=new Uint8Array(t),n=0;for(let i of e)r.set(i,n),n+=i.length;return r}var ot=ce(st());function $(e,t){if((0,ot.validate)(e,t).length)throw new Error(`couldn't validate schema: ${JSON.stringify(t)} didn't match schema ${JSON.stringify(e)}`)}var ft="3",ct="https://webapp-prod.cloud.remarkable.engineering",an="https://internal.cloud.remarkable.com",ut="x-goog-generation",sn="x-goog-if-generation-match",on="x-goog-content-length-range",fn=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],un=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],pt={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},yt={sm:50,md:125,rr:180,lg:200},mt={df:-1,md:100,lg:150,xl:200},ln={properties:{docID:{type:"string"},hash:{type:"string"}}},dn={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},oe={visibleName:{type:"string"},lastModified:{type:"string"}},fe={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},cn={discriminator:"type",mapping:{CollectionType:{properties:oe,optionalProperties:fe},DocumentType:{properties:oe,optionalProperties:{...fe,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},lt={id:{type:"string"},hash:{type:"string"}},pn={discriminator:"type",mapping:{CollectionType:{properties:{...oe,...lt},optionalProperties:fe},DocumentType:{properties:{...oe,...lt,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...fe,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},I=class extends Error{constructor(r,n,i){super(i);this.status=r,this.statusText=n}},ue=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function yn(e,{deviceDesc:t="browser-chrome",uuid:r=ie(),authHost:n=ct,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let a=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:t,deviceID:r})});if(a.ok)return await a.text();throw new I(a.status,a.statusText,"couldn't register api")}function gt({hash:e,type:t,documentId:r,subfiles:n,size:i}){return`${e}:${t}:${r}:${n}:${i}
2
- `}function ht(e){let[t,r,n,i,a]=e.split(":");if(t===void 0||r===void 0||n===void 0||i===void 0||a===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(r==="80000000")return{hash:t,type:r,documentId:n,subfiles:parseInt(i),size:BigInt(a)};if(r==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:t,type:r,documentId:n,subfiles:0,size:BigInt(a)}}else throw new Error(`entries line contained invalid type: ${r}`)}var Te=class{#o;#a;#e;#s;#t;constructor(t,r,n,i,a){this.#o=t,this.#a=r,this.#e=n,this.#s=i,this.#t=a}async#i(t,{body:r,method:n="POST",headers:i={}}){let a=await this.#a(t,{method:n,headers:{Authorization:`Bearer ${this.#o}`,...i},body:r});if(a.ok)return a;{let s=await a.text();throw new I(a.status,a.statusText,`failed reMarkable request: ${s}`)}}async#r({url:t,method:r,maxuploadsize_bytes:n},i,a={}){let s=n?{...a,[on]:`0,${n}`}:a,o=await this.#a(t,{method:r,body:i,headers:s});if(o.ok)return o;{let f=await o.text();throw new I(o.status,o.statusText,f)}}async#n(t,r,n){let i=r===void 0?"downloads":"uploads",a=n?`{ "http_method": "PUT", "relative_path": "${t}", "root_schema": "${n}", "generation": ${r} }`:JSON.stringify({http_method:"GET",relative_path:t}),o=await(await this.#i(`${this.#t}/sync/v2/signed-urls/${i}`,{body:a})).text(),f=JSON.parse(o);return $(dn,f),f}async getRootHash(){let t=await this.#n("root"),r=await this.#r(t),n=r.headers.get(ut);if(!n)throw new Error("no generation header in root hash");return[await r.text(),BigInt(n)]}async putRootHash(t,r){let n=await this.#n("root",r,t),i;try{i=await this.#r(n,t,{[sn]:`${r}`})}catch(s){throw s instanceof I&&s.status===412?new ue:s}let a=i.headers.get(ut);if(!a)throw new Error("no generation header in root hash");return BigInt(a)}async getBuffer(t){let r=await this.#n(t);return await(await this.#r(r)).arrayBuffer()}async getText(t){let r=await this.#e?.get(t);if(r)return r;{let n=await this.#n(t),a=await(await this.#r(n)).text();return await this.#e?.set(t,a),a}}async getMetadata(t){let r=await this.getText(t),n=JSON.parse(r);return $(cn,n),n}async getEntries(t){let r=await this.getText(t),[n,...i]=r.slice(0,-1).split(`
3
- `);if(n!==ft)throw new Error(`got unexpected schema version: ${n}`);return i.map(ht)}async#f(t,r){let n=await this.#n(t,null);await this.#r(n,r)}async putEntries(t,r){let n=new TextEncoder;r.sort((l,v)=>l.documentId.localeCompare(v.documentId));let i=We(r.map(l=>Ze(l.hash))),a=await this.#s.digest("SHA-256",i),s=_e(a),o=r.map(gt).join(""),f=`${ft}
4
- ${o}`,u=n.encode(f);return await this.#f(s,u),await this.#e?.set(s,f),{hash:s,type:"80000000",documentId:t,subfiles:r.length,size:0n}}async putBuffer(t,r){let n=await this.#s.digest("SHA-256",r),i=_e(n);return await this.#f(i,r),{hash:i,type:"0",documentId:t,subfiles:0,size:BigInt(r.length)}}async putText(t,r){let n=new TextEncoder,i=await this.putBuffer(t,n.encode(r));return await this.#e?.set(i.hash,r),i}async putMetadata(t,r){return await this.putText(`${t}.metadata`,JSON.stringify(r))}async putCollection(t,r=""){let n=ie(),i=`${new Date().valueOf()}`,a=[],s={type:"CollectionType",visibleName:t,version:0,parent:r,synced:!0,lastModified:i};a.push(this.putMetadata(n,s)),a.push(this.putText(`${n}.content`,"{}"));let o=await Promise.all(a);return await this.putEntries(n,o)}async#u(t,r,n,i,a){if(a.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${a.fileType}`);let s=ie(),o=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${s}.${n}`,r));let u={type:"DocumentType",visibleName:t,version:0,parent:i,synced:!0,lastModified:o};f.push(this.putMetadata(s,u)),f.push(this.putText(`${s}.content`,JSON.stringify(a)));let l=await Promise.all(f);return await this.putEntries(s,l)}async putEpub(t,r,{parent:n="",margins:i=125,orientation:a,textAlignment:s,textScale:o=1,lineHeight:f=-1,fontName:u="",cover:l="visited",lastTool:v}={}){let p={dummyDocument:!1,extraMetadata:{LastTool:v},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?mt[f]:f,margins:typeof i=="string"?yt[i]:i,textScale:typeof o=="string"?pt[o]:o,pages:[],coverPageNumber:l==="first"?0:-1,formatVersion:1,orientation:a,textAlignment:s,fontName:u};return await this.#u(t,r,"epub",n,p)}async putPdf(t,r,{parent:n="",orientation:i,cover:a="first",lastTool:s}={}){let o={dummyDocument:!1,extraMetadata:{LastTool:s},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:a==="first"?0:-1,formatVersion:1,orientation:i};return await this.#u(t,r,"pdf",n,o)}async syncComplete(t){let r=`{ "generation": ${t} }`;await this.#i(`${this.#t}/sync/v2/sync-complete`,{body:r})}async getEntriesMetadata(){let r=await(await this.#i(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(r);return $({elements:pn},n),n}async#l(t,r,n){let a=new TextEncoder().encode(JSON.stringify({file_name:t})),o=await(await this.#i(`${this.#t}/doc/v2/files`,{body:r,headers:{"content-type":n,"rm-meta":(0,dt.fromByteArray)(a),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(o);return $(ln,f),f}async uploadEpub(t,r){return await this.#l(t,r,"application/epub+zip")}async uploadPdf(t,r){return await this.#l(t,r,"application/pdf")}};async function mn(e,{fetch:t=globalThis.fetch,cache:r,subtle:n=globalThis.crypto?.subtle,authHost:i=ct,syncHost:a=an}={}){let s=await t(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`couldn't fetch auth token: ${s.statusText}`);let o=await s.text();return new Te(o,t,r,n,a)}0&&(module.exports={GenerationError,ResponseError,builtinFontNames,builtinLineHeights,builtinMargins,builtinTextScales,builtinTools,formatEntry,parseEntry,register,remarkable});
1
+ var Pt=Object.create;var z=Object.defineProperty;var Et=Object.getOwnPropertyDescriptor;var Tt=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Mt=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},Ce=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Tt(t))!At.call(e,i)&&i!==r&&z(e,i,{get:()=>t[i],enumerable:!(n=Et(t,i))||n.enumerable});return e};var ge=(e,t,r)=>(r=e!=null?Pt(Ot(e)):{},Ce(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e)),St=e=>Ce(z({},"__esModule",{value:!0}),e);var Ie=p(G=>{"use strict";G.byteLength=Ct;G.toByteArray=Rt;G.fromByteArray=Ut;var P=[],x=[],kt=typeof Uint8Array<"u"?Uint8Array:Array,he="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(S=0,Fe=he.length;S<Fe;++S)P[S]=he[S],x[he.charCodeAt(S)]=S;var S,Fe;x["-".charCodeAt(0)]=62;x["_".charCodeAt(0)]=63;function Re(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function Ct(e){var t=Re(e),r=t[0],n=t[1];return(r+n)*3/4-n}function Ft(e,t,r){return(t+r)*3/4-r}function Rt(e){var t,r=Re(e),n=r[0],i=r[1],a=new kt(Ft(e,n,i)),o=0,s=i>0?n-4:n,f;for(f=0;f<s;f+=4)t=x[e.charCodeAt(f)]<<18|x[e.charCodeAt(f+1)]<<12|x[e.charCodeAt(f+2)]<<6|x[e.charCodeAt(f+3)],a[o++]=t>>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=x[e.charCodeAt(f)]<<2|x[e.charCodeAt(f+1)]>>4,a[o++]=t&255),i===1&&(t=x[e.charCodeAt(f)]<<10|x[e.charCodeAt(f+1)]<<4|x[e.charCodeAt(f+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function It(e){return P[e>>18&63]+P[e>>12&63]+P[e>>6&63]+P[e&63]}function Dt(e,t,r){for(var n,i=[],a=t;a<r;a+=3)n=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(e[a+2]&255),i.push(It(n));return i.join("")}function Ut(e){for(var t,r=e.length,n=r%3,i=[],a=16383,o=0,s=r-n;o<s;o+=a)i.push(Dt(e,o,o+a>s?s:o+a));return n===1?(t=e[r-1],i.push(P[t>>2]+P[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(P[t>>10]+P[t>>4&63]+P[t<<2&63]+"=")),i.join("")}});var be=p(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.default=$t;var qt=Lt(require("crypto"));function Lt(e){return e&&e.__esModule?e:{default:e}}var Y=new Uint8Array(256),V=Y.length;function $t(){return V>Y.length-16&&(qt.default.randomFillSync(Y),V=0),Y.slice(V,V+=16)}});var De=p(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.default=void 0;var Nt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;Z.default=Nt});var N=p(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.default=void 0;var Bt=Ht(De());function Ht(e){return e&&e.__esModule?e:{default:e}}function jt(e){return typeof e=="string"&&Bt.default.test(e)}var Jt=jt;W.default=Jt});var H=p(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.default=void 0;B.unsafeStringify=Ue;var zt=Gt(N());function Gt(e){return e&&e.__esModule?e:{default:e}}var m=[];for(let e=0;e<256;++e)m.push((e+256).toString(16).slice(1));function Ue(e,t=0){return(m[e[t+0]]+m[e[t+1]]+m[e[t+2]]+m[e[t+3]]+"-"+m[e[t+4]]+m[e[t+5]]+"-"+m[e[t+6]]+m[e[t+7]]+"-"+m[e[t+8]]+m[e[t+9]]+"-"+m[e[t+10]]+m[e[t+11]]+m[e[t+12]]+m[e[t+13]]+m[e[t+14]]+m[e[t+15]]).toLowerCase()}function Vt(e,t=0){let r=Ue(e,t);if(!(0,zt.default)(r))throw TypeError("Stringified UUID is invalid");return r}var Yt=Vt;B.default=Yt});var Le=p(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});K.default=void 0;var Zt=Kt(be()),Wt=H();function Kt(e){return e&&e.__esModule?e:{default:e}}var qe,xe,we=0,_e=0;function Qt(e,t,r){let n=t&&r||0,i=t||new Array(16);e=e||{};let a=e.node||qe,o=e.clockseq!==void 0?e.clockseq:xe;if(a==null||o==null){let c=e.random||(e.rng||Zt.default)();a==null&&(a=qe=[c[0]|1,c[1],c[2],c[3],c[4],c[5]]),o==null&&(o=xe=(c[6]<<8|c[7])&16383)}let s=e.msecs!==void 0?e.msecs:Date.now(),f=e.nsecs!==void 0?e.nsecs:_e+1,u=s-we+(f-_e)/1e4;if(u<0&&e.clockseq===void 0&&(o=o+1&16383),(u<0||s>we)&&e.nsecs===void 0&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");we=s,_e=f,xe=o,s+=122192928e5;let l=((s&268435455)*1e4+f)%4294967296;i[n++]=l>>>24&255,i[n++]=l>>>16&255,i[n++]=l>>>8&255,i[n++]=l&255;let y=s/4294967296*1e4&268435455;i[n++]=y>>>8&255,i[n++]=y&255,i[n++]=y>>>24&15|16,i[n++]=y>>>16&255,i[n++]=o>>>8|128,i[n++]=o&255;for(let c=0;c<6;++c)i[n+c]=a[c];return t||(0,Wt.unsafeStringify)(i)}var Xt=Qt;K.default=Xt});var Pe=p(Q=>{"use strict";Object.defineProperty(Q,"__esModule",{value:!0});Q.default=void 0;var er=tr(N());function tr(e){return e&&e.__esModule?e:{default:e}}function rr(e){if(!(0,er.default)(e))throw TypeError("Invalid UUID");let t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=t&255,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=t&255,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=t&255,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=t&255,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=t&255,r}var nr=rr;Q.default=nr});var Ee=p(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});k.URL=k.DNS=void 0;k.default=fr;var ir=H(),ar=or(Pe());function or(e){return e&&e.__esModule?e:{default:e}}function sr(e){e=unescape(encodeURIComponent(e));let t=[];for(let r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}var $e="6ba7b810-9dad-11d1-80b4-00c04fd430c8";k.DNS=$e;var Ne="6ba7b811-9dad-11d1-80b4-00c04fd430c8";k.URL=Ne;function fr(e,t,r){function n(i,a,o,s){var f;if(typeof i=="string"&&(i=sr(i)),typeof a=="string"&&(a=(0,ar.default)(a)),((f=a)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let u=new Uint8Array(16+i.length);if(u.set(a),u.set(i,a.length),u=r(u),u[6]=u[6]&15|t,u[8]=u[8]&63|128,o){s=s||0;for(let l=0;l<16;++l)o[s+l]=u[l];return o}return(0,ir.unsafeStringify)(u)}try{n.name=e}catch{}return n.DNS=$e,n.URL=Ne,n}});var Be=p(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.default=void 0;var ur=lr(require("crypto"));function lr(e){return e&&e.__esModule?e:{default:e}}function dr(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),ur.default.createHash("md5").update(e).digest()}var cr=dr;X.default=cr});var je=p(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.default=void 0;var pr=He(Ee()),yr=He(Be());function He(e){return e&&e.__esModule?e:{default:e}}var mr=(0,pr.default)("v3",48,yr.default),gr=mr;ee.default=gr});var Je=p(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.default=void 0;var hr=vr(require("crypto"));function vr(e){return e&&e.__esModule?e:{default:e}}var br={randomUUID:hr.default.randomUUID};te.default=br});var Ve=p(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.default=void 0;var ze=Ge(Je()),xr=Ge(be()),wr=H();function Ge(e){return e&&e.__esModule?e:{default:e}}function _r(e,t,r){if(ze.default.randomUUID&&!t&&!e)return ze.default.randomUUID();e=e||{};let n=e.random||(e.rng||xr.default)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){r=r||0;for(let i=0;i<16;++i)t[r+i]=n[i];return t}return(0,wr.unsafeStringify)(n)}var Pr=_r;re.default=Pr});var Ye=p(ne=>{"use strict";Object.defineProperty(ne,"__esModule",{value:!0});ne.default=void 0;var Er=Tr(require("crypto"));function Tr(e){return e&&e.__esModule?e:{default:e}}function Or(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),Er.default.createHash("sha1").update(e).digest()}var Ar=Or;ne.default=Ar});var We=p(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.default=void 0;var Mr=Ze(Ee()),Sr=Ze(Ye());function Ze(e){return e&&e.__esModule?e:{default:e}}var kr=(0,Mr.default)("v5",80,Sr.default),Cr=kr;ie.default=Cr});var Ke=p(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.default=void 0;var Fr="00000000-0000-0000-0000-000000000000";ae.default=Fr});var Qe=p(oe=>{"use strict";Object.defineProperty(oe,"__esModule",{value:!0});oe.default=void 0;var Rr=Ir(N());function Ir(e){return e&&e.__esModule?e:{default:e}}function Dr(e){if(!(0,Rr.default)(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}var Ur=Dr;oe.default=Ur});var Xe=p(_=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return Br.default}});Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return zr.default}});Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return Jr.default}});Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return qr.default}});Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return Lr.default}});Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return $r.default}});Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return Nr.default}});Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return jr.default}});Object.defineProperty(_,"version",{enumerable:!0,get:function(){return Hr.default}});var qr=O(Le()),Lr=O(je()),$r=O(Ve()),Nr=O(We()),Br=O(Ke()),Hr=O(Qe()),jr=O(N()),Jr=O(H()),zr=O(Pe());function O(e){return e&&e.__esModule?e:{default:e}}});var Ae=p(d=>{"use strict";var rt=d&&d.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function Gr(e){let{definitions:t,nullable:r,metadata:n}=e,i=rt(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=Gr;function nt(e){return"ref"in e}d.isRefForm=nt;function Vr(e){return"type"in e}d.isTypeForm=Vr;function it(e){return"enum"in e}d.isEnumForm=it;function at(e){return"elements"in e}d.isElementsForm=at;function Oe(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=Oe;function ot(e){return"values"in e}d.isValuesForm=ot;function st(e){return"discriminator"in e}d.isDiscriminatorForm=st;function C(e,t){if(t===void 0&&(t=e),e.definitions!==void 0){if(t!==e)return!1;for(let r of Object.values(e.definitions))if(!C(r,t))return!1}if(nt(e)&&!(e.ref in(t.definitions||{}))||it(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(at(e))return C(e.elements,t);if(Oe(e)){for(let r of Object.values(e.properties||{}))if(!C(r,t))return!1;for(let r of Object.values(e.optionalProperties||{}))if(!C(r,t))return!1;for(let r of Object.keys(e.properties||{}))if(r in(e.optionalProperties||{}))return!1}if(ot(e))return C(e.values,t);if(st(e)){for(let r of Object.values(e.mapping))if(!C(r,t)||!Oe(r)||r.nullable||e.discriminator in(r.properties||{})||e.discriminator in(r.optionalProperties||{}))return!1}return!0}d.isValidSchema=C;var Yr=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],Zr=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function F(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let t=e,{definitions:r=void 0,nullable:n=void 0,metadata:i=void 0,ref:a=void 0,type:o=void 0,enum:s=void 0,elements:f=void 0,properties:u=void 0,optionalProperties:l=void 0,additionalProperties:y=void 0,values:c=void 0,discriminator:$=void 0,mapping:T=void 0}=t,pe=rt(t,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),ye=[a!==void 0,o!==void 0,s!==void 0,f!==void 0,u!==void 0,l!==void 0,y!==void 0,c!==void 0,$!==void 0,T!==void 0],w=!1;for(let b of Yr)w=w||b.every((J,ke)=>J===ye[ke]);if(!w)return!1;if(r!==void 0){if(typeof r!="object"||Array.isArray(r)||r===null)return!1;for(let b of Object.values(r))if(!F(b))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||a!==void 0&&typeof a!="string"||o!==void 0&&(typeof o!="string"||!Zr.includes(o))||s!==void 0&&(!Array.isArray(s)||!s.every(b=>typeof b=="string"))||f!==void 0&&!F(f))return!1;if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let b of Object.values(u))if(!F(b))return!1}if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let b of Object.values(l))if(!F(b))return!1}if(y!==void 0&&typeof y!="boolean"||c!==void 0&&!F(c)||$!==void 0&&typeof $!="string")return!1;if(T!==void 0){if(typeof T!="object"||Array.isArray(T)||T===null)return!1;for(let b of Object.values(T))if(!F(b))return!1}return Object.keys(pe).length===0}d.isSchema=F});var ft=p(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});var Wr=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function Kr(e){let t=e.match(Wr);if(t===null)return!1;let r=parseInt(t[1],10),n=parseInt(t[2],10),i=parseInt(t[3],10),a=parseInt(t[4],10),o=parseInt(t[5],10),s=parseInt(t[6],10);return!(n>12||i>Qr(r,n)||a>23||o>59||s>60)}Me.default=Kr;function Qr(e,t){return t===2?Xr(e)?29:28:en[t]}function Xr(e){return e%4===0&&(e%100!==0||e%400===0)}var en=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var ut=p(A=>{"use strict";var tn=A&&A.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(A,"__esModule",{value:!0});A.validate=A.MaxDepthExceededError=void 0;var rn=tn(ft()),R=Ae(),fe=class extends Error{};A.MaxDepthExceededError=fe;var ue=class extends Error{};function nn(e,t,r){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:r||{maxDepth:0,maxErrors:0}};try{U(n,e,t)}catch(i){if(!(i instanceof ue))throw i}return n.errors}A.validate=nn;function U(e,t,r,n){if(!(t.nullable&&r===null)){if(R.isRefForm(t)){if(e.schemaTokens.length===e.config.maxDepth)throw new fe;e.schemaTokens.push(["definitions",t.ref]),U(e,e.root.definitions[t.ref],r),e.schemaTokens.pop()}else if(R.isTypeForm(t)){switch(g(e,"type"),t.type){case"boolean":typeof r!="boolean"&&h(e);break;case"float32":case"float64":typeof r!="number"&&h(e);break;case"int8":L(e,r,-128,127);break;case"uint8":L(e,r,0,255);break;case"int16":L(e,r,-32768,32767);break;case"uint16":L(e,r,0,65535);break;case"int32":L(e,r,-2147483648,2147483647);break;case"uint32":L(e,r,0,4294967295);break;case"string":typeof r!="string"&&h(e);break;case"timestamp":typeof r!="string"?h(e):rn.default(r)||h(e);break}v(e)}else if(R.isEnumForm(t))g(e,"enum"),(typeof r!="string"||!t.enum.includes(r))&&h(e),v(e);else if(R.isElementsForm(t)){if(g(e,"elements"),Array.isArray(r))for(let[i,a]of r.entries())I(e,i.toString()),U(e,t.elements,a),D(e);else h(e);v(e)}else if(R.isPropertiesForm(t))if(typeof r=="object"&&r!==null&&!Array.isArray(r)){if(t.properties!==void 0){g(e,"properties");for(let[i,a]of Object.entries(t.properties))g(e,i),r.hasOwnProperty(i)?(I(e,i),U(e,a,r[i]),D(e)):h(e),v(e);v(e)}if(t.optionalProperties!==void 0){g(e,"optionalProperties");for(let[i,a]of Object.entries(t.optionalProperties))g(e,i),r.hasOwnProperty(i)&&(I(e,i),U(e,a,r[i]),D(e)),v(e);v(e)}if(t.additionalProperties!==!0)for(let i of Object.keys(r)){let a=t.properties&&i in t.properties,o=t.optionalProperties&&i in t.optionalProperties;!a&&!o&&i!==n&&(I(e,i),h(e),D(e))}}else t.properties!==void 0?g(e,"properties"):g(e,"optionalProperties"),h(e),v(e);else if(R.isValuesForm(t)){if(g(e,"values"),typeof r=="object"&&r!==null&&!Array.isArray(r))for(let[i,a]of Object.entries(r))I(e,i),U(e,t.values,a),D(e);else h(e);v(e)}else if(R.isDiscriminatorForm(t))if(typeof r=="object"&&r!==null&&!Array.isArray(r))if(r.hasOwnProperty(t.discriminator)){let i=r[t.discriminator];typeof i=="string"?i in t.mapping?(g(e,"mapping"),g(e,i),U(e,t.mapping[i],r,t.discriminator),v(e),v(e)):(g(e,"mapping"),I(e,t.discriminator),h(e),D(e),v(e)):(g(e,"discriminator"),I(e,t.discriminator),h(e),D(e),v(e))}else g(e,"discriminator"),h(e),v(e);else g(e,"discriminator"),h(e),v(e)}}function L(e,t,r,n){(typeof t!="number"||!Number.isInteger(t)||t<r||t>n)&&h(e)}function I(e,t){e.instanceTokens.push(t)}function D(e){e.instanceTokens.pop()}function g(e,t){e.schemaTokens[e.schemaTokens.length-1].push(t)}function v(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function h(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new ue}});var dt=p(M=>{"use strict";var an=M&&M.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),lt=M&&M.__exportStar||function(e,t){for(var r in e)r!=="default"&&!t.hasOwnProperty(r)&&an(t,e,r)};Object.defineProperty(M,"__esModule",{value:!0});lt(Ae(),M);lt(ut(),M)});var hn={};Mt(hn,{GenerationError:()=>ce,ResponseError:()=>q,builtinFontNames:()=>ln,builtinLineHeights:()=>xt,builtinMargins:()=>bt,builtinTextScales:()=>vt,builtinTools:()=>un,formatEntry:()=>wt,parseEntry:()=>_t,register:()=>mn,remarkable:()=>gn});module.exports=St(hn);var gt=ge(Ie());var E=ge(Xe(),1),Un=E.default.v1,qn=E.default.v3,se=E.default.v4,Ln=E.default.v5,$n=E.default.NIL,Nn=E.default.version,Bn=E.default.validate,Hn=E.default.stringify,jn=E.default.parse;function Te(e){return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}function et(e){return new Uint8Array((e.match(/../g)??[]).map(t=>parseInt(t,16)))}function tt(e){let t=0;for(let i of e)t+=i.length;let r=new Uint8Array(t),n=0;for(let i of e)r.set(i,n),n+=i.length;return r}var ct=ge(dt());function j(e,t){if((0,ct.validate)(e,t).length)throw new Error(`couldn't validate schema: ${JSON.stringify(t)} didn't match schema ${JSON.stringify(e)}`)}var pt="3",ht="https://webapp-prod.cloud.remarkable.engineering",on="https://internal.cloud.remarkable.com",yt="x-goog-generation",sn="x-goog-if-generation-match",fn="x-goog-content-length-range",un=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],ln=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],vt={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},bt={sm:50,md:125,rr:180,lg:200},xt={df:-1,md:100,lg:150,xl:200},dn={properties:{docID:{type:"string"},hash:{type:"string"}}},cn={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},le={visibleName:{type:"string"},lastModified:{type:"string"}},de={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},pn={discriminator:"type",mapping:{CollectionType:{properties:le,optionalProperties:de},DocumentType:{properties:le,optionalProperties:{...de,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},mt={id:{type:"string"},hash:{type:"string"}},yn={discriminator:"type",mapping:{CollectionType:{properties:{...le,...mt},optionalProperties:de},DocumentType:{properties:{...le,...mt,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...de,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},q=class extends Error{constructor(r,n,i){super(i);this.status=r,this.statusText=n}},ce=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function mn(e,{deviceDesc:t="browser-chrome",uuid:r=se(),authHost:n=ht,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let a=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:t,deviceID:r})});if(a.ok)return await a.text();throw new q(a.status,a.statusText,"couldn't register api")}function wt({hash:e,type:t,documentId:r,subfiles:n,size:i}){return`${e}:${t}:${r}:${n}:${i}
2
+ `}function _t(e){let[t,r,n,i,a]=e.split(":");if(t===void 0||r===void 0||n===void 0||i===void 0||a===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(r==="80000000")return{hash:t,type:r,documentId:n,subfiles:parseInt(i),size:BigInt(a)};if(r==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:t,type:r,documentId:n,subfiles:0,size:BigInt(a)}}else throw new Error(`entries line contained invalid type: ${r}`)}var Se=class{#f;#o;#s;#t;#r;#e=null;constructor(t,r,n,i,a){this.#f=t,this.#o=r,this.#r=n,this.#s=i,this.#t=a}async#a(t,{body:r,method:n="POST",headers:i={}}){let a=await this.#o(t,{method:n,headers:{Authorization:`Bearer ${this.#f}`,...i},body:r});if(a.ok)return a;{let o=await a.text();throw new q(a.status,a.statusText,`failed reMarkable request: ${o}`)}}async#n({url:t,method:r,maxuploadsize_bytes:n},i,a={}){let o=n?{...a,[fn]:`0,${n}`}:a,s=await this.#o(t,{method:r,body:i,headers:o});if(s.ok)return s;{let f=await s.text();throw new q(s.status,s.statusText,f)}}async#i(t,r,n){let i=r===void 0?"downloads":"uploads",a=n?`{ "http_method": "PUT", "relative_path": "${t}", "root_schema": "${n}", "generation": ${r} }`:JSON.stringify({http_method:"GET",relative_path:t}),s=await(await this.#a(`${this.#t}/sync/v2/signed-urls/${i}`,{body:a})).text(),f=JSON.parse(s);return j(cn,f),f}async getRootHash({cache:t=!0}={}){if(t)for(;this.#e;)try{let[a,o]=await this.#e;return[a,o]}catch{}let r=(async()=>{try{let a=await this.#i("root"),o=await this.#n(a),s=o.headers.get(yt);if(s)return[await o.text(),BigInt(s)];throw new Error("no generation header in root hash")}catch(a){throw this.#e=null,a}})();this.#e=r;let[n,i]=await r;return[n,i]}async putRootHash(t,r){let n=await this.#i("root",r,t),i;try{i=await this.#n(n,t,{[sn]:`${r}`})}catch(s){throw s instanceof q&&s.status===412?(this.#e=null,new ce):s}let a=i.headers.get(yt);if(!a)throw new Error("no generation header in root hash");let o=BigInt(a);return this.#e=Promise.resolve([t,o]),o}async getBuffer(t){let r=await this.#i(t);return await(await this.#n(r)).arrayBuffer()}async getText(t){let r=await this.#r?.get(t);if(r)return r;{let n=await this.#i(t),a=await(await this.#n(n)).text();return await this.#r?.set(t,a),a}}async getMetadata(t){let r=await this.getText(t),n=JSON.parse(r);return j(pn,n),n}async getEntries(t){let r=await this.getText(t),[n,...i]=r.slice(0,-1).split(`
3
+ `);if(n!==pt)throw new Error(`got unexpected schema version: ${n}`);return i.map(_t)}async#u(t,r){let n=await this.#i(t,null);await this.#n(n,r)}async putEntries(t,r){let n=new TextEncoder;r.sort((l,y)=>l.documentId.localeCompare(y.documentId));let i=tt(r.map(l=>et(l.hash))),a=await this.#s.digest("SHA-256",i),o=Te(a),s=r.map(wt).join(""),f=`${pt}
4
+ ${s}`,u=n.encode(f);return await this.#u(o,u),await this.#r?.set(o,f),{hash:o,type:"80000000",documentId:t,subfiles:r.length,size:0n}}async putBuffer(t,r){let n=await this.#s.digest("SHA-256",r),i=Te(n);return await this.#u(i,r),{hash:i,type:"0",documentId:t,subfiles:0,size:BigInt(r.length)}}async putText(t,r){let n=new TextEncoder,i=await this.putBuffer(t,n.encode(r));return await this.#r?.set(i.hash,r),i}async putMetadata(t,r){return await this.putText(`${t}.metadata`,JSON.stringify(r))}async putCollection(t,r=""){let n=se(),i=`${new Date().valueOf()}`,a=[],o={type:"CollectionType",visibleName:t,version:0,parent:r,synced:!0,lastModified:i};a.push(this.putMetadata(n,o)),a.push(this.putText(`${n}.content`,"{}"));let s=await Promise.all(a);return await this.putEntries(n,s)}async#l(t,r,n,i,a){if(a.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${a.fileType}`);let o=se(),s=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${o}.${n}`,r));let u={type:"DocumentType",visibleName:t,version:0,parent:i,synced:!0,lastModified:s};f.push(this.putMetadata(o,u)),f.push(this.putText(`${o}.content`,JSON.stringify(a)));let l=await Promise.all(f);return await this.putEntries(o,l)}async putEpub(t,r,{parent:n="",margins:i=125,orientation:a,textAlignment:o,textScale:s=1,lineHeight:f=-1,fontName:u="",cover:l="visited",lastTool:y}={}){let c={dummyDocument:!1,extraMetadata:{LastTool:y},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?xt[f]:f,margins:typeof i=="string"?bt[i]:i,textScale:typeof s=="string"?vt[s]:s,pages:[],coverPageNumber:l==="first"?0:-1,formatVersion:1,orientation:a,textAlignment:o,fontName:u};return await this.#l(t,r,"epub",n,c)}async putPdf(t,r,{parent:n="",orientation:i,cover:a="first",lastTool:o}={}){let s={dummyDocument:!1,extraMetadata:{LastTool:o},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:a==="first"?0:-1,formatVersion:1,orientation:i};return await this.#l(t,r,"pdf",n,s)}async syncComplete(t){let r=`{ "generation": ${t} }`;await this.#a(`${this.#t}/sync/v2/sync-complete`,{body:r})}async#d(t,r,n){let{hash:i}=await this.putEntries("",r),a=await this.putRootHash(i,t);if(n)try{return await this.syncComplete(a),!0}catch{return!1}else return!1}async create(t,r={}){let{cache:n=!0,sync:i=!0}=typeof r=="boolean"?{cache:!1,sync:r}:r,[a,o]=await this.getRootHash({cache:n}),s=await this.getEntries(a);return s.push(t),await this.#d(o,s,i)}async move(t,r,n={}){let{cache:i=!0,sync:a=!0}=typeof n=="boolean"?{cache:!1,sync:n}:n,[o,s]=await this.getRootHash({cache:i}),f=await this.getEntries(o);if(!(!r||r==="trash")){let w=f.find(me=>me.documentId===r);if(w){if(w.type!=="80000000")throw new Error(`destination id was a raw file: ${r}`)}else throw new Error(`destination id not found: ${r}`);let b=await this.getEntries(w.hash),[J]=b.filter(me=>me.documentId===`${r}.metadata`);if(!J)throw new Error(`destination id didn't have metadata: ${r}`);if((await this.getMetadata(J.hash)).type!=="CollectionType")throw new Error(`destination id wasn't a collection: ${r}`)}let u=f.findIndex(w=>w.documentId===t);if(u===-1)throw new Error(`document not found: ${t}`);let[l]=f.splice(u,1);if(l.type!=="80000000")throw new Error(`document was a raw file: ${t}`);let y=await this.getEntries(l.hash),c=y.findIndex(w=>w.documentId===`${t}.metadata`);if(c===-1)throw new Error(`document didn't have metadata: ${t}`);let[$]=y.splice(c,1),T=await this.getMetadata($.hash);T.parent=r;let pe=await this.putMetadata(t,T);y.push(pe);let ye=await this.putEntries(t,y);return f.push(ye),await this.#d(s,f,a)}async getEntriesMetadata(){let r=await(await this.#a(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(r);return j({elements:yn},n),n}async#c(t,r,n){let a=new TextEncoder().encode(JSON.stringify({file_name:t})),s=await(await this.#a(`${this.#t}/doc/v2/files`,{body:r,headers:{"content-type":n,"rm-meta":(0,gt.fromByteArray)(a),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(s);return j(dn,f),f}async uploadEpub(t,r){return await this.#c(t,r,"application/epub+zip")}async uploadPdf(t,r){return await this.#c(t,r,"application/pdf")}};async function gn(e,{fetch:t=globalThis.fetch,cache:r,subtle:n=globalThis.crypto?.subtle,authHost:i=ht,syncHost:a=on}={}){let o=await t(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!o.ok)throw new Error(`couldn't fetch auth token: ${o.statusText}`);let s=await o.text();return new Se(s,t,r,n,a)}0&&(module.exports={GenerationError,ResponseError,builtinFontNames,builtinLineHeights,builtinMargins,builtinTextScales,builtinTools,formatEntry,parseEntry,register,remarkable});
@@ -1,4 +1,4 @@
1
- var $e=Object.create;var de=Object.defineProperty;var He=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var B=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var ze=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Je(r))!qe.call(e,i)&&i!==t&&de(e,i,{get:()=>r[i],enumerable:!(n=He(r,i))||n.enumerable});return e};var ce=(e,r,t)=>(t=e!=null?$e(Ve(e)):{},ze(r||!e||!e.__esModule?de(t,"default",{value:e,enumerable:!0}):t,e));var ye=B(q=>{"use strict";q.byteLength=We;q.toByteArray=Ze;q.fromByteArray=Qe;var P=[],E=[],Ge=typeof Uint8Array<"u"?Uint8Array:Array,te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(M=0,pe=te.length;M<pe;++M)P[M]=te[M],E[te.charCodeAt(M)]=M;var M,pe;E["-".charCodeAt(0)]=62;E["_".charCodeAt(0)]=63;function me(e){var r=e.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=e.indexOf("=");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function We(e){var r=me(e),t=r[0],n=r[1];return(t+n)*3/4-n}function Ye(e,r,t){return(r+t)*3/4-t}function Ze(e){var r,t=me(e),n=t[0],i=t[1],o=new Ge(Ye(e,n,i)),s=0,a=i>0?n-4:n,f;for(f=0;f<a;f+=4)r=E[e.charCodeAt(f)]<<18|E[e.charCodeAt(f+1)]<<12|E[e.charCodeAt(f+2)]<<6|E[e.charCodeAt(f+3)],o[s++]=r>>16&255,o[s++]=r>>8&255,o[s++]=r&255;return i===2&&(r=E[e.charCodeAt(f)]<<2|E[e.charCodeAt(f+1)]>>4,o[s++]=r&255),i===1&&(r=E[e.charCodeAt(f)]<<10|E[e.charCodeAt(f+1)]<<4|E[e.charCodeAt(f+2)]>>2,o[s++]=r>>8&255,o[s++]=r&255),o}function Ke(e){return P[e>>18&63]+P[e>>12&63]+P[e>>6&63]+P[e&63]}function Xe(e,r,t){for(var n,i=[],o=r;o<t;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(e[o+2]&255),i.push(Ke(n));return i.join("")}function Qe(e){for(var r,t=e.length,n=t%3,i=[],o=16383,s=0,a=t-n;s<a;s+=o)i.push(Xe(e,s,s+o>a?a:s+o));return n===1?(r=e[t-1],i.push(P[r>>2]+P[r<<4&63]+"==")):n===2&&(r=(e[t-2]<<8)+e[t-1],i.push(P[r>>10]+P[r>>4&63]+P[r<<2&63]+"=")),i.join("")}});var ae=B(d=>{"use strict";var Ee=d&&d.__rest||function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)r.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(t[n[i]]=e[n[i]]);return t};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function yt(e){let{definitions:r,nullable:t,metadata:n}=e,i=Ee(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=yt;function Te(e){return"ref"in e}d.isRefForm=Te;function gt(e){return"type"in e}d.isTypeForm=gt;function Pe(e){return"enum"in e}d.isEnumForm=Pe;function Ae(e){return"elements"in e}d.isElementsForm=Ae;function se(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=se;function ke(e){return"values"in e}d.isValuesForm=ke;function Se(e){return"discriminator"in e}d.isDiscriminatorForm=Se;function C(e,r){if(r===void 0&&(r=e),e.definitions!==void 0){if(r!==e)return!1;for(let t of Object.values(e.definitions))if(!C(t,r))return!1}if(Te(e)&&!(e.ref in(r.definitions||{}))||Pe(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(Ae(e))return C(e.elements,r);if(se(e)){for(let t of Object.values(e.properties||{}))if(!C(t,r))return!1;for(let t of Object.values(e.optionalProperties||{}))if(!C(t,r))return!1;for(let t of Object.keys(e.properties||{}))if(t in(e.optionalProperties||{}))return!1}if(ke(e))return C(e.values,r);if(Se(e)){for(let t of Object.values(e.mapping))if(!C(t,r)||!se(t)||t.nullable||e.discriminator in(t.properties||{})||e.discriminator in(t.optionalProperties||{}))return!1}return!0}d.isValidSchema=C;var ht=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],bt=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function U(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let r=e,{definitions:t=void 0,nullable:n=void 0,metadata:i=void 0,ref:o=void 0,type:s=void 0,enum:a=void 0,elements:f=void 0,properties:l=void 0,optionalProperties:u=void 0,additionalProperties:v=void 0,values:A=void 0,discriminator:c=void 0,mapping:k=void 0}=r,Q=Ee(r,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),Ne=[o!==void 0,s!==void 0,a!==void 0,f!==void 0,l!==void 0,u!==void 0,v!==void 0,A!==void 0,c!==void 0,k!==void 0],ee=!1;for(let T of ht)ee=ee||T.every((Be,je)=>Be===Ne[je]);if(!ee)return!1;if(t!==void 0){if(typeof t!="object"||Array.isArray(t)||t===null)return!1;for(let T of Object.values(t))if(!U(T))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||o!==void 0&&typeof o!="string"||s!==void 0&&(typeof s!="string"||!bt.includes(s))||a!==void 0&&(!Array.isArray(a)||!a.every(T=>typeof T=="string"))||f!==void 0&&!U(f))return!1;if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let T of Object.values(l))if(!U(T))return!1}if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let T of Object.values(u))if(!U(T))return!1}if(v!==void 0&&typeof v!="boolean"||A!==void 0&&!U(A)||c!==void 0&&typeof c!="string")return!1;if(k!==void 0){if(typeof k!="object"||Array.isArray(k)||k===null)return!1;for(let T of Object.values(k))if(!U(T))return!1}return Object.keys(Q).length===0}d.isSchema=U});var Oe=B(fe=>{"use strict";Object.defineProperty(fe,"__esModule",{value:!0});var xt=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function wt(e){let r=e.match(xt);if(r===null)return!1;let t=parseInt(r[1],10),n=parseInt(r[2],10),i=parseInt(r[3],10),o=parseInt(r[4],10),s=parseInt(r[5],10),a=parseInt(r[6],10);return!(n>12||i>vt(t,n)||o>23||s>59||a>60)}fe.default=wt;function vt(e,r){return r===2?Et(e)?29:28:Tt[r]}function Et(e){return e%4===0&&(e%100!==0||e%400===0)}var Tt=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var Fe=B(O=>{"use strict";var Pt=O&&O.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(O,"__esModule",{value:!0});O.validate=O.MaxDepthExceededError=void 0;var At=Pt(Oe()),I=ae(),Y=class extends Error{};O.MaxDepthExceededError=Y;var Z=class extends Error{};function kt(e,r,t){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:t||{maxDepth:0,maxErrors:0}};try{L(n,e,r)}catch(i){if(!(i instanceof Z))throw i}return n.errors}O.validate=kt;function L(e,r,t,n){if(!(r.nullable&&t===null)){if(I.isRefForm(r)){if(e.schemaTokens.length===e.config.maxDepth)throw new Y;e.schemaTokens.push(["definitions",r.ref]),L(e,e.root.definitions[r.ref],t),e.schemaTokens.pop()}else if(I.isTypeForm(r)){switch(b(e,"type"),r.type){case"boolean":typeof t!="boolean"&&x(e);break;case"float32":case"float64":typeof t!="number"&&x(e);break;case"int8":D(e,t,-128,127);break;case"uint8":D(e,t,0,255);break;case"int16":D(e,t,-32768,32767);break;case"uint16":D(e,t,0,65535);break;case"int32":D(e,t,-2147483648,2147483647);break;case"uint32":D(e,t,0,4294967295);break;case"string":typeof t!="string"&&x(e);break;case"timestamp":typeof t!="string"?x(e):At.default(t)||x(e);break}w(e)}else if(I.isEnumForm(r))b(e,"enum"),(typeof t!="string"||!r.enum.includes(t))&&x(e),w(e);else if(I.isElementsForm(r)){if(b(e,"elements"),Array.isArray(t))for(let[i,o]of t.entries())R(e,i.toString()),L(e,r.elements,o),_(e);else x(e);w(e)}else if(I.isPropertiesForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(r.properties!==void 0){b(e,"properties");for(let[i,o]of Object.entries(r.properties))b(e,i),t.hasOwnProperty(i)?(R(e,i),L(e,o,t[i]),_(e)):x(e),w(e);w(e)}if(r.optionalProperties!==void 0){b(e,"optionalProperties");for(let[i,o]of Object.entries(r.optionalProperties))b(e,i),t.hasOwnProperty(i)&&(R(e,i),L(e,o,t[i]),_(e)),w(e);w(e)}if(r.additionalProperties!==!0)for(let i of Object.keys(t)){let o=r.properties&&i in r.properties,s=r.optionalProperties&&i in r.optionalProperties;!o&&!s&&i!==n&&(R(e,i),x(e),_(e))}}else r.properties!==void 0?b(e,"properties"):b(e,"optionalProperties"),x(e),w(e);else if(I.isValuesForm(r)){if(b(e,"values"),typeof t=="object"&&t!==null&&!Array.isArray(t))for(let[i,o]of Object.entries(t))R(e,i),L(e,r.values,o),_(e);else x(e);w(e)}else if(I.isDiscriminatorForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t))if(t.hasOwnProperty(r.discriminator)){let i=t[r.discriminator];typeof i=="string"?i in r.mapping?(b(e,"mapping"),b(e,i),L(e,r.mapping[i],t,r.discriminator),w(e),w(e)):(b(e,"mapping"),R(e,r.discriminator),x(e),_(e),w(e)):(b(e,"discriminator"),R(e,r.discriminator),x(e),_(e),w(e))}else b(e,"discriminator"),x(e),w(e);else b(e,"discriminator"),x(e),w(e)}}function D(e,r,t,n){(typeof r!="number"||!Number.isInteger(r)||r<t||r>n)&&x(e)}function R(e,r){e.instanceTokens.push(r)}function _(e){e.instanceTokens.pop()}function b(e,r){e.schemaTokens[e.schemaTokens.length-1].push(r)}function w(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function x(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new Z}});var Ce=B(F=>{"use strict";var St=F&&F.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Me=F&&F.__exportStar||function(e,r){for(var t in e)t!=="default"&&!r.hasOwnProperty(t)&&St(r,e,t)};Object.defineProperty(F,"__esModule",{value:!0});Me(ae(),F);Me(Fe(),F)});var Le=ce(ye());var z,et=new Uint8Array(16);function G(){if(!z&&(z=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!z))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return z(et)}var ge=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function tt(e){return typeof e=="string"&&ge.test(e)}var j=tt;var p=[];for(let e=0;e<256;++e)p.push((e+256).toString(16).slice(1));function $(e,r=0){return(p[e[r+0]]+p[e[r+1]]+p[e[r+2]]+p[e[r+3]]+"-"+p[e[r+4]]+p[e[r+5]]+"-"+p[e[r+6]]+p[e[r+7]]+"-"+p[e[r+8]]+p[e[r+9]]+"-"+p[e[r+10]]+p[e[r+11]]+p[e[r+12]]+p[e[r+13]]+p[e[r+14]]+p[e[r+15]]).toLowerCase()}function rt(e){if(!j(e))throw TypeError("Invalid UUID");let r,t=new Uint8Array(16);return t[0]=(r=parseInt(e.slice(0,8),16))>>>24,t[1]=r>>>16&255,t[2]=r>>>8&255,t[3]=r&255,t[4]=(r=parseInt(e.slice(9,13),16))>>>8,t[5]=r&255,t[6]=(r=parseInt(e.slice(14,18),16))>>>8,t[7]=r&255,t[8]=(r=parseInt(e.slice(19,23),16))>>>8,t[9]=r&255,t[10]=(r=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=r/4294967296&255,t[12]=r>>>24&255,t[13]=r>>>16&255,t[14]=r>>>8&255,t[15]=r&255,t}var re=rt;function nt(e){e=unescape(encodeURIComponent(e));let r=[];for(let t=0;t<e.length;++t)r.push(e.charCodeAt(t));return r}var it="6ba7b810-9dad-11d1-80b4-00c04fd430c8",ot="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function H(e,r,t){function n(i,o,s,a){var f;if(typeof i=="string"&&(i=nt(i)),typeof o=="string"&&(o=re(o)),((f=o)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(o),l.set(i,o.length),l=t(l),l[6]=l[6]&15|r,l[8]=l[8]&63|128,s){a=a||0;for(let u=0;u<16;++u)s[a+u]=l[u];return s}return $(l)}try{n.name=e}catch{}return n.DNS=it,n.URL=ot,n}function st(e){if(typeof e=="string"){let r=unescape(encodeURIComponent(e));e=new Uint8Array(r.length);for(let t=0;t<r.length;++t)e[t]=r.charCodeAt(t)}return at(ft(lt(e),e.length*8))}function at(e){let r=[],t=e.length*32,n="0123456789abcdef";for(let i=0;i<t;i+=8){let o=e[i>>5]>>>i%32&255,s=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);r.push(s)}return r}function he(e){return(e+64>>>9<<4)+14+1}function ft(e,r){e[r>>5]|=128<<r%32,e[he(r)-1]=r;let t=1732584193,n=-271733879,i=-1732584194,o=271733878;for(let s=0;s<e.length;s+=16){let a=t,f=n,l=i,u=o;t=m(t,n,i,o,e[s],7,-680876936),o=m(o,t,n,i,e[s+1],12,-389564586),i=m(i,o,t,n,e[s+2],17,606105819),n=m(n,i,o,t,e[s+3],22,-1044525330),t=m(t,n,i,o,e[s+4],7,-176418897),o=m(o,t,n,i,e[s+5],12,1200080426),i=m(i,o,t,n,e[s+6],17,-1473231341),n=m(n,i,o,t,e[s+7],22,-45705983),t=m(t,n,i,o,e[s+8],7,1770035416),o=m(o,t,n,i,e[s+9],12,-1958414417),i=m(i,o,t,n,e[s+10],17,-42063),n=m(n,i,o,t,e[s+11],22,-1990404162),t=m(t,n,i,o,e[s+12],7,1804603682),o=m(o,t,n,i,e[s+13],12,-40341101),i=m(i,o,t,n,e[s+14],17,-1502002290),n=m(n,i,o,t,e[s+15],22,1236535329),t=y(t,n,i,o,e[s+1],5,-165796510),o=y(o,t,n,i,e[s+6],9,-1069501632),i=y(i,o,t,n,e[s+11],14,643717713),n=y(n,i,o,t,e[s],20,-373897302),t=y(t,n,i,o,e[s+5],5,-701558691),o=y(o,t,n,i,e[s+10],9,38016083),i=y(i,o,t,n,e[s+15],14,-660478335),n=y(n,i,o,t,e[s+4],20,-405537848),t=y(t,n,i,o,e[s+9],5,568446438),o=y(o,t,n,i,e[s+14],9,-1019803690),i=y(i,o,t,n,e[s+3],14,-187363961),n=y(n,i,o,t,e[s+8],20,1163531501),t=y(t,n,i,o,e[s+13],5,-1444681467),o=y(o,t,n,i,e[s+2],9,-51403784),i=y(i,o,t,n,e[s+7],14,1735328473),n=y(n,i,o,t,e[s+12],20,-1926607734),t=g(t,n,i,o,e[s+5],4,-378558),o=g(o,t,n,i,e[s+8],11,-2022574463),i=g(i,o,t,n,e[s+11],16,1839030562),n=g(n,i,o,t,e[s+14],23,-35309556),t=g(t,n,i,o,e[s+1],4,-1530992060),o=g(o,t,n,i,e[s+4],11,1272893353),i=g(i,o,t,n,e[s+7],16,-155497632),n=g(n,i,o,t,e[s+10],23,-1094730640),t=g(t,n,i,o,e[s+13],4,681279174),o=g(o,t,n,i,e[s],11,-358537222),i=g(i,o,t,n,e[s+3],16,-722521979),n=g(n,i,o,t,e[s+6],23,76029189),t=g(t,n,i,o,e[s+9],4,-640364487),o=g(o,t,n,i,e[s+12],11,-421815835),i=g(i,o,t,n,e[s+15],16,530742520),n=g(n,i,o,t,e[s+2],23,-995338651),t=h(t,n,i,o,e[s],6,-198630844),o=h(o,t,n,i,e[s+7],10,1126891415),i=h(i,o,t,n,e[s+14],15,-1416354905),n=h(n,i,o,t,e[s+5],21,-57434055),t=h(t,n,i,o,e[s+12],6,1700485571),o=h(o,t,n,i,e[s+3],10,-1894986606),i=h(i,o,t,n,e[s+10],15,-1051523),n=h(n,i,o,t,e[s+1],21,-2054922799),t=h(t,n,i,o,e[s+8],6,1873313359),o=h(o,t,n,i,e[s+15],10,-30611744),i=h(i,o,t,n,e[s+6],15,-1560198380),n=h(n,i,o,t,e[s+13],21,1309151649),t=h(t,n,i,o,e[s+4],6,-145523070),o=h(o,t,n,i,e[s+11],10,-1120210379),i=h(i,o,t,n,e[s+2],15,718787259),n=h(n,i,o,t,e[s+9],21,-343485551),t=S(t,a),n=S(n,f),i=S(i,l),o=S(o,u)}return[t,n,i,o]}function lt(e){if(e.length===0)return[];let r=e.length*8,t=new Uint32Array(he(r));for(let n=0;n<r;n+=8)t[n>>5]|=(e[n/8]&255)<<n%32;return t}function S(e,r){let t=(e&65535)+(r&65535);return(e>>16)+(r>>16)+(t>>16)<<16|t&65535}function ut(e,r){return e<<r|e>>>32-r}function W(e,r,t,n,i,o){return S(ut(S(S(r,e),S(n,o)),i),t)}function m(e,r,t,n,i,o,s){return W(r&t|~r&n,e,r,i,o,s)}function y(e,r,t,n,i,o,s){return W(r&n|t&~n,e,r,i,o,s)}function g(e,r,t,n,i,o,s){return W(r^t^n,e,r,i,o,s)}function h(e,r,t,n,i,o,s){return W(t^(r|~n),e,r,i,o,s)}var be=st;var or=H("v3",48,be);var dt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ne={randomUUID:dt};function ct(e,r,t){if(ne.randomUUID&&!r&&!e)return ne.randomUUID();e=e||{};let n=e.random||(e.rng||G)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,r){t=t||0;for(let i=0;i<16;++i)r[t+i]=n[i];return r}return $(n)}var J=ct;function pt(e,r,t,n){switch(e){case 0:return r&t^~r&n;case 1:return r^t^n;case 2:return r&t^r&n^t&n;case 3:return r^t^n}}function ie(e,r){return e<<r|e>>>32-r}function mt(e){let r=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){let s=unescape(encodeURIComponent(e));e=[];for(let a=0;a<s.length;++a)e.push(s.charCodeAt(a))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);let n=e.length/4+2,i=Math.ceil(n/16),o=new Array(i);for(let s=0;s<i;++s){let a=new Uint32Array(16);for(let f=0;f<16;++f)a[f]=e[s*64+f*4]<<24|e[s*64+f*4+1]<<16|e[s*64+f*4+2]<<8|e[s*64+f*4+3];o[s]=a}o[i-1][14]=(e.length-1)*8/Math.pow(2,32),o[i-1][14]=Math.floor(o[i-1][14]),o[i-1][15]=(e.length-1)*8&4294967295;for(let s=0;s<i;++s){let a=new Uint32Array(80);for(let c=0;c<16;++c)a[c]=o[s][c];for(let c=16;c<80;++c)a[c]=ie(a[c-3]^a[c-8]^a[c-14]^a[c-16],1);let f=t[0],l=t[1],u=t[2],v=t[3],A=t[4];for(let c=0;c<80;++c){let k=Math.floor(c/20),Q=ie(f,5)+pt(k,l,u,v)+A+r[k]+a[c]>>>0;A=v,v=u,u=ie(l,30)>>>0,l=f,f=Q}t[0]=t[0]+f>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+v>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var xe=mt;var yr=H("v5",80,xe);function oe(e){return[...new Uint8Array(e)].map(r=>r.toString(16).padStart(2,"0")).join("")}function we(e){return new Uint8Array((e.match(/../g)??[]).map(r=>parseInt(r,16)))}function ve(e){let r=0;for(let i of e)r+=i.length;let t=new Uint8Array(r),n=0;for(let i of e)t.set(i,n),n+=i.length;return t}var Ue=ce(Ce());function V(e,r){if((0,Ue.validate)(e,r).length)throw new Error(`couldn't validate schema: ${JSON.stringify(r)} didn't match schema ${JSON.stringify(e)}`)}var Ie="3",De="https://webapp-prod.cloud.remarkable.engineering",Ot="https://internal.cloud.remarkable.com",Re="x-goog-generation",Ft="x-goog-if-generation-match",Mt="x-goog-content-length-range",zr=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],Gr=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],Ct={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},Ut={sm:50,md:125,rr:180,lg:200},It={df:-1,md:100,lg:150,xl:200},Rt={properties:{docID:{type:"string"},hash:{type:"string"}}},_t={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},K={visibleName:{type:"string"},lastModified:{type:"string"}},X={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},Lt={discriminator:"type",mapping:{CollectionType:{properties:K,optionalProperties:X},DocumentType:{properties:K,optionalProperties:{...X,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},_e={id:{type:"string"},hash:{type:"string"}},Dt={discriminator:"type",mapping:{CollectionType:{properties:{...K,..._e},optionalProperties:X},DocumentType:{properties:{...K,..._e,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...X,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},N=class extends Error{constructor(t,n,i){super(i);this.status=t,this.statusText=n}},le=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function Wr(e,{deviceDesc:r="browser-chrome",uuid:t=J(),authHost:n=De,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let o=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:r,deviceID:t})});if(o.ok)return await o.text();throw new N(o.status,o.statusText,"couldn't register api")}function Nt({hash:e,type:r,documentId:t,subfiles:n,size:i}){return`${e}:${r}:${t}:${n}:${i}
2
- `}function Bt(e){let[r,t,n,i,o]=e.split(":");if(r===void 0||t===void 0||n===void 0||i===void 0||o===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(t==="80000000")return{hash:r,type:t,documentId:n,subfiles:parseInt(i),size:BigInt(o)};if(t==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:r,type:t,documentId:n,subfiles:0,size:BigInt(o)}}else throw new Error(`entries line contained invalid type: ${t}`)}var ue=class{#a;#o;#e;#s;#t;constructor(r,t,n,i,o){this.#a=r,this.#o=t,this.#e=n,this.#s=i,this.#t=o}async#i(r,{body:t,method:n="POST",headers:i={}}){let o=await this.#o(r,{method:n,headers:{Authorization:`Bearer ${this.#a}`,...i},body:t});if(o.ok)return o;{let s=await o.text();throw new N(o.status,o.statusText,`failed reMarkable request: ${s}`)}}async#r({url:r,method:t,maxuploadsize_bytes:n},i,o={}){let s=n?{...o,[Mt]:`0,${n}`}:o,a=await this.#o(r,{method:t,body:i,headers:s});if(a.ok)return a;{let f=await a.text();throw new N(a.status,a.statusText,f)}}async#n(r,t,n){let i=t===void 0?"downloads":"uploads",o=n?`{ "http_method": "PUT", "relative_path": "${r}", "root_schema": "${n}", "generation": ${t} }`:JSON.stringify({http_method:"GET",relative_path:r}),a=await(await this.#i(`${this.#t}/sync/v2/signed-urls/${i}`,{body:o})).text(),f=JSON.parse(a);return V(_t,f),f}async getRootHash(){let r=await this.#n("root"),t=await this.#r(r),n=t.headers.get(Re);if(!n)throw new Error("no generation header in root hash");return[await t.text(),BigInt(n)]}async putRootHash(r,t){let n=await this.#n("root",t,r),i;try{i=await this.#r(n,r,{[Ft]:`${t}`})}catch(s){throw s instanceof N&&s.status===412?new le:s}let o=i.headers.get(Re);if(!o)throw new Error("no generation header in root hash");return BigInt(o)}async getBuffer(r){let t=await this.#n(r);return await(await this.#r(t)).arrayBuffer()}async getText(r){let t=await this.#e?.get(r);if(t)return t;{let n=await this.#n(r),o=await(await this.#r(n)).text();return await this.#e?.set(r,o),o}}async getMetadata(r){let t=await this.getText(r),n=JSON.parse(t);return V(Lt,n),n}async getEntries(r){let t=await this.getText(r),[n,...i]=t.slice(0,-1).split(`
3
- `);if(n!==Ie)throw new Error(`got unexpected schema version: ${n}`);return i.map(Bt)}async#f(r,t){let n=await this.#n(r,null);await this.#r(n,t)}async putEntries(r,t){let n=new TextEncoder;t.sort((u,v)=>u.documentId.localeCompare(v.documentId));let i=ve(t.map(u=>we(u.hash))),o=await this.#s.digest("SHA-256",i),s=oe(o),a=t.map(Nt).join(""),f=`${Ie}
4
- ${a}`,l=n.encode(f);return await this.#f(s,l),await this.#e?.set(s,f),{hash:s,type:"80000000",documentId:r,subfiles:t.length,size:0n}}async putBuffer(r,t){let n=await this.#s.digest("SHA-256",t),i=oe(n);return await this.#f(i,t),{hash:i,type:"0",documentId:r,subfiles:0,size:BigInt(t.length)}}async putText(r,t){let n=new TextEncoder,i=await this.putBuffer(r,n.encode(t));return await this.#e?.set(i.hash,t),i}async putMetadata(r,t){return await this.putText(`${r}.metadata`,JSON.stringify(t))}async putCollection(r,t=""){let n=J(),i=`${new Date().valueOf()}`,o=[],s={type:"CollectionType",visibleName:r,version:0,parent:t,synced:!0,lastModified:i};o.push(this.putMetadata(n,s)),o.push(this.putText(`${n}.content`,"{}"));let a=await Promise.all(o);return await this.putEntries(n,a)}async#l(r,t,n,i,o){if(o.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${o.fileType}`);let s=J(),a=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${s}.${n}`,t));let l={type:"DocumentType",visibleName:r,version:0,parent:i,synced:!0,lastModified:a};f.push(this.putMetadata(s,l)),f.push(this.putText(`${s}.content`,JSON.stringify(o)));let u=await Promise.all(f);return await this.putEntries(s,u)}async putEpub(r,t,{parent:n="",margins:i=125,orientation:o,textAlignment:s,textScale:a=1,lineHeight:f=-1,fontName:l="",cover:u="visited",lastTool:v}={}){let A={dummyDocument:!1,extraMetadata:{LastTool:v},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?It[f]:f,margins:typeof i=="string"?Ut[i]:i,textScale:typeof a=="string"?Ct[a]:a,pages:[],coverPageNumber:u==="first"?0:-1,formatVersion:1,orientation:o,textAlignment:s,fontName:l};return await this.#l(r,t,"epub",n,A)}async putPdf(r,t,{parent:n="",orientation:i,cover:o="first",lastTool:s}={}){let a={dummyDocument:!1,extraMetadata:{LastTool:s},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:o==="first"?0:-1,formatVersion:1,orientation:i};return await this.#l(r,t,"pdf",n,a)}async syncComplete(r){let t=`{ "generation": ${r} }`;await this.#i(`${this.#t}/sync/v2/sync-complete`,{body:t})}async getEntriesMetadata(){let t=await(await this.#i(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(t);return V({elements:Dt},n),n}async#u(r,t,n){let o=new TextEncoder().encode(JSON.stringify({file_name:r})),a=await(await this.#i(`${this.#t}/doc/v2/files`,{body:t,headers:{"content-type":n,"rm-meta":(0,Le.fromByteArray)(o),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(a);return V(Rt,f),f}async uploadEpub(r,t){return await this.#u(r,t,"application/epub+zip")}async uploadPdf(r,t){return await this.#u(r,t,"application/pdf")}};async function Yr(e,{fetch:r=globalThis.fetch,cache:t,subtle:n=globalThis.crypto?.subtle,authHost:i=De,syncHost:o=Ot}={}){let s=await r(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`couldn't fetch auth token: ${s.statusText}`);let a=await s.text();return new ue(a,r,t,n,o)}export{le as GenerationError,N as ResponseError,Gr as builtinFontNames,It as builtinLineHeights,Ut as builtinMargins,Ct as builtinTextScales,zr as builtinTools,Nt as formatEntry,Bt as parseEntry,Wr as register,Yr as remarkable};
1
+ var He=Object.create;var ye=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,Ge=Object.prototype.hasOwnProperty;var j=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var ze=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ve(r))!Ge.call(e,i)&&i!==t&&ye(e,i,{get:()=>r[i],enumerable:!(n=Je(r,i))||n.enumerable});return e};var he=(e,r,t)=>(t=e!=null?He(qe(e)):{},ze(r||!e||!e.__esModule?ye(t,"default",{value:e,enumerable:!0}):t,e));var we=j(W=>{"use strict";W.byteLength=Ye;W.toByteArray=Ke;W.fromByteArray=et;var O=[],A=[],We=typeof Uint8Array<"u"?Uint8Array:Array,ie="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(F=0,ge=ie.length;F<ge;++F)O[F]=ie[F],A[ie.charCodeAt(F)]=F;var F,ge;A["-".charCodeAt(0)]=62;A["_".charCodeAt(0)]=63;function be(e){var r=e.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=e.indexOf("=");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function Ye(e){var r=be(e),t=r[0],n=r[1];return(t+n)*3/4-n}function Ze(e,r,t){return(r+t)*3/4-t}function Ke(e){var r,t=be(e),n=t[0],i=t[1],o=new We(Ze(e,n,i)),s=0,a=i>0?n-4:n,f;for(f=0;f<a;f+=4)r=A[e.charCodeAt(f)]<<18|A[e.charCodeAt(f+1)]<<12|A[e.charCodeAt(f+2)]<<6|A[e.charCodeAt(f+3)],o[s++]=r>>16&255,o[s++]=r>>8&255,o[s++]=r&255;return i===2&&(r=A[e.charCodeAt(f)]<<2|A[e.charCodeAt(f+1)]>>4,o[s++]=r&255),i===1&&(r=A[e.charCodeAt(f)]<<10|A[e.charCodeAt(f+1)]<<4|A[e.charCodeAt(f+2)]>>2,o[s++]=r>>8&255,o[s++]=r&255),o}function Xe(e){return O[e>>18&63]+O[e>>12&63]+O[e>>6&63]+O[e&63]}function Qe(e,r,t){for(var n,i=[],o=r;o<t;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(e[o+2]&255),i.push(Xe(n));return i.join("")}function et(e){for(var r,t=e.length,n=t%3,i=[],o=16383,s=0,a=t-n;s<a;s+=o)i.push(Qe(e,s,s+o>a?a:s+o));return n===1?(r=e[t-1],i.push(O[r>>2]+O[r<<4&63]+"==")):n===2&&(r=(e[t-2]<<8)+e[t-1],i.push(O[r>>10]+O[r>>4&63]+O[r<<2&63]+"=")),i.join("")}});var ue=j(d=>{"use strict";var ke=d&&d.__rest||function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)r.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(t[n[i]]=e[n[i]]);return t};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function ht(e){let{definitions:r,nullable:t,metadata:n}=e,i=ke(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=ht;function Oe(e){return"ref"in e}d.isRefForm=Oe;function gt(e){return"type"in e}d.isTypeForm=gt;function Se(e){return"enum"in e}d.isEnumForm=Se;function Ce(e){return"elements"in e}d.isElementsForm=Ce;function le(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=le;function Me(e){return"values"in e}d.isValuesForm=Me;function Fe(e){return"discriminator"in e}d.isDiscriminatorForm=Fe;function U(e,r){if(r===void 0&&(r=e),e.definitions!==void 0){if(r!==e)return!1;for(let t of Object.values(e.definitions))if(!U(t,r))return!1}if(Oe(e)&&!(e.ref in(r.definitions||{}))||Se(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(Ce(e))return U(e.elements,r);if(le(e)){for(let t of Object.values(e.properties||{}))if(!U(t,r))return!1;for(let t of Object.values(e.optionalProperties||{}))if(!U(t,r))return!1;for(let t of Object.keys(e.properties||{}))if(t in(e.optionalProperties||{}))return!1}if(Me(e))return U(e.values,r);if(Fe(e)){for(let t of Object.values(e.mapping))if(!U(t,r)||!le(t)||t.nullable||e.discriminator in(t.properties||{})||e.discriminator in(t.optionalProperties||{}))return!1}return!0}d.isValidSchema=U;var bt=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],wt=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function I(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let r=e,{definitions:t=void 0,nullable:n=void 0,metadata:i=void 0,ref:o=void 0,type:s=void 0,enum:a=void 0,elements:f=void 0,properties:l=void 0,optionalProperties:u=void 0,additionalProperties:p=void 0,values:P=void 0,discriminator:c=void 0,mapping:T=void 0}=r,B=ke(r,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),re=[o!==void 0,s!==void 0,a!==void 0,f!==void 0,l!==void 0,u!==void 0,p!==void 0,P!==void 0,c!==void 0,T!==void 0],k=!1;for(let v of bt)k=k||v.every((z,me)=>z===re[me]);if(!k)return!1;if(t!==void 0){if(typeof t!="object"||Array.isArray(t)||t===null)return!1;for(let v of Object.values(t))if(!I(v))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||o!==void 0&&typeof o!="string"||s!==void 0&&(typeof s!="string"||!wt.includes(s))||a!==void 0&&(!Array.isArray(a)||!a.every(v=>typeof v=="string"))||f!==void 0&&!I(f))return!1;if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let v of Object.values(l))if(!I(v))return!1}if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let v of Object.values(u))if(!I(v))return!1}if(p!==void 0&&typeof p!="boolean"||P!==void 0&&!I(P)||c!==void 0&&typeof c!="string")return!1;if(T!==void 0){if(typeof T!="object"||Array.isArray(T)||T===null)return!1;for(let v of Object.values(T))if(!I(v))return!1}return Object.keys(B).length===0}d.isSchema=I});var Ue=j(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});var xt=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function Et(e){let r=e.match(xt);if(r===null)return!1;let t=parseInt(r[1],10),n=parseInt(r[2],10),i=parseInt(r[3],10),o=parseInt(r[4],10),s=parseInt(r[5],10),a=parseInt(r[6],10);return!(n>12||i>vt(t,n)||o>23||s>59||a>60)}de.default=Et;function vt(e,r){return r===2?Pt(e)?29:28:Tt[r]}function Pt(e){return e%4===0&&(e%100!==0||e%400===0)}var Tt=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var Ie=j(C=>{"use strict";var At=C&&C.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(C,"__esModule",{value:!0});C.validate=C.MaxDepthExceededError=void 0;var kt=At(Ue()),R=ue(),X=class extends Error{};C.MaxDepthExceededError=X;var Q=class extends Error{};function Ot(e,r,t){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:t||{maxDepth:0,maxErrors:0}};try{L(n,e,r)}catch(i){if(!(i instanceof Q))throw i}return n.errors}C.validate=Ot;function L(e,r,t,n){if(!(r.nullable&&t===null)){if(R.isRefForm(r)){if(e.schemaTokens.length===e.config.maxDepth)throw new X;e.schemaTokens.push(["definitions",r.ref]),L(e,e.root.definitions[r.ref],t),e.schemaTokens.pop()}else if(R.isTypeForm(r)){switch(w(e,"type"),r.type){case"boolean":typeof t!="boolean"&&x(e);break;case"float32":case"float64":typeof t!="number"&&x(e);break;case"int8":D(e,t,-128,127);break;case"uint8":D(e,t,0,255);break;case"int16":D(e,t,-32768,32767);break;case"uint16":D(e,t,0,65535);break;case"int32":D(e,t,-2147483648,2147483647);break;case"uint32":D(e,t,0,4294967295);break;case"string":typeof t!="string"&&x(e);break;case"timestamp":typeof t!="string"?x(e):kt.default(t)||x(e);break}E(e)}else if(R.isEnumForm(r))w(e,"enum"),(typeof t!="string"||!r.enum.includes(t))&&x(e),E(e);else if(R.isElementsForm(r)){if(w(e,"elements"),Array.isArray(t))for(let[i,o]of t.entries())_(e,i.toString()),L(e,r.elements,o),$(e);else x(e);E(e)}else if(R.isPropertiesForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(r.properties!==void 0){w(e,"properties");for(let[i,o]of Object.entries(r.properties))w(e,i),t.hasOwnProperty(i)?(_(e,i),L(e,o,t[i]),$(e)):x(e),E(e);E(e)}if(r.optionalProperties!==void 0){w(e,"optionalProperties");for(let[i,o]of Object.entries(r.optionalProperties))w(e,i),t.hasOwnProperty(i)&&(_(e,i),L(e,o,t[i]),$(e)),E(e);E(e)}if(r.additionalProperties!==!0)for(let i of Object.keys(t)){let o=r.properties&&i in r.properties,s=r.optionalProperties&&i in r.optionalProperties;!o&&!s&&i!==n&&(_(e,i),x(e),$(e))}}else r.properties!==void 0?w(e,"properties"):w(e,"optionalProperties"),x(e),E(e);else if(R.isValuesForm(r)){if(w(e,"values"),typeof t=="object"&&t!==null&&!Array.isArray(t))for(let[i,o]of Object.entries(t))_(e,i),L(e,r.values,o),$(e);else x(e);E(e)}else if(R.isDiscriminatorForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t))if(t.hasOwnProperty(r.discriminator)){let i=t[r.discriminator];typeof i=="string"?i in r.mapping?(w(e,"mapping"),w(e,i),L(e,r.mapping[i],t,r.discriminator),E(e),E(e)):(w(e,"mapping"),_(e,r.discriminator),x(e),$(e),E(e)):(w(e,"discriminator"),_(e,r.discriminator),x(e),$(e),E(e))}else w(e,"discriminator"),x(e),E(e);else w(e,"discriminator"),x(e),E(e)}}function D(e,r,t,n){(typeof r!="number"||!Number.isInteger(r)||r<t||r>n)&&x(e)}function _(e,r){e.instanceTokens.push(r)}function $(e){e.instanceTokens.pop()}function w(e,r){e.schemaTokens[e.schemaTokens.length-1].push(r)}function E(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function x(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new Q}});var _e=j(M=>{"use strict";var St=M&&M.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Re=M&&M.__exportStar||function(e,r){for(var t in e)t!=="default"&&!r.hasOwnProperty(t)&&St(r,e,t)};Object.defineProperty(M,"__esModule",{value:!0});Re(ue(),M);Re(Ie(),M)});var Be=he(we());var Y,tt=new Uint8Array(16);function Z(){if(!Y&&(Y=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Y))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Y(tt)}var xe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function rt(e){return typeof e=="string"&&xe.test(e)}var H=rt;var m=[];for(let e=0;e<256;++e)m.push((e+256).toString(16).slice(1));function J(e,r=0){return(m[e[r+0]]+m[e[r+1]]+m[e[r+2]]+m[e[r+3]]+"-"+m[e[r+4]]+m[e[r+5]]+"-"+m[e[r+6]]+m[e[r+7]]+"-"+m[e[r+8]]+m[e[r+9]]+"-"+m[e[r+10]]+m[e[r+11]]+m[e[r+12]]+m[e[r+13]]+m[e[r+14]]+m[e[r+15]]).toLowerCase()}function nt(e){if(!H(e))throw TypeError("Invalid UUID");let r,t=new Uint8Array(16);return t[0]=(r=parseInt(e.slice(0,8),16))>>>24,t[1]=r>>>16&255,t[2]=r>>>8&255,t[3]=r&255,t[4]=(r=parseInt(e.slice(9,13),16))>>>8,t[5]=r&255,t[6]=(r=parseInt(e.slice(14,18),16))>>>8,t[7]=r&255,t[8]=(r=parseInt(e.slice(19,23),16))>>>8,t[9]=r&255,t[10]=(r=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=r/4294967296&255,t[12]=r>>>24&255,t[13]=r>>>16&255,t[14]=r>>>8&255,t[15]=r&255,t}var oe=nt;function it(e){e=unescape(encodeURIComponent(e));let r=[];for(let t=0;t<e.length;++t)r.push(e.charCodeAt(t));return r}var ot="6ba7b810-9dad-11d1-80b4-00c04fd430c8",st="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function V(e,r,t){function n(i,o,s,a){var f;if(typeof i=="string"&&(i=it(i)),typeof o=="string"&&(o=oe(o)),((f=o)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(o),l.set(i,o.length),l=t(l),l[6]=l[6]&15|r,l[8]=l[8]&63|128,s){a=a||0;for(let u=0;u<16;++u)s[a+u]=l[u];return s}return J(l)}try{n.name=e}catch{}return n.DNS=ot,n.URL=st,n}function at(e){if(typeof e=="string"){let r=unescape(encodeURIComponent(e));e=new Uint8Array(r.length);for(let t=0;t<r.length;++t)e[t]=r.charCodeAt(t)}return ft(lt(ut(e),e.length*8))}function ft(e){let r=[],t=e.length*32,n="0123456789abcdef";for(let i=0;i<t;i+=8){let o=e[i>>5]>>>i%32&255,s=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);r.push(s)}return r}function Ee(e){return(e+64>>>9<<4)+14+1}function lt(e,r){e[r>>5]|=128<<r%32,e[Ee(r)-1]=r;let t=1732584193,n=-271733879,i=-1732584194,o=271733878;for(let s=0;s<e.length;s+=16){let a=t,f=n,l=i,u=o;t=y(t,n,i,o,e[s],7,-680876936),o=y(o,t,n,i,e[s+1],12,-389564586),i=y(i,o,t,n,e[s+2],17,606105819),n=y(n,i,o,t,e[s+3],22,-1044525330),t=y(t,n,i,o,e[s+4],7,-176418897),o=y(o,t,n,i,e[s+5],12,1200080426),i=y(i,o,t,n,e[s+6],17,-1473231341),n=y(n,i,o,t,e[s+7],22,-45705983),t=y(t,n,i,o,e[s+8],7,1770035416),o=y(o,t,n,i,e[s+9],12,-1958414417),i=y(i,o,t,n,e[s+10],17,-42063),n=y(n,i,o,t,e[s+11],22,-1990404162),t=y(t,n,i,o,e[s+12],7,1804603682),o=y(o,t,n,i,e[s+13],12,-40341101),i=y(i,o,t,n,e[s+14],17,-1502002290),n=y(n,i,o,t,e[s+15],22,1236535329),t=h(t,n,i,o,e[s+1],5,-165796510),o=h(o,t,n,i,e[s+6],9,-1069501632),i=h(i,o,t,n,e[s+11],14,643717713),n=h(n,i,o,t,e[s],20,-373897302),t=h(t,n,i,o,e[s+5],5,-701558691),o=h(o,t,n,i,e[s+10],9,38016083),i=h(i,o,t,n,e[s+15],14,-660478335),n=h(n,i,o,t,e[s+4],20,-405537848),t=h(t,n,i,o,e[s+9],5,568446438),o=h(o,t,n,i,e[s+14],9,-1019803690),i=h(i,o,t,n,e[s+3],14,-187363961),n=h(n,i,o,t,e[s+8],20,1163531501),t=h(t,n,i,o,e[s+13],5,-1444681467),o=h(o,t,n,i,e[s+2],9,-51403784),i=h(i,o,t,n,e[s+7],14,1735328473),n=h(n,i,o,t,e[s+12],20,-1926607734),t=g(t,n,i,o,e[s+5],4,-378558),o=g(o,t,n,i,e[s+8],11,-2022574463),i=g(i,o,t,n,e[s+11],16,1839030562),n=g(n,i,o,t,e[s+14],23,-35309556),t=g(t,n,i,o,e[s+1],4,-1530992060),o=g(o,t,n,i,e[s+4],11,1272893353),i=g(i,o,t,n,e[s+7],16,-155497632),n=g(n,i,o,t,e[s+10],23,-1094730640),t=g(t,n,i,o,e[s+13],4,681279174),o=g(o,t,n,i,e[s],11,-358537222),i=g(i,o,t,n,e[s+3],16,-722521979),n=g(n,i,o,t,e[s+6],23,76029189),t=g(t,n,i,o,e[s+9],4,-640364487),o=g(o,t,n,i,e[s+12],11,-421815835),i=g(i,o,t,n,e[s+15],16,530742520),n=g(n,i,o,t,e[s+2],23,-995338651),t=b(t,n,i,o,e[s],6,-198630844),o=b(o,t,n,i,e[s+7],10,1126891415),i=b(i,o,t,n,e[s+14],15,-1416354905),n=b(n,i,o,t,e[s+5],21,-57434055),t=b(t,n,i,o,e[s+12],6,1700485571),o=b(o,t,n,i,e[s+3],10,-1894986606),i=b(i,o,t,n,e[s+10],15,-1051523),n=b(n,i,o,t,e[s+1],21,-2054922799),t=b(t,n,i,o,e[s+8],6,1873313359),o=b(o,t,n,i,e[s+15],10,-30611744),i=b(i,o,t,n,e[s+6],15,-1560198380),n=b(n,i,o,t,e[s+13],21,1309151649),t=b(t,n,i,o,e[s+4],6,-145523070),o=b(o,t,n,i,e[s+11],10,-1120210379),i=b(i,o,t,n,e[s+2],15,718787259),n=b(n,i,o,t,e[s+9],21,-343485551),t=S(t,a),n=S(n,f),i=S(i,l),o=S(o,u)}return[t,n,i,o]}function ut(e){if(e.length===0)return[];let r=e.length*8,t=new Uint32Array(Ee(r));for(let n=0;n<r;n+=8)t[n>>5]|=(e[n/8]&255)<<n%32;return t}function S(e,r){let t=(e&65535)+(r&65535);return(e>>16)+(r>>16)+(t>>16)<<16|t&65535}function dt(e,r){return e<<r|e>>>32-r}function K(e,r,t,n,i,o){return S(dt(S(S(r,e),S(n,o)),i),t)}function y(e,r,t,n,i,o,s){return K(r&t|~r&n,e,r,i,o,s)}function h(e,r,t,n,i,o,s){return K(r&n|t&~n,e,r,i,o,s)}function g(e,r,t,n,i,o,s){return K(r^t^n,e,r,i,o,s)}function b(e,r,t,n,i,o,s){return K(t^(r|~n),e,r,i,o,s)}var ve=at;var sr=V("v3",48,ve);var ct=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),se={randomUUID:ct};function pt(e,r,t){if(se.randomUUID&&!r&&!e)return se.randomUUID();e=e||{};let n=e.random||(e.rng||Z)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,r){t=t||0;for(let i=0;i<16;++i)r[t+i]=n[i];return r}return J(n)}var q=pt;function mt(e,r,t,n){switch(e){case 0:return r&t^~r&n;case 1:return r^t^n;case 2:return r&t^r&n^t&n;case 3:return r^t^n}}function ae(e,r){return e<<r|e>>>32-r}function yt(e){let r=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){let s=unescape(encodeURIComponent(e));e=[];for(let a=0;a<s.length;++a)e.push(s.charCodeAt(a))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);let n=e.length/4+2,i=Math.ceil(n/16),o=new Array(i);for(let s=0;s<i;++s){let a=new Uint32Array(16);for(let f=0;f<16;++f)a[f]=e[s*64+f*4]<<24|e[s*64+f*4+1]<<16|e[s*64+f*4+2]<<8|e[s*64+f*4+3];o[s]=a}o[i-1][14]=(e.length-1)*8/Math.pow(2,32),o[i-1][14]=Math.floor(o[i-1][14]),o[i-1][15]=(e.length-1)*8&4294967295;for(let s=0;s<i;++s){let a=new Uint32Array(80);for(let c=0;c<16;++c)a[c]=o[s][c];for(let c=16;c<80;++c)a[c]=ae(a[c-3]^a[c-8]^a[c-14]^a[c-16],1);let f=t[0],l=t[1],u=t[2],p=t[3],P=t[4];for(let c=0;c<80;++c){let T=Math.floor(c/20),B=ae(f,5)+mt(T,l,u,p)+P+r[T]+a[c]>>>0;P=p,p=u,u=ae(l,30)>>>0,l=f,f=B}t[0]=t[0]+f>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+p>>>0,t[4]=t[4]+P>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var Pe=yt;var hr=V("v5",80,Pe);function fe(e){return[...new Uint8Array(e)].map(r=>r.toString(16).padStart(2,"0")).join("")}function Te(e){return new Uint8Array((e.match(/../g)??[]).map(r=>parseInt(r,16)))}function Ae(e){let r=0;for(let i of e)r+=i.length;let t=new Uint8Array(r),n=0;for(let i of e)t.set(i,n),n+=i.length;return t}var $e=he(_e());function G(e,r){if((0,$e.validate)(e,r).length)throw new Error(`couldn't validate schema: ${JSON.stringify(r)} didn't match schema ${JSON.stringify(e)}`)}var Le="3",je="https://webapp-prod.cloud.remarkable.engineering",Ct="https://internal.cloud.remarkable.com",De="x-goog-generation",Mt="x-goog-if-generation-match",Ft="x-goog-content-length-range",zr=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],Wr=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],Ut={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},It={sm:50,md:125,rr:180,lg:200},Rt={df:-1,md:100,lg:150,xl:200},_t={properties:{docID:{type:"string"},hash:{type:"string"}}},$t={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},ee={visibleName:{type:"string"},lastModified:{type:"string"}},te={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},Lt={discriminator:"type",mapping:{CollectionType:{properties:ee,optionalProperties:te},DocumentType:{properties:ee,optionalProperties:{...te,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},Ne={id:{type:"string"},hash:{type:"string"}},Dt={discriminator:"type",mapping:{CollectionType:{properties:{...ee,...Ne},optionalProperties:te},DocumentType:{properties:{...ee,...Ne,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...te,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},N=class extends Error{constructor(t,n,i){super(i);this.status=t,this.statusText=n}},ce=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function Yr(e,{deviceDesc:r="browser-chrome",uuid:t=q(),authHost:n=je,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let o=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:r,deviceID:t})});if(o.ok)return await o.text();throw new N(o.status,o.statusText,"couldn't register api")}function Nt({hash:e,type:r,documentId:t,subfiles:n,size:i}){return`${e}:${r}:${t}:${n}:${i}
2
+ `}function Bt(e){let[r,t,n,i,o]=e.split(":");if(r===void 0||t===void 0||n===void 0||i===void 0||o===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(t==="80000000")return{hash:r,type:t,documentId:n,subfiles:parseInt(i),size:BigInt(o)};if(t==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:r,type:t,documentId:n,subfiles:0,size:BigInt(o)}}else throw new Error(`entries line contained invalid type: ${t}`)}var pe=class{#f;#s;#a;#t;#r;#e=null;constructor(r,t,n,i,o){this.#f=r,this.#s=t,this.#r=n,this.#a=i,this.#t=o}async#o(r,{body:t,method:n="POST",headers:i={}}){let o=await this.#s(r,{method:n,headers:{Authorization:`Bearer ${this.#f}`,...i},body:t});if(o.ok)return o;{let s=await o.text();throw new N(o.status,o.statusText,`failed reMarkable request: ${s}`)}}async#n({url:r,method:t,maxuploadsize_bytes:n},i,o={}){let s=n?{...o,[Ft]:`0,${n}`}:o,a=await this.#s(r,{method:t,body:i,headers:s});if(a.ok)return a;{let f=await a.text();throw new N(a.status,a.statusText,f)}}async#i(r,t,n){let i=t===void 0?"downloads":"uploads",o=n?`{ "http_method": "PUT", "relative_path": "${r}", "root_schema": "${n}", "generation": ${t} }`:JSON.stringify({http_method:"GET",relative_path:r}),a=await(await this.#o(`${this.#t}/sync/v2/signed-urls/${i}`,{body:o})).text(),f=JSON.parse(a);return G($t,f),f}async getRootHash({cache:r=!0}={}){if(r)for(;this.#e;)try{let[o,s]=await this.#e;return[o,s]}catch{}let t=(async()=>{try{let o=await this.#i("root"),s=await this.#n(o),a=s.headers.get(De);if(a)return[await s.text(),BigInt(a)];throw new Error("no generation header in root hash")}catch(o){throw this.#e=null,o}})();this.#e=t;let[n,i]=await t;return[n,i]}async putRootHash(r,t){let n=await this.#i("root",t,r),i;try{i=await this.#n(n,r,{[Mt]:`${t}`})}catch(a){throw a instanceof N&&a.status===412?(this.#e=null,new ce):a}let o=i.headers.get(De);if(!o)throw new Error("no generation header in root hash");let s=BigInt(o);return this.#e=Promise.resolve([r,s]),s}async getBuffer(r){let t=await this.#i(r);return await(await this.#n(t)).arrayBuffer()}async getText(r){let t=await this.#r?.get(r);if(t)return t;{let n=await this.#i(r),o=await(await this.#n(n)).text();return await this.#r?.set(r,o),o}}async getMetadata(r){let t=await this.getText(r),n=JSON.parse(t);return G(Lt,n),n}async getEntries(r){let t=await this.getText(r),[n,...i]=t.slice(0,-1).split(`
3
+ `);if(n!==Le)throw new Error(`got unexpected schema version: ${n}`);return i.map(Bt)}async#l(r,t){let n=await this.#i(r,null);await this.#n(n,t)}async putEntries(r,t){let n=new TextEncoder;t.sort((u,p)=>u.documentId.localeCompare(p.documentId));let i=Ae(t.map(u=>Te(u.hash))),o=await this.#a.digest("SHA-256",i),s=fe(o),a=t.map(Nt).join(""),f=`${Le}
4
+ ${a}`,l=n.encode(f);return await this.#l(s,l),await this.#r?.set(s,f),{hash:s,type:"80000000",documentId:r,subfiles:t.length,size:0n}}async putBuffer(r,t){let n=await this.#a.digest("SHA-256",t),i=fe(n);return await this.#l(i,t),{hash:i,type:"0",documentId:r,subfiles:0,size:BigInt(t.length)}}async putText(r,t){let n=new TextEncoder,i=await this.putBuffer(r,n.encode(t));return await this.#r?.set(i.hash,t),i}async putMetadata(r,t){return await this.putText(`${r}.metadata`,JSON.stringify(t))}async putCollection(r,t=""){let n=q(),i=`${new Date().valueOf()}`,o=[],s={type:"CollectionType",visibleName:r,version:0,parent:t,synced:!0,lastModified:i};o.push(this.putMetadata(n,s)),o.push(this.putText(`${n}.content`,"{}"));let a=await Promise.all(o);return await this.putEntries(n,a)}async#u(r,t,n,i,o){if(o.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${o.fileType}`);let s=q(),a=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${s}.${n}`,t));let l={type:"DocumentType",visibleName:r,version:0,parent:i,synced:!0,lastModified:a};f.push(this.putMetadata(s,l)),f.push(this.putText(`${s}.content`,JSON.stringify(o)));let u=await Promise.all(f);return await this.putEntries(s,u)}async putEpub(r,t,{parent:n="",margins:i=125,orientation:o,textAlignment:s,textScale:a=1,lineHeight:f=-1,fontName:l="",cover:u="visited",lastTool:p}={}){let P={dummyDocument:!1,extraMetadata:{LastTool:p},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?Rt[f]:f,margins:typeof i=="string"?It[i]:i,textScale:typeof a=="string"?Ut[a]:a,pages:[],coverPageNumber:u==="first"?0:-1,formatVersion:1,orientation:o,textAlignment:s,fontName:l};return await this.#u(r,t,"epub",n,P)}async putPdf(r,t,{parent:n="",orientation:i,cover:o="first",lastTool:s}={}){let a={dummyDocument:!1,extraMetadata:{LastTool:s},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:o==="first"?0:-1,formatVersion:1,orientation:i};return await this.#u(r,t,"pdf",n,a)}async syncComplete(r){let t=`{ "generation": ${r} }`;await this.#o(`${this.#t}/sync/v2/sync-complete`,{body:t})}async#d(r,t,n){let{hash:i}=await this.putEntries("",t),o=await this.putRootHash(i,r);if(n)try{return await this.syncComplete(o),!0}catch{return!1}else return!1}async create(r,t={}){let{cache:n=!0,sync:i=!0}=typeof t=="boolean"?{cache:!1,sync:t}:t,[o,s]=await this.getRootHash({cache:n}),a=await this.getEntries(o);return a.push(r),await this.#d(s,a,i)}async move(r,t,n={}){let{cache:i=!0,sync:o=!0}=typeof n=="boolean"?{cache:!1,sync:n}:n,[s,a]=await this.getRootHash({cache:i}),f=await this.getEntries(s);if(!(!t||t==="trash")){let k=f.find(ne=>ne.documentId===t);if(k){if(k.type!=="80000000")throw new Error(`destination id was a raw file: ${t}`)}else throw new Error(`destination id not found: ${t}`);let v=await this.getEntries(k.hash),[z]=v.filter(ne=>ne.documentId===`${t}.metadata`);if(!z)throw new Error(`destination id didn't have metadata: ${t}`);if((await this.getMetadata(z.hash)).type!=="CollectionType")throw new Error(`destination id wasn't a collection: ${t}`)}let l=f.findIndex(k=>k.documentId===r);if(l===-1)throw new Error(`document not found: ${r}`);let[u]=f.splice(l,1);if(u.type!=="80000000")throw new Error(`document was a raw file: ${r}`);let p=await this.getEntries(u.hash),P=p.findIndex(k=>k.documentId===`${r}.metadata`);if(P===-1)throw new Error(`document didn't have metadata: ${r}`);let[c]=p.splice(P,1),T=await this.getMetadata(c.hash);T.parent=t;let B=await this.putMetadata(r,T);p.push(B);let re=await this.putEntries(r,p);return f.push(re),await this.#d(a,f,o)}async getEntriesMetadata(){let t=await(await this.#o(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(t);return G({elements:Dt},n),n}async#c(r,t,n){let o=new TextEncoder().encode(JSON.stringify({file_name:r})),a=await(await this.#o(`${this.#t}/doc/v2/files`,{body:t,headers:{"content-type":n,"rm-meta":(0,Be.fromByteArray)(o),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(a);return G(_t,f),f}async uploadEpub(r,t){return await this.#c(r,t,"application/epub+zip")}async uploadPdf(r,t){return await this.#c(r,t,"application/pdf")}};async function Zr(e,{fetch:r=globalThis.fetch,cache:t,subtle:n=globalThis.crypto?.subtle,authHost:i=je,syncHost:o=Ct}={}){let s=await r(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`couldn't fetch auth token: ${s.statusText}`);let a=await s.text();return new pe(a,r,t,n,o)}export{ce as GenerationError,N as ResponseError,Wr as builtinFontNames,Rt as builtinLineHeights,It as builtinMargins,Ut as builtinTextScales,zr as builtinTools,Nt as formatEntry,Bt as parseEntry,Yr as register,Zr as remarkable};
@@ -1,4 +1,4 @@
1
- var rmapi=(()=>{var Ge=Object.create;var q=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var B=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Xe=(e,r)=>{for(var t in r)q(e,t,{get:r[t],enumerable:!0})},ce=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ye(r))!Ke.call(e,i)&&i!==t&&q(e,i,{get:()=>r[i],enumerable:!(n=We(r,i))||n.enumerable});return e};var pe=(e,r,t)=>(t=e!=null?Ge(Ze(e)):{},ce(r||!e||!e.__esModule?q(t,"default",{value:e,enumerable:!0}):t,e)),Qe=e=>ce(q({},"__esModule",{value:!0}),e);var ge=B(z=>{"use strict";z.byteLength=tt;z.toByteArray=nt;z.fromByteArray=st;var P=[],E=[],et=typeof Uint8Array<"u"?Uint8Array:Array,ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(M=0,me=ne.length;M<me;++M)P[M]=ne[M],E[ne.charCodeAt(M)]=M;var M,me;E["-".charCodeAt(0)]=62;E["_".charCodeAt(0)]=63;function ye(e){var r=e.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=e.indexOf("=");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function tt(e){var r=ye(e),t=r[0],n=r[1];return(t+n)*3/4-n}function rt(e,r,t){return(r+t)*3/4-t}function nt(e){var r,t=ye(e),n=t[0],i=t[1],o=new et(rt(e,n,i)),s=0,a=i>0?n-4:n,f;for(f=0;f<a;f+=4)r=E[e.charCodeAt(f)]<<18|E[e.charCodeAt(f+1)]<<12|E[e.charCodeAt(f+2)]<<6|E[e.charCodeAt(f+3)],o[s++]=r>>16&255,o[s++]=r>>8&255,o[s++]=r&255;return i===2&&(r=E[e.charCodeAt(f)]<<2|E[e.charCodeAt(f+1)]>>4,o[s++]=r&255),i===1&&(r=E[e.charCodeAt(f)]<<10|E[e.charCodeAt(f+1)]<<4|E[e.charCodeAt(f+2)]>>2,o[s++]=r>>8&255,o[s++]=r&255),o}function it(e){return P[e>>18&63]+P[e>>12&63]+P[e>>6&63]+P[e&63]}function ot(e,r,t){for(var n,i=[],o=r;o<t;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(e[o+2]&255),i.push(it(n));return i.join("")}function st(e){for(var r,t=e.length,n=t%3,i=[],o=16383,s=0,a=t-n;s<a;s+=o)i.push(ot(e,s,s+o>a?a:s+o));return n===1?(r=e[t-1],i.push(P[r>>2]+P[r<<4&63]+"==")):n===2&&(r=(e[t-2]<<8)+e[t-1],i.push(P[r>>10]+P[r>>4&63]+P[r<<2&63]+"=")),i.join("")}});var le=B(d=>{"use strict";var Te=d&&d.__rest||function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)r.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(t[n[i]]=e[n[i]]);return t};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function Et(e){let{definitions:r,nullable:t,metadata:n}=e,i=Te(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=Et;function Pe(e){return"ref"in e}d.isRefForm=Pe;function Tt(e){return"type"in e}d.isTypeForm=Tt;function Ae(e){return"enum"in e}d.isEnumForm=Ae;function ke(e){return"elements"in e}d.isElementsForm=ke;function fe(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=fe;function Se(e){return"values"in e}d.isValuesForm=Se;function Oe(e){return"discriminator"in e}d.isDiscriminatorForm=Oe;function C(e,r){if(r===void 0&&(r=e),e.definitions!==void 0){if(r!==e)return!1;for(let t of Object.values(e.definitions))if(!C(t,r))return!1}if(Pe(e)&&!(e.ref in(r.definitions||{}))||Ae(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(ke(e))return C(e.elements,r);if(fe(e)){for(let t of Object.values(e.properties||{}))if(!C(t,r))return!1;for(let t of Object.values(e.optionalProperties||{}))if(!C(t,r))return!1;for(let t of Object.keys(e.properties||{}))if(t in(e.optionalProperties||{}))return!1}if(Se(e))return C(e.values,r);if(Oe(e)){for(let t of Object.values(e.mapping))if(!C(t,r)||!fe(t)||t.nullable||e.discriminator in(t.properties||{})||e.discriminator in(t.optionalProperties||{}))return!1}return!0}d.isValidSchema=C;var Pt=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],At=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function U(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let r=e,{definitions:t=void 0,nullable:n=void 0,metadata:i=void 0,ref:o=void 0,type:s=void 0,enum:a=void 0,elements:f=void 0,properties:l=void 0,optionalProperties:u=void 0,additionalProperties:v=void 0,values:A=void 0,discriminator:c=void 0,mapping:k=void 0}=r,te=Te(r,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),Ve=[o!==void 0,s!==void 0,a!==void 0,f!==void 0,l!==void 0,u!==void 0,v!==void 0,A!==void 0,c!==void 0,k!==void 0],re=!1;for(let T of Pt)re=re||T.every((qe,ze)=>qe===Ve[ze]);if(!re)return!1;if(t!==void 0){if(typeof t!="object"||Array.isArray(t)||t===null)return!1;for(let T of Object.values(t))if(!U(T))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||o!==void 0&&typeof o!="string"||s!==void 0&&(typeof s!="string"||!At.includes(s))||a!==void 0&&(!Array.isArray(a)||!a.every(T=>typeof T=="string"))||f!==void 0&&!U(f))return!1;if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let T of Object.values(l))if(!U(T))return!1}if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let T of Object.values(u))if(!U(T))return!1}if(v!==void 0&&typeof v!="boolean"||A!==void 0&&!U(A)||c!==void 0&&typeof c!="string")return!1;if(k!==void 0){if(typeof k!="object"||Array.isArray(k)||k===null)return!1;for(let T of Object.values(k))if(!U(T))return!1}return Object.keys(te).length===0}d.isSchema=U});var Fe=B(ue=>{"use strict";Object.defineProperty(ue,"__esModule",{value:!0});var kt=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function St(e){let r=e.match(kt);if(r===null)return!1;let t=parseInt(r[1],10),n=parseInt(r[2],10),i=parseInt(r[3],10),o=parseInt(r[4],10),s=parseInt(r[5],10),a=parseInt(r[6],10);return!(n>12||i>Ot(t,n)||o>23||s>59||a>60)}ue.default=St;function Ot(e,r){return r===2?Ft(e)?29:28:Mt[r]}function Ft(e){return e%4===0&&(e%100!==0||e%400===0)}var Mt=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var Me=B(O=>{"use strict";var Ct=O&&O.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(O,"__esModule",{value:!0});O.validate=O.MaxDepthExceededError=void 0;var Ut=Ct(Fe()),I=le(),Z=class extends Error{};O.MaxDepthExceededError=Z;var K=class extends Error{};function It(e,r,t){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:t||{maxDepth:0,maxErrors:0}};try{L(n,e,r)}catch(i){if(!(i instanceof K))throw i}return n.errors}O.validate=It;function L(e,r,t,n){if(!(r.nullable&&t===null)){if(I.isRefForm(r)){if(e.schemaTokens.length===e.config.maxDepth)throw new Z;e.schemaTokens.push(["definitions",r.ref]),L(e,e.root.definitions[r.ref],t),e.schemaTokens.pop()}else if(I.isTypeForm(r)){switch(b(e,"type"),r.type){case"boolean":typeof t!="boolean"&&x(e);break;case"float32":case"float64":typeof t!="number"&&x(e);break;case"int8":N(e,t,-128,127);break;case"uint8":N(e,t,0,255);break;case"int16":N(e,t,-32768,32767);break;case"uint16":N(e,t,0,65535);break;case"int32":N(e,t,-2147483648,2147483647);break;case"uint32":N(e,t,0,4294967295);break;case"string":typeof t!="string"&&x(e);break;case"timestamp":typeof t!="string"?x(e):Ut.default(t)||x(e);break}w(e)}else if(I.isEnumForm(r))b(e,"enum"),(typeof t!="string"||!r.enum.includes(t))&&x(e),w(e);else if(I.isElementsForm(r)){if(b(e,"elements"),Array.isArray(t))for(let[i,o]of t.entries())R(e,i.toString()),L(e,r.elements,o),_(e);else x(e);w(e)}else if(I.isPropertiesForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(r.properties!==void 0){b(e,"properties");for(let[i,o]of Object.entries(r.properties))b(e,i),t.hasOwnProperty(i)?(R(e,i),L(e,o,t[i]),_(e)):x(e),w(e);w(e)}if(r.optionalProperties!==void 0){b(e,"optionalProperties");for(let[i,o]of Object.entries(r.optionalProperties))b(e,i),t.hasOwnProperty(i)&&(R(e,i),L(e,o,t[i]),_(e)),w(e);w(e)}if(r.additionalProperties!==!0)for(let i of Object.keys(t)){let o=r.properties&&i in r.properties,s=r.optionalProperties&&i in r.optionalProperties;!o&&!s&&i!==n&&(R(e,i),x(e),_(e))}}else r.properties!==void 0?b(e,"properties"):b(e,"optionalProperties"),x(e),w(e);else if(I.isValuesForm(r)){if(b(e,"values"),typeof t=="object"&&t!==null&&!Array.isArray(t))for(let[i,o]of Object.entries(t))R(e,i),L(e,r.values,o),_(e);else x(e);w(e)}else if(I.isDiscriminatorForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t))if(t.hasOwnProperty(r.discriminator)){let i=t[r.discriminator];typeof i=="string"?i in r.mapping?(b(e,"mapping"),b(e,i),L(e,r.mapping[i],t,r.discriminator),w(e),w(e)):(b(e,"mapping"),R(e,r.discriminator),x(e),_(e),w(e)):(b(e,"discriminator"),R(e,r.discriminator),x(e),_(e),w(e))}else b(e,"discriminator"),x(e),w(e);else b(e,"discriminator"),x(e),w(e)}}function N(e,r,t,n){(typeof r!="number"||!Number.isInteger(r)||r<t||r>n)&&x(e)}function R(e,r){e.instanceTokens.push(r)}function _(e){e.instanceTokens.pop()}function b(e,r){e.schemaTokens[e.schemaTokens.length-1].push(r)}function w(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function x(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new K}});var Ue=B(F=>{"use strict";var Rt=F&&F.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ce=F&&F.__exportStar||function(e,r){for(var t in e)t!=="default"&&!r.hasOwnProperty(t)&&Rt(r,e,t)};Object.defineProperty(F,"__esModule",{value:!0});Ce(le(),F);Ce(Me(),F)});var zt={};Xe(zt,{GenerationError:()=>ee,ResponseError:()=>D,builtinFontNames:()=>Bt,builtinLineHeights:()=>$e,builtinMargins:()=>je,builtinTextScales:()=>Be,builtinTools:()=>Nt,formatEntry:()=>He,parseEntry:()=>Je,register:()=>Vt,remarkable:()=>qt});var De=pe(ge());var G,at=new Uint8Array(16);function W(){if(!G&&(G=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!G))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return G(at)}var he=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ft(e){return typeof e=="string"&&he.test(e)}var j=ft;var p=[];for(let e=0;e<256;++e)p.push((e+256).toString(16).slice(1));function $(e,r=0){return(p[e[r+0]]+p[e[r+1]]+p[e[r+2]]+p[e[r+3]]+"-"+p[e[r+4]]+p[e[r+5]]+"-"+p[e[r+6]]+p[e[r+7]]+"-"+p[e[r+8]]+p[e[r+9]]+"-"+p[e[r+10]]+p[e[r+11]]+p[e[r+12]]+p[e[r+13]]+p[e[r+14]]+p[e[r+15]]).toLowerCase()}function lt(e){if(!j(e))throw TypeError("Invalid UUID");let r,t=new Uint8Array(16);return t[0]=(r=parseInt(e.slice(0,8),16))>>>24,t[1]=r>>>16&255,t[2]=r>>>8&255,t[3]=r&255,t[4]=(r=parseInt(e.slice(9,13),16))>>>8,t[5]=r&255,t[6]=(r=parseInt(e.slice(14,18),16))>>>8,t[7]=r&255,t[8]=(r=parseInt(e.slice(19,23),16))>>>8,t[9]=r&255,t[10]=(r=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=r/4294967296&255,t[12]=r>>>24&255,t[13]=r>>>16&255,t[14]=r>>>8&255,t[15]=r&255,t}var ie=lt;function ut(e){e=unescape(encodeURIComponent(e));let r=[];for(let t=0;t<e.length;++t)r.push(e.charCodeAt(t));return r}var dt="6ba7b810-9dad-11d1-80b4-00c04fd430c8",ct="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function H(e,r,t){function n(i,o,s,a){var f;if(typeof i=="string"&&(i=ut(i)),typeof o=="string"&&(o=ie(o)),((f=o)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(o),l.set(i,o.length),l=t(l),l[6]=l[6]&15|r,l[8]=l[8]&63|128,s){a=a||0;for(let u=0;u<16;++u)s[a+u]=l[u];return s}return $(l)}try{n.name=e}catch{}return n.DNS=dt,n.URL=ct,n}function pt(e){if(typeof e=="string"){let r=unescape(encodeURIComponent(e));e=new Uint8Array(r.length);for(let t=0;t<r.length;++t)e[t]=r.charCodeAt(t)}return mt(yt(gt(e),e.length*8))}function mt(e){let r=[],t=e.length*32,n="0123456789abcdef";for(let i=0;i<t;i+=8){let o=e[i>>5]>>>i%32&255,s=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);r.push(s)}return r}function be(e){return(e+64>>>9<<4)+14+1}function yt(e,r){e[r>>5]|=128<<r%32,e[be(r)-1]=r;let t=1732584193,n=-271733879,i=-1732584194,o=271733878;for(let s=0;s<e.length;s+=16){let a=t,f=n,l=i,u=o;t=m(t,n,i,o,e[s],7,-680876936),o=m(o,t,n,i,e[s+1],12,-389564586),i=m(i,o,t,n,e[s+2],17,606105819),n=m(n,i,o,t,e[s+3],22,-1044525330),t=m(t,n,i,o,e[s+4],7,-176418897),o=m(o,t,n,i,e[s+5],12,1200080426),i=m(i,o,t,n,e[s+6],17,-1473231341),n=m(n,i,o,t,e[s+7],22,-45705983),t=m(t,n,i,o,e[s+8],7,1770035416),o=m(o,t,n,i,e[s+9],12,-1958414417),i=m(i,o,t,n,e[s+10],17,-42063),n=m(n,i,o,t,e[s+11],22,-1990404162),t=m(t,n,i,o,e[s+12],7,1804603682),o=m(o,t,n,i,e[s+13],12,-40341101),i=m(i,o,t,n,e[s+14],17,-1502002290),n=m(n,i,o,t,e[s+15],22,1236535329),t=y(t,n,i,o,e[s+1],5,-165796510),o=y(o,t,n,i,e[s+6],9,-1069501632),i=y(i,o,t,n,e[s+11],14,643717713),n=y(n,i,o,t,e[s],20,-373897302),t=y(t,n,i,o,e[s+5],5,-701558691),o=y(o,t,n,i,e[s+10],9,38016083),i=y(i,o,t,n,e[s+15],14,-660478335),n=y(n,i,o,t,e[s+4],20,-405537848),t=y(t,n,i,o,e[s+9],5,568446438),o=y(o,t,n,i,e[s+14],9,-1019803690),i=y(i,o,t,n,e[s+3],14,-187363961),n=y(n,i,o,t,e[s+8],20,1163531501),t=y(t,n,i,o,e[s+13],5,-1444681467),o=y(o,t,n,i,e[s+2],9,-51403784),i=y(i,o,t,n,e[s+7],14,1735328473),n=y(n,i,o,t,e[s+12],20,-1926607734),t=g(t,n,i,o,e[s+5],4,-378558),o=g(o,t,n,i,e[s+8],11,-2022574463),i=g(i,o,t,n,e[s+11],16,1839030562),n=g(n,i,o,t,e[s+14],23,-35309556),t=g(t,n,i,o,e[s+1],4,-1530992060),o=g(o,t,n,i,e[s+4],11,1272893353),i=g(i,o,t,n,e[s+7],16,-155497632),n=g(n,i,o,t,e[s+10],23,-1094730640),t=g(t,n,i,o,e[s+13],4,681279174),o=g(o,t,n,i,e[s],11,-358537222),i=g(i,o,t,n,e[s+3],16,-722521979),n=g(n,i,o,t,e[s+6],23,76029189),t=g(t,n,i,o,e[s+9],4,-640364487),o=g(o,t,n,i,e[s+12],11,-421815835),i=g(i,o,t,n,e[s+15],16,530742520),n=g(n,i,o,t,e[s+2],23,-995338651),t=h(t,n,i,o,e[s],6,-198630844),o=h(o,t,n,i,e[s+7],10,1126891415),i=h(i,o,t,n,e[s+14],15,-1416354905),n=h(n,i,o,t,e[s+5],21,-57434055),t=h(t,n,i,o,e[s+12],6,1700485571),o=h(o,t,n,i,e[s+3],10,-1894986606),i=h(i,o,t,n,e[s+10],15,-1051523),n=h(n,i,o,t,e[s+1],21,-2054922799),t=h(t,n,i,o,e[s+8],6,1873313359),o=h(o,t,n,i,e[s+15],10,-30611744),i=h(i,o,t,n,e[s+6],15,-1560198380),n=h(n,i,o,t,e[s+13],21,1309151649),t=h(t,n,i,o,e[s+4],6,-145523070),o=h(o,t,n,i,e[s+11],10,-1120210379),i=h(i,o,t,n,e[s+2],15,718787259),n=h(n,i,o,t,e[s+9],21,-343485551),t=S(t,a),n=S(n,f),i=S(i,l),o=S(o,u)}return[t,n,i,o]}function gt(e){if(e.length===0)return[];let r=e.length*8,t=new Uint32Array(be(r));for(let n=0;n<r;n+=8)t[n>>5]|=(e[n/8]&255)<<n%32;return t}function S(e,r){let t=(e&65535)+(r&65535);return(e>>16)+(r>>16)+(t>>16)<<16|t&65535}function ht(e,r){return e<<r|e>>>32-r}function Y(e,r,t,n,i,o){return S(ht(S(S(r,e),S(n,o)),i),t)}function m(e,r,t,n,i,o,s){return Y(r&t|~r&n,e,r,i,o,s)}function y(e,r,t,n,i,o,s){return Y(r&n|t&~n,e,r,i,o,s)}function g(e,r,t,n,i,o,s){return Y(r^t^n,e,r,i,o,s)}function h(e,r,t,n,i,o,s){return Y(t^(r|~n),e,r,i,o,s)}var xe=pt;var cr=H("v3",48,xe);var bt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),oe={randomUUID:bt};function xt(e,r,t){if(oe.randomUUID&&!r&&!e)return oe.randomUUID();e=e||{};let n=e.random||(e.rng||W)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,r){t=t||0;for(let i=0;i<16;++i)r[t+i]=n[i];return r}return $(n)}var J=xt;function wt(e,r,t,n){switch(e){case 0:return r&t^~r&n;case 1:return r^t^n;case 2:return r&t^r&n^t&n;case 3:return r^t^n}}function se(e,r){return e<<r|e>>>32-r}function vt(e){let r=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){let s=unescape(encodeURIComponent(e));e=[];for(let a=0;a<s.length;++a)e.push(s.charCodeAt(a))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);let n=e.length/4+2,i=Math.ceil(n/16),o=new Array(i);for(let s=0;s<i;++s){let a=new Uint32Array(16);for(let f=0;f<16;++f)a[f]=e[s*64+f*4]<<24|e[s*64+f*4+1]<<16|e[s*64+f*4+2]<<8|e[s*64+f*4+3];o[s]=a}o[i-1][14]=(e.length-1)*8/Math.pow(2,32),o[i-1][14]=Math.floor(o[i-1][14]),o[i-1][15]=(e.length-1)*8&4294967295;for(let s=0;s<i;++s){let a=new Uint32Array(80);for(let c=0;c<16;++c)a[c]=o[s][c];for(let c=16;c<80;++c)a[c]=se(a[c-3]^a[c-8]^a[c-14]^a[c-16],1);let f=t[0],l=t[1],u=t[2],v=t[3],A=t[4];for(let c=0;c<80;++c){let k=Math.floor(c/20),te=se(f,5)+wt(k,l,u,v)+A+r[k]+a[c]>>>0;A=v,v=u,u=se(l,30)>>>0,l=f,f=te}t[0]=t[0]+f>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+v>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var we=vt;var Er=H("v5",80,we);function ae(e){return[...new Uint8Array(e)].map(r=>r.toString(16).padStart(2,"0")).join("")}function ve(e){return new Uint8Array((e.match(/../g)??[]).map(r=>parseInt(r,16)))}function Ee(e){let r=0;for(let i of e)r+=i.length;let t=new Uint8Array(r),n=0;for(let i of e)t.set(i,n),n+=i.length;return t}var Ie=pe(Ue());function V(e,r){if((0,Ie.validate)(e,r).length)throw new Error(`couldn't validate schema: ${JSON.stringify(r)} didn't match schema ${JSON.stringify(e)}`)}var Re="3",Ne="https://webapp-prod.cloud.remarkable.engineering",_t="https://internal.cloud.remarkable.com",_e="x-goog-generation",Lt="x-goog-if-generation-match",Dt="x-goog-content-length-range",Nt=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],Bt=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],Be={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},je={sm:50,md:125,rr:180,lg:200},$e={df:-1,md:100,lg:150,xl:200},jt={properties:{docID:{type:"string"},hash:{type:"string"}}},$t={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},X={visibleName:{type:"string"},lastModified:{type:"string"}},Q={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},Ht={discriminator:"type",mapping:{CollectionType:{properties:X,optionalProperties:Q},DocumentType:{properties:X,optionalProperties:{...Q,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},Le={id:{type:"string"},hash:{type:"string"}},Jt={discriminator:"type",mapping:{CollectionType:{properties:{...X,...Le},optionalProperties:Q},DocumentType:{properties:{...X,...Le,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...Q,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},D=class extends Error{constructor(t,n,i){super(i);this.status=t,this.statusText=n}},ee=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function Vt(e,{deviceDesc:r="browser-chrome",uuid:t=J(),authHost:n=Ne,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let o=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:r,deviceID:t})});if(o.ok)return await o.text();throw new D(o.status,o.statusText,"couldn't register api")}function He({hash:e,type:r,documentId:t,subfiles:n,size:i}){return`${e}:${r}:${t}:${n}:${i}
2
- `}function Je(e){let[r,t,n,i,o]=e.split(":");if(r===void 0||t===void 0||n===void 0||i===void 0||o===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(t==="80000000")return{hash:r,type:t,documentId:n,subfiles:parseInt(i),size:BigInt(o)};if(t==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:r,type:t,documentId:n,subfiles:0,size:BigInt(o)}}else throw new Error(`entries line contained invalid type: ${t}`)}var de=class{#a;#o;#e;#s;#t;constructor(r,t,n,i,o){this.#a=r,this.#o=t,this.#e=n,this.#s=i,this.#t=o}async#i(r,{body:t,method:n="POST",headers:i={}}){let o=await this.#o(r,{method:n,headers:{Authorization:`Bearer ${this.#a}`,...i},body:t});if(o.ok)return o;{let s=await o.text();throw new D(o.status,o.statusText,`failed reMarkable request: ${s}`)}}async#r({url:r,method:t,maxuploadsize_bytes:n},i,o={}){let s=n?{...o,[Dt]:`0,${n}`}:o,a=await this.#o(r,{method:t,body:i,headers:s});if(a.ok)return a;{let f=await a.text();throw new D(a.status,a.statusText,f)}}async#n(r,t,n){let i=t===void 0?"downloads":"uploads",o=n?`{ "http_method": "PUT", "relative_path": "${r}", "root_schema": "${n}", "generation": ${t} }`:JSON.stringify({http_method:"GET",relative_path:r}),a=await(await this.#i(`${this.#t}/sync/v2/signed-urls/${i}`,{body:o})).text(),f=JSON.parse(a);return V($t,f),f}async getRootHash(){let r=await this.#n("root"),t=await this.#r(r),n=t.headers.get(_e);if(!n)throw new Error("no generation header in root hash");return[await t.text(),BigInt(n)]}async putRootHash(r,t){let n=await this.#n("root",t,r),i;try{i=await this.#r(n,r,{[Lt]:`${t}`})}catch(s){throw s instanceof D&&s.status===412?new ee:s}let o=i.headers.get(_e);if(!o)throw new Error("no generation header in root hash");return BigInt(o)}async getBuffer(r){let t=await this.#n(r);return await(await this.#r(t)).arrayBuffer()}async getText(r){let t=await this.#e?.get(r);if(t)return t;{let n=await this.#n(r),o=await(await this.#r(n)).text();return await this.#e?.set(r,o),o}}async getMetadata(r){let t=await this.getText(r),n=JSON.parse(t);return V(Ht,n),n}async getEntries(r){let t=await this.getText(r),[n,...i]=t.slice(0,-1).split(`
3
- `);if(n!==Re)throw new Error(`got unexpected schema version: ${n}`);return i.map(Je)}async#f(r,t){let n=await this.#n(r,null);await this.#r(n,t)}async putEntries(r,t){let n=new TextEncoder;t.sort((u,v)=>u.documentId.localeCompare(v.documentId));let i=Ee(t.map(u=>ve(u.hash))),o=await this.#s.digest("SHA-256",i),s=ae(o),a=t.map(He).join(""),f=`${Re}
4
- ${a}`,l=n.encode(f);return await this.#f(s,l),await this.#e?.set(s,f),{hash:s,type:"80000000",documentId:r,subfiles:t.length,size:0n}}async putBuffer(r,t){let n=await this.#s.digest("SHA-256",t),i=ae(n);return await this.#f(i,t),{hash:i,type:"0",documentId:r,subfiles:0,size:BigInt(t.length)}}async putText(r,t){let n=new TextEncoder,i=await this.putBuffer(r,n.encode(t));return await this.#e?.set(i.hash,t),i}async putMetadata(r,t){return await this.putText(`${r}.metadata`,JSON.stringify(t))}async putCollection(r,t=""){let n=J(),i=`${new Date().valueOf()}`,o=[],s={type:"CollectionType",visibleName:r,version:0,parent:t,synced:!0,lastModified:i};o.push(this.putMetadata(n,s)),o.push(this.putText(`${n}.content`,"{}"));let a=await Promise.all(o);return await this.putEntries(n,a)}async#l(r,t,n,i,o){if(o.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${o.fileType}`);let s=J(),a=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${s}.${n}`,t));let l={type:"DocumentType",visibleName:r,version:0,parent:i,synced:!0,lastModified:a};f.push(this.putMetadata(s,l)),f.push(this.putText(`${s}.content`,JSON.stringify(o)));let u=await Promise.all(f);return await this.putEntries(s,u)}async putEpub(r,t,{parent:n="",margins:i=125,orientation:o,textAlignment:s,textScale:a=1,lineHeight:f=-1,fontName:l="",cover:u="visited",lastTool:v}={}){let A={dummyDocument:!1,extraMetadata:{LastTool:v},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?$e[f]:f,margins:typeof i=="string"?je[i]:i,textScale:typeof a=="string"?Be[a]:a,pages:[],coverPageNumber:u==="first"?0:-1,formatVersion:1,orientation:o,textAlignment:s,fontName:l};return await this.#l(r,t,"epub",n,A)}async putPdf(r,t,{parent:n="",orientation:i,cover:o="first",lastTool:s}={}){let a={dummyDocument:!1,extraMetadata:{LastTool:s},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:o==="first"?0:-1,formatVersion:1,orientation:i};return await this.#l(r,t,"pdf",n,a)}async syncComplete(r){let t=`{ "generation": ${r} }`;await this.#i(`${this.#t}/sync/v2/sync-complete`,{body:t})}async getEntriesMetadata(){let t=await(await this.#i(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(t);return V({elements:Jt},n),n}async#u(r,t,n){let o=new TextEncoder().encode(JSON.stringify({file_name:r})),a=await(await this.#i(`${this.#t}/doc/v2/files`,{body:t,headers:{"content-type":n,"rm-meta":(0,De.fromByteArray)(o),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(a);return V(jt,f),f}async uploadEpub(r,t){return await this.#u(r,t,"application/epub+zip")}async uploadPdf(r,t){return await this.#u(r,t,"application/pdf")}};async function qt(e,{fetch:r=globalThis.fetch,cache:t,subtle:n=globalThis.crypto?.subtle,authHost:i=Ne,syncHost:o=_t}={}){let s=await r(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`couldn't fetch auth token: ${s.statusText}`);let a=await s.text();return new de(a,r,t,n,o)}return Qe(zt);})();
1
+ var rmapi=(()=>{var We=Object.create;var W=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Ke=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty;var j=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Qe=(e,r)=>{for(var t in r)W(e,t,{get:r[t],enumerable:!0})},he=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ze(r))!Xe.call(e,i)&&i!==t&&W(e,i,{get:()=>r[i],enumerable:!(n=Ye(r,i))||n.enumerable});return e};var ge=(e,r,t)=>(t=e!=null?We(Ke(e)):{},he(r||!e||!e.__esModule?W(t,"default",{value:e,enumerable:!0}):t,e)),et=e=>he(W({},"__esModule",{value:!0}),e);var xe=j(Y=>{"use strict";Y.byteLength=rt;Y.toByteArray=it;Y.fromByteArray=at;var O=[],A=[],tt=typeof Uint8Array<"u"?Uint8Array:Array,se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(F=0,be=se.length;F<be;++F)O[F]=se[F],A[se.charCodeAt(F)]=F;var F,be;A["-".charCodeAt(0)]=62;A["_".charCodeAt(0)]=63;function we(e){var r=e.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=e.indexOf("=");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function rt(e){var r=we(e),t=r[0],n=r[1];return(t+n)*3/4-n}function nt(e,r,t){return(r+t)*3/4-t}function it(e){var r,t=we(e),n=t[0],i=t[1],o=new tt(nt(e,n,i)),s=0,a=i>0?n-4:n,f;for(f=0;f<a;f+=4)r=A[e.charCodeAt(f)]<<18|A[e.charCodeAt(f+1)]<<12|A[e.charCodeAt(f+2)]<<6|A[e.charCodeAt(f+3)],o[s++]=r>>16&255,o[s++]=r>>8&255,o[s++]=r&255;return i===2&&(r=A[e.charCodeAt(f)]<<2|A[e.charCodeAt(f+1)]>>4,o[s++]=r&255),i===1&&(r=A[e.charCodeAt(f)]<<10|A[e.charCodeAt(f+1)]<<4|A[e.charCodeAt(f+2)]>>2,o[s++]=r>>8&255,o[s++]=r&255),o}function ot(e){return O[e>>18&63]+O[e>>12&63]+O[e>>6&63]+O[e&63]}function st(e,r,t){for(var n,i=[],o=r;o<t;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(e[o+2]&255),i.push(ot(n));return i.join("")}function at(e){for(var r,t=e.length,n=t%3,i=[],o=16383,s=0,a=t-n;s<a;s+=o)i.push(st(e,s,s+o>a?a:s+o));return n===1?(r=e[t-1],i.push(O[r>>2]+O[r<<4&63]+"==")):n===2&&(r=(e[t-2]<<8)+e[t-1],i.push(O[r>>10]+O[r>>4&63]+O[r<<2&63]+"=")),i.join("")}});var ce=j(d=>{"use strict";var Oe=d&&d.__rest||function(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)r.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(t[n[i]]=e[n[i]]);return t};Object.defineProperty(d,"__esModule",{value:!0});d.isSchema=d.isValidSchema=d.isDiscriminatorForm=d.isValuesForm=d.isPropertiesForm=d.isElementsForm=d.isEnumForm=d.isTypeForm=d.isRefForm=d.isEmptyForm=void 0;function Pt(e){let{definitions:r,nullable:t,metadata:n}=e,i=Oe(e,["definitions","nullable","metadata"]);return Object.keys(i).length===0}d.isEmptyForm=Pt;function Se(e){return"ref"in e}d.isRefForm=Se;function Tt(e){return"type"in e}d.isTypeForm=Tt;function Ce(e){return"enum"in e}d.isEnumForm=Ce;function Me(e){return"elements"in e}d.isElementsForm=Me;function de(e){return"properties"in e||"optionalProperties"in e}d.isPropertiesForm=de;function Fe(e){return"values"in e}d.isValuesForm=Fe;function Ue(e){return"discriminator"in e}d.isDiscriminatorForm=Ue;function U(e,r){if(r===void 0&&(r=e),e.definitions!==void 0){if(r!==e)return!1;for(let t of Object.values(e.definitions))if(!U(t,r))return!1}if(Se(e)&&!(e.ref in(r.definitions||{}))||Ce(e)&&(e.enum.length===0||e.enum.length!==new Set(e.enum).size))return!1;if(Me(e))return U(e.elements,r);if(de(e)){for(let t of Object.values(e.properties||{}))if(!U(t,r))return!1;for(let t of Object.values(e.optionalProperties||{}))if(!U(t,r))return!1;for(let t of Object.keys(e.properties||{}))if(t in(e.optionalProperties||{}))return!1}if(Fe(e))return U(e.values,r);if(Ue(e)){for(let t of Object.values(e.mapping))if(!U(t,r)||!de(t)||t.nullable||e.discriminator in(t.properties||{})||e.discriminator in(t.optionalProperties||{}))return!1}return!0}d.isValidSchema=U;var At=[[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!0,!1,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!0,!1,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!0,!1,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!1,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!1,!1,!1,!1],[!1,!1,!1,!1,!0,!1,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!0,!0,!0,!1,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!0,!1,!1],[!1,!1,!1,!1,!1,!1,!1,!1,!0,!0]],kt=["boolean","float32","float64","int8","uint8","int16","uint16","int32","uint32","string","timestamp"];function I(e){if(typeof e!="object"||Array.isArray(e)||e===null)return!1;let r=e,{definitions:t=void 0,nullable:n=void 0,metadata:i=void 0,ref:o=void 0,type:s=void 0,enum:a=void 0,elements:f=void 0,properties:l=void 0,optionalProperties:u=void 0,additionalProperties:p=void 0,values:P=void 0,discriminator:c=void 0,mapping:T=void 0}=r,B=Oe(r,["definitions","nullable","metadata","ref","type","enum","elements","properties","optionalProperties","additionalProperties","values","discriminator","mapping"]),ie=[o!==void 0,s!==void 0,a!==void 0,f!==void 0,l!==void 0,u!==void 0,p!==void 0,P!==void 0,c!==void 0,T!==void 0],k=!1;for(let v of At)k=k||v.every((z,ye)=>z===ie[ye]);if(!k)return!1;if(t!==void 0){if(typeof t!="object"||Array.isArray(t)||t===null)return!1;for(let v of Object.values(t))if(!I(v))return!1}if(n!==void 0&&typeof n!="boolean"||i!==void 0&&(typeof i!="object"||Array.isArray(i)||i===null)||o!==void 0&&typeof o!="string"||s!==void 0&&(typeof s!="string"||!kt.includes(s))||a!==void 0&&(!Array.isArray(a)||!a.every(v=>typeof v=="string"))||f!==void 0&&!I(f))return!1;if(l!==void 0){if(typeof l!="object"||Array.isArray(l)||l===null)return!1;for(let v of Object.values(l))if(!I(v))return!1}if(u!==void 0){if(typeof u!="object"||Array.isArray(u)||u===null)return!1;for(let v of Object.values(u))if(!I(v))return!1}if(p!==void 0&&typeof p!="boolean"||P!==void 0&&!I(P)||c!==void 0&&typeof c!="string")return!1;if(T!==void 0){if(typeof T!="object"||Array.isArray(T)||T===null)return!1;for(let v of Object.values(T))if(!I(v))return!1}return Object.keys(B).length===0}d.isSchema=I});var Ie=j(pe=>{"use strict";Object.defineProperty(pe,"__esModule",{value:!0});var Ot=/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$/;function St(e){let r=e.match(Ot);if(r===null)return!1;let t=parseInt(r[1],10),n=parseInt(r[2],10),i=parseInt(r[3],10),o=parseInt(r[4],10),s=parseInt(r[5],10),a=parseInt(r[6],10);return!(n>12||i>Ct(t,n)||o>23||s>59||a>60)}pe.default=St;function Ct(e,r){return r===2?Mt(e)?29:28:Ft[r]}function Mt(e){return e%4===0&&(e%100!==0||e%400===0)}var Ft=[0,31,0,31,30,31,30,31,31,30,31,30,31]});var Re=j(C=>{"use strict";var Ut=C&&C.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(C,"__esModule",{value:!0});C.validate=C.MaxDepthExceededError=void 0;var It=Ut(Ie()),R=ce(),Q=class extends Error{};C.MaxDepthExceededError=Q;var ee=class extends Error{};function Rt(e,r,t){let n={errors:[],instanceTokens:[],schemaTokens:[[]],root:e,config:t||{maxDepth:0,maxErrors:0}};try{L(n,e,r)}catch(i){if(!(i instanceof ee))throw i}return n.errors}C.validate=Rt;function L(e,r,t,n){if(!(r.nullable&&t===null)){if(R.isRefForm(r)){if(e.schemaTokens.length===e.config.maxDepth)throw new Q;e.schemaTokens.push(["definitions",r.ref]),L(e,e.root.definitions[r.ref],t),e.schemaTokens.pop()}else if(R.isTypeForm(r)){switch(w(e,"type"),r.type){case"boolean":typeof t!="boolean"&&x(e);break;case"float32":case"float64":typeof t!="number"&&x(e);break;case"int8":N(e,t,-128,127);break;case"uint8":N(e,t,0,255);break;case"int16":N(e,t,-32768,32767);break;case"uint16":N(e,t,0,65535);break;case"int32":N(e,t,-2147483648,2147483647);break;case"uint32":N(e,t,0,4294967295);break;case"string":typeof t!="string"&&x(e);break;case"timestamp":typeof t!="string"?x(e):It.default(t)||x(e);break}E(e)}else if(R.isEnumForm(r))w(e,"enum"),(typeof t!="string"||!r.enum.includes(t))&&x(e),E(e);else if(R.isElementsForm(r)){if(w(e,"elements"),Array.isArray(t))for(let[i,o]of t.entries())_(e,i.toString()),L(e,r.elements,o),$(e);else x(e);E(e)}else if(R.isPropertiesForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(r.properties!==void 0){w(e,"properties");for(let[i,o]of Object.entries(r.properties))w(e,i),t.hasOwnProperty(i)?(_(e,i),L(e,o,t[i]),$(e)):x(e),E(e);E(e)}if(r.optionalProperties!==void 0){w(e,"optionalProperties");for(let[i,o]of Object.entries(r.optionalProperties))w(e,i),t.hasOwnProperty(i)&&(_(e,i),L(e,o,t[i]),$(e)),E(e);E(e)}if(r.additionalProperties!==!0)for(let i of Object.keys(t)){let o=r.properties&&i in r.properties,s=r.optionalProperties&&i in r.optionalProperties;!o&&!s&&i!==n&&(_(e,i),x(e),$(e))}}else r.properties!==void 0?w(e,"properties"):w(e,"optionalProperties"),x(e),E(e);else if(R.isValuesForm(r)){if(w(e,"values"),typeof t=="object"&&t!==null&&!Array.isArray(t))for(let[i,o]of Object.entries(t))_(e,i),L(e,r.values,o),$(e);else x(e);E(e)}else if(R.isDiscriminatorForm(r))if(typeof t=="object"&&t!==null&&!Array.isArray(t))if(t.hasOwnProperty(r.discriminator)){let i=t[r.discriminator];typeof i=="string"?i in r.mapping?(w(e,"mapping"),w(e,i),L(e,r.mapping[i],t,r.discriminator),E(e),E(e)):(w(e,"mapping"),_(e,r.discriminator),x(e),$(e),E(e)):(w(e,"discriminator"),_(e,r.discriminator),x(e),$(e),E(e))}else w(e,"discriminator"),x(e),E(e);else w(e,"discriminator"),x(e),E(e)}}function N(e,r,t,n){(typeof r!="number"||!Number.isInteger(r)||r<t||r>n)&&x(e)}function _(e,r){e.instanceTokens.push(r)}function $(e){e.instanceTokens.pop()}function w(e,r){e.schemaTokens[e.schemaTokens.length-1].push(r)}function E(e){e.schemaTokens[e.schemaTokens.length-1].pop()}function x(e){if(e.errors.push({instancePath:[...e.instanceTokens],schemaPath:[...e.schemaTokens[e.schemaTokens.length-1]]}),e.errors.length===e.config.maxErrors)throw new ee}});var $e=j(M=>{"use strict";var _t=M&&M.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t),Object.defineProperty(e,n,{enumerable:!0,get:function(){return r[t]}})}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),_e=M&&M.__exportStar||function(e,r){for(var t in e)t!=="default"&&!r.hasOwnProperty(t)&&_t(r,e,t)};Object.defineProperty(M,"__esModule",{value:!0});_e(ce(),M);_e(Re(),M)});var zt={};Qe(zt,{GenerationError:()=>ne,ResponseError:()=>D,builtinFontNames:()=>Bt,builtinLineHeights:()=>qe,builtinMargins:()=>Ve,builtinTextScales:()=>Je,builtinTools:()=>Nt,formatEntry:()=>Ge,parseEntry:()=>ze,register:()=>qt,remarkable:()=>Gt});var je=ge(xe());var Z,ft=new Uint8Array(16);function K(){if(!Z&&(Z=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Z))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Z(ft)}var Ee=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function lt(e){return typeof e=="string"&&Ee.test(e)}var H=lt;var m=[];for(let e=0;e<256;++e)m.push((e+256).toString(16).slice(1));function J(e,r=0){return(m[e[r+0]]+m[e[r+1]]+m[e[r+2]]+m[e[r+3]]+"-"+m[e[r+4]]+m[e[r+5]]+"-"+m[e[r+6]]+m[e[r+7]]+"-"+m[e[r+8]]+m[e[r+9]]+"-"+m[e[r+10]]+m[e[r+11]]+m[e[r+12]]+m[e[r+13]]+m[e[r+14]]+m[e[r+15]]).toLowerCase()}function ut(e){if(!H(e))throw TypeError("Invalid UUID");let r,t=new Uint8Array(16);return t[0]=(r=parseInt(e.slice(0,8),16))>>>24,t[1]=r>>>16&255,t[2]=r>>>8&255,t[3]=r&255,t[4]=(r=parseInt(e.slice(9,13),16))>>>8,t[5]=r&255,t[6]=(r=parseInt(e.slice(14,18),16))>>>8,t[7]=r&255,t[8]=(r=parseInt(e.slice(19,23),16))>>>8,t[9]=r&255,t[10]=(r=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=r/4294967296&255,t[12]=r>>>24&255,t[13]=r>>>16&255,t[14]=r>>>8&255,t[15]=r&255,t}var ae=ut;function dt(e){e=unescape(encodeURIComponent(e));let r=[];for(let t=0;t<e.length;++t)r.push(e.charCodeAt(t));return r}var ct="6ba7b810-9dad-11d1-80b4-00c04fd430c8",pt="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function V(e,r,t){function n(i,o,s,a){var f;if(typeof i=="string"&&(i=dt(i)),typeof o=="string"&&(o=ae(o)),((f=o)===null||f===void 0?void 0:f.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(o),l.set(i,o.length),l=t(l),l[6]=l[6]&15|r,l[8]=l[8]&63|128,s){a=a||0;for(let u=0;u<16;++u)s[a+u]=l[u];return s}return J(l)}try{n.name=e}catch{}return n.DNS=ct,n.URL=pt,n}function mt(e){if(typeof e=="string"){let r=unescape(encodeURIComponent(e));e=new Uint8Array(r.length);for(let t=0;t<r.length;++t)e[t]=r.charCodeAt(t)}return yt(ht(gt(e),e.length*8))}function yt(e){let r=[],t=e.length*32,n="0123456789abcdef";for(let i=0;i<t;i+=8){let o=e[i>>5]>>>i%32&255,s=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);r.push(s)}return r}function ve(e){return(e+64>>>9<<4)+14+1}function ht(e,r){e[r>>5]|=128<<r%32,e[ve(r)-1]=r;let t=1732584193,n=-271733879,i=-1732584194,o=271733878;for(let s=0;s<e.length;s+=16){let a=t,f=n,l=i,u=o;t=y(t,n,i,o,e[s],7,-680876936),o=y(o,t,n,i,e[s+1],12,-389564586),i=y(i,o,t,n,e[s+2],17,606105819),n=y(n,i,o,t,e[s+3],22,-1044525330),t=y(t,n,i,o,e[s+4],7,-176418897),o=y(o,t,n,i,e[s+5],12,1200080426),i=y(i,o,t,n,e[s+6],17,-1473231341),n=y(n,i,o,t,e[s+7],22,-45705983),t=y(t,n,i,o,e[s+8],7,1770035416),o=y(o,t,n,i,e[s+9],12,-1958414417),i=y(i,o,t,n,e[s+10],17,-42063),n=y(n,i,o,t,e[s+11],22,-1990404162),t=y(t,n,i,o,e[s+12],7,1804603682),o=y(o,t,n,i,e[s+13],12,-40341101),i=y(i,o,t,n,e[s+14],17,-1502002290),n=y(n,i,o,t,e[s+15],22,1236535329),t=h(t,n,i,o,e[s+1],5,-165796510),o=h(o,t,n,i,e[s+6],9,-1069501632),i=h(i,o,t,n,e[s+11],14,643717713),n=h(n,i,o,t,e[s],20,-373897302),t=h(t,n,i,o,e[s+5],5,-701558691),o=h(o,t,n,i,e[s+10],9,38016083),i=h(i,o,t,n,e[s+15],14,-660478335),n=h(n,i,o,t,e[s+4],20,-405537848),t=h(t,n,i,o,e[s+9],5,568446438),o=h(o,t,n,i,e[s+14],9,-1019803690),i=h(i,o,t,n,e[s+3],14,-187363961),n=h(n,i,o,t,e[s+8],20,1163531501),t=h(t,n,i,o,e[s+13],5,-1444681467),o=h(o,t,n,i,e[s+2],9,-51403784),i=h(i,o,t,n,e[s+7],14,1735328473),n=h(n,i,o,t,e[s+12],20,-1926607734),t=g(t,n,i,o,e[s+5],4,-378558),o=g(o,t,n,i,e[s+8],11,-2022574463),i=g(i,o,t,n,e[s+11],16,1839030562),n=g(n,i,o,t,e[s+14],23,-35309556),t=g(t,n,i,o,e[s+1],4,-1530992060),o=g(o,t,n,i,e[s+4],11,1272893353),i=g(i,o,t,n,e[s+7],16,-155497632),n=g(n,i,o,t,e[s+10],23,-1094730640),t=g(t,n,i,o,e[s+13],4,681279174),o=g(o,t,n,i,e[s],11,-358537222),i=g(i,o,t,n,e[s+3],16,-722521979),n=g(n,i,o,t,e[s+6],23,76029189),t=g(t,n,i,o,e[s+9],4,-640364487),o=g(o,t,n,i,e[s+12],11,-421815835),i=g(i,o,t,n,e[s+15],16,530742520),n=g(n,i,o,t,e[s+2],23,-995338651),t=b(t,n,i,o,e[s],6,-198630844),o=b(o,t,n,i,e[s+7],10,1126891415),i=b(i,o,t,n,e[s+14],15,-1416354905),n=b(n,i,o,t,e[s+5],21,-57434055),t=b(t,n,i,o,e[s+12],6,1700485571),o=b(o,t,n,i,e[s+3],10,-1894986606),i=b(i,o,t,n,e[s+10],15,-1051523),n=b(n,i,o,t,e[s+1],21,-2054922799),t=b(t,n,i,o,e[s+8],6,1873313359),o=b(o,t,n,i,e[s+15],10,-30611744),i=b(i,o,t,n,e[s+6],15,-1560198380),n=b(n,i,o,t,e[s+13],21,1309151649),t=b(t,n,i,o,e[s+4],6,-145523070),o=b(o,t,n,i,e[s+11],10,-1120210379),i=b(i,o,t,n,e[s+2],15,718787259),n=b(n,i,o,t,e[s+9],21,-343485551),t=S(t,a),n=S(n,f),i=S(i,l),o=S(o,u)}return[t,n,i,o]}function gt(e){if(e.length===0)return[];let r=e.length*8,t=new Uint32Array(ve(r));for(let n=0;n<r;n+=8)t[n>>5]|=(e[n/8]&255)<<n%32;return t}function S(e,r){let t=(e&65535)+(r&65535);return(e>>16)+(r>>16)+(t>>16)<<16|t&65535}function bt(e,r){return e<<r|e>>>32-r}function X(e,r,t,n,i,o){return S(bt(S(S(r,e),S(n,o)),i),t)}function y(e,r,t,n,i,o,s){return X(r&t|~r&n,e,r,i,o,s)}function h(e,r,t,n,i,o,s){return X(r&n|t&~n,e,r,i,o,s)}function g(e,r,t,n,i,o,s){return X(r^t^n,e,r,i,o,s)}function b(e,r,t,n,i,o,s){return X(t^(r|~n),e,r,i,o,s)}var Pe=mt;var pr=V("v3",48,Pe);var wt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),fe={randomUUID:wt};function xt(e,r,t){if(fe.randomUUID&&!r&&!e)return fe.randomUUID();e=e||{};let n=e.random||(e.rng||K)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,r){t=t||0;for(let i=0;i<16;++i)r[t+i]=n[i];return r}return J(n)}var q=xt;function Et(e,r,t,n){switch(e){case 0:return r&t^~r&n;case 1:return r^t^n;case 2:return r&t^r&n^t&n;case 3:return r^t^n}}function le(e,r){return e<<r|e>>>32-r}function vt(e){let r=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){let s=unescape(encodeURIComponent(e));e=[];for(let a=0;a<s.length;++a)e.push(s.charCodeAt(a))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);let n=e.length/4+2,i=Math.ceil(n/16),o=new Array(i);for(let s=0;s<i;++s){let a=new Uint32Array(16);for(let f=0;f<16;++f)a[f]=e[s*64+f*4]<<24|e[s*64+f*4+1]<<16|e[s*64+f*4+2]<<8|e[s*64+f*4+3];o[s]=a}o[i-1][14]=(e.length-1)*8/Math.pow(2,32),o[i-1][14]=Math.floor(o[i-1][14]),o[i-1][15]=(e.length-1)*8&4294967295;for(let s=0;s<i;++s){let a=new Uint32Array(80);for(let c=0;c<16;++c)a[c]=o[s][c];for(let c=16;c<80;++c)a[c]=le(a[c-3]^a[c-8]^a[c-14]^a[c-16],1);let f=t[0],l=t[1],u=t[2],p=t[3],P=t[4];for(let c=0;c<80;++c){let T=Math.floor(c/20),B=le(f,5)+Et(T,l,u,p)+P+r[T]+a[c]>>>0;P=p,p=u,u=le(l,30)>>>0,l=f,f=B}t[0]=t[0]+f>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+p>>>0,t[4]=t[4]+P>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var Te=vt;var Pr=V("v5",80,Te);function ue(e){return[...new Uint8Array(e)].map(r=>r.toString(16).padStart(2,"0")).join("")}function Ae(e){return new Uint8Array((e.match(/../g)??[]).map(r=>parseInt(r,16)))}function ke(e){let r=0;for(let i of e)r+=i.length;let t=new Uint8Array(r),n=0;for(let i of e)t.set(i,n),n+=i.length;return t}var Le=ge($e());function G(e,r){if((0,Le.validate)(e,r).length)throw new Error(`couldn't validate schema: ${JSON.stringify(r)} didn't match schema ${JSON.stringify(e)}`)}var De="3",He="https://webapp-prod.cloud.remarkable.engineering",$t="https://internal.cloud.remarkable.com",Ne="x-goog-generation",Lt="x-goog-if-generation-match",Dt="x-goog-content-length-range",Nt=["Ballpoint","Ballpointv2","Brush","Calligraphy","ClearPage","EraseSection","Eraser","Fineliner","Finelinerv2","Highlighter","Highlighterv2","Marker","Markerv2","Paintbrush","Paintbrushv2","Pencilv2","SharpPencil","SharpPencilv2","SolidPen","ZoomTool"],Bt=["Maison Neue","EB Garamond","Noto Sans","Noto Serif","Noto Mono","Noto Sans UI"],Je={xs:.7,sm:.8,md:1,lg:1.2,xl:1.5,xx:2},Ve={sm:50,md:125,rr:180,lg:200},qe={df:-1,md:100,lg:150,xl:200},jt={properties:{docID:{type:"string"},hash:{type:"string"}}},Ht={properties:{relative_path:{type:"string"},url:{type:"string"},expires:{type:"timestamp"},method:{enum:["POST","GET","PUT","DELETE"]}},optionalProperties:{maxuploadsize_bytes:{type:"float64"}}},te={visibleName:{type:"string"},lastModified:{type:"string"}},re={version:{type:"int32"},pinned:{type:"boolean"},synced:{type:"boolean"},modified:{type:"boolean"},deleted:{type:"boolean"},metadatamodified:{type:"boolean"},parent:{type:"string"}},Jt={discriminator:"type",mapping:{CollectionType:{properties:te,optionalProperties:re},DocumentType:{properties:te,optionalProperties:{...re,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},Be={id:{type:"string"},hash:{type:"string"}},Vt={discriminator:"type",mapping:{CollectionType:{properties:{...te,...Be},optionalProperties:re},DocumentType:{properties:{...te,...Be,fileType:{enum:["notebook","epub","pdf",""]}},optionalProperties:{...re,lastOpened:{type:"string"},lastOpenedPage:{type:"int32"}}}}},D=class extends Error{constructor(t,n,i){super(i);this.status=t,this.statusText=n}},ne=class extends Error{constructor(){super("Generation preconditions failed. This means the current state is out of date with the cloud and needs to be re-synced.")}};async function qt(e,{deviceDesc:r="browser-chrome",uuid:t=q(),authHost:n=He,fetch:i=globalThis.fetch}={}){if(e.length!==8)throw new Error(`code should be length 8, but was ${e.length}`);let o=await i(`${n}/token/json/2/device/new`,{method:"POST",headers:{Authorization:"Bearer"},body:JSON.stringify({code:e,deviceDesc:r,deviceID:t})});if(o.ok)return await o.text();throw new D(o.status,o.statusText,"couldn't register api")}function Ge({hash:e,type:r,documentId:t,subfiles:n,size:i}){return`${e}:${r}:${t}:${n}:${i}
2
+ `}function ze(e){let[r,t,n,i,o]=e.split(":");if(r===void 0||t===void 0||n===void 0||i===void 0||o===void 0)throw new Error(`entries line didn't contain five fields: '${e}'`);if(t==="80000000")return{hash:r,type:t,documentId:n,subfiles:parseInt(i),size:BigInt(o)};if(t==="0"){if(i!=="0")throw new Error(`file type entry had nonzero number of subfiles: ${i}`);return{hash:r,type:t,documentId:n,subfiles:0,size:BigInt(o)}}else throw new Error(`entries line contained invalid type: ${t}`)}var me=class{#f;#s;#a;#t;#r;#e=null;constructor(r,t,n,i,o){this.#f=r,this.#s=t,this.#r=n,this.#a=i,this.#t=o}async#o(r,{body:t,method:n="POST",headers:i={}}){let o=await this.#s(r,{method:n,headers:{Authorization:`Bearer ${this.#f}`,...i},body:t});if(o.ok)return o;{let s=await o.text();throw new D(o.status,o.statusText,`failed reMarkable request: ${s}`)}}async#n({url:r,method:t,maxuploadsize_bytes:n},i,o={}){let s=n?{...o,[Dt]:`0,${n}`}:o,a=await this.#s(r,{method:t,body:i,headers:s});if(a.ok)return a;{let f=await a.text();throw new D(a.status,a.statusText,f)}}async#i(r,t,n){let i=t===void 0?"downloads":"uploads",o=n?`{ "http_method": "PUT", "relative_path": "${r}", "root_schema": "${n}", "generation": ${t} }`:JSON.stringify({http_method:"GET",relative_path:r}),a=await(await this.#o(`${this.#t}/sync/v2/signed-urls/${i}`,{body:o})).text(),f=JSON.parse(a);return G(Ht,f),f}async getRootHash({cache:r=!0}={}){if(r)for(;this.#e;)try{let[o,s]=await this.#e;return[o,s]}catch{}let t=(async()=>{try{let o=await this.#i("root"),s=await this.#n(o),a=s.headers.get(Ne);if(a)return[await s.text(),BigInt(a)];throw new Error("no generation header in root hash")}catch(o){throw this.#e=null,o}})();this.#e=t;let[n,i]=await t;return[n,i]}async putRootHash(r,t){let n=await this.#i("root",t,r),i;try{i=await this.#n(n,r,{[Lt]:`${t}`})}catch(a){throw a instanceof D&&a.status===412?(this.#e=null,new ne):a}let o=i.headers.get(Ne);if(!o)throw new Error("no generation header in root hash");let s=BigInt(o);return this.#e=Promise.resolve([r,s]),s}async getBuffer(r){let t=await this.#i(r);return await(await this.#n(t)).arrayBuffer()}async getText(r){let t=await this.#r?.get(r);if(t)return t;{let n=await this.#i(r),o=await(await this.#n(n)).text();return await this.#r?.set(r,o),o}}async getMetadata(r){let t=await this.getText(r),n=JSON.parse(t);return G(Jt,n),n}async getEntries(r){let t=await this.getText(r),[n,...i]=t.slice(0,-1).split(`
3
+ `);if(n!==De)throw new Error(`got unexpected schema version: ${n}`);return i.map(ze)}async#l(r,t){let n=await this.#i(r,null);await this.#n(n,t)}async putEntries(r,t){let n=new TextEncoder;t.sort((u,p)=>u.documentId.localeCompare(p.documentId));let i=ke(t.map(u=>Ae(u.hash))),o=await this.#a.digest("SHA-256",i),s=ue(o),a=t.map(Ge).join(""),f=`${De}
4
+ ${a}`,l=n.encode(f);return await this.#l(s,l),await this.#r?.set(s,f),{hash:s,type:"80000000",documentId:r,subfiles:t.length,size:0n}}async putBuffer(r,t){let n=await this.#a.digest("SHA-256",t),i=ue(n);return await this.#l(i,t),{hash:i,type:"0",documentId:r,subfiles:0,size:BigInt(t.length)}}async putText(r,t){let n=new TextEncoder,i=await this.putBuffer(r,n.encode(t));return await this.#r?.set(i.hash,t),i}async putMetadata(r,t){return await this.putText(`${r}.metadata`,JSON.stringify(t))}async putCollection(r,t=""){let n=q(),i=`${new Date().valueOf()}`,o=[],s={type:"CollectionType",visibleName:r,version:0,parent:t,synced:!0,lastModified:i};o.push(this.putMetadata(n,s)),o.push(this.putText(`${n}.content`,"{}"));let a=await Promise.all(o);return await this.putEntries(n,a)}async#u(r,t,n,i,o){if(o.fileType!==n)throw new Error(`internal error: fileTypes don't match: ${n}, ${o.fileType}`);let s=q(),a=`${new Date().valueOf()}`,f=[];f.push(this.putBuffer(`${s}.${n}`,t));let l={type:"DocumentType",visibleName:r,version:0,parent:i,synced:!0,lastModified:a};f.push(this.putMetadata(s,l)),f.push(this.putText(`${s}.content`,JSON.stringify(o)));let u=await Promise.all(f);return await this.putEntries(s,u)}async putEpub(r,t,{parent:n="",margins:i=125,orientation:o,textAlignment:s,textScale:a=1,lineHeight:f=-1,fontName:l="",cover:u="visited",lastTool:p}={}){let P={dummyDocument:!1,extraMetadata:{LastTool:p},fileType:"epub",pageCount:0,lastOpenedPage:0,lineHeight:typeof f=="string"?qe[f]:f,margins:typeof i=="string"?Ve[i]:i,textScale:typeof a=="string"?Je[a]:a,pages:[],coverPageNumber:u==="first"?0:-1,formatVersion:1,orientation:o,textAlignment:s,fontName:l};return await this.#u(r,t,"epub",n,P)}async putPdf(r,t,{parent:n="",orientation:i,cover:o="first",lastTool:s}={}){let a={dummyDocument:!1,extraMetadata:{LastTool:s},fileType:"pdf",pageCount:0,lastOpenedPage:0,lineHeight:-1,margins:125,textScale:1,pages:[],coverPageNumber:o==="first"?0:-1,formatVersion:1,orientation:i};return await this.#u(r,t,"pdf",n,a)}async syncComplete(r){let t=`{ "generation": ${r} }`;await this.#o(`${this.#t}/sync/v2/sync-complete`,{body:t})}async#d(r,t,n){let{hash:i}=await this.putEntries("",t),o=await this.putRootHash(i,r);if(n)try{return await this.syncComplete(o),!0}catch{return!1}else return!1}async create(r,t={}){let{cache:n=!0,sync:i=!0}=typeof t=="boolean"?{cache:!1,sync:t}:t,[o,s]=await this.getRootHash({cache:n}),a=await this.getEntries(o);return a.push(r),await this.#d(s,a,i)}async move(r,t,n={}){let{cache:i=!0,sync:o=!0}=typeof n=="boolean"?{cache:!1,sync:n}:n,[s,a]=await this.getRootHash({cache:i}),f=await this.getEntries(s);if(!(!t||t==="trash")){let k=f.find(oe=>oe.documentId===t);if(k){if(k.type!=="80000000")throw new Error(`destination id was a raw file: ${t}`)}else throw new Error(`destination id not found: ${t}`);let v=await this.getEntries(k.hash),[z]=v.filter(oe=>oe.documentId===`${t}.metadata`);if(!z)throw new Error(`destination id didn't have metadata: ${t}`);if((await this.getMetadata(z.hash)).type!=="CollectionType")throw new Error(`destination id wasn't a collection: ${t}`)}let l=f.findIndex(k=>k.documentId===r);if(l===-1)throw new Error(`document not found: ${r}`);let[u]=f.splice(l,1);if(u.type!=="80000000")throw new Error(`document was a raw file: ${r}`);let p=await this.getEntries(u.hash),P=p.findIndex(k=>k.documentId===`${r}.metadata`);if(P===-1)throw new Error(`document didn't have metadata: ${r}`);let[c]=p.splice(P,1),T=await this.getMetadata(c.hash);T.parent=t;let B=await this.putMetadata(r,T);p.push(B);let ie=await this.putEntries(r,p);return f.push(ie),await this.#d(a,f,o)}async getEntriesMetadata(){let t=await(await this.#o(`${this.#t}/doc/v2/files`,{method:"GET",headers:{"rm-source":"RoR-Browser"}})).text(),n=JSON.parse(t);return G({elements:Vt},n),n}async#c(r,t,n){let o=new TextEncoder().encode(JSON.stringify({file_name:r})),a=await(await this.#o(`${this.#t}/doc/v2/files`,{body:t,headers:{"content-type":n,"rm-meta":(0,je.fromByteArray)(o),"rm-source":"RoR-Browser"}})).text(),f=JSON.parse(a);return G(jt,f),f}async uploadEpub(r,t){return await this.#c(r,t,"application/epub+zip")}async uploadPdf(r,t){return await this.#c(r,t,"application/pdf")}};async function Gt(e,{fetch:r=globalThis.fetch,cache:t,subtle:n=globalThis.crypto?.subtle,authHost:i=He,syncHost:o=$t}={}){let s=await r(`${i}/token/json/2/user/new`,{method:"POST",headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`couldn't fetch auth token: ${s.statusText}`);let a=await s.text();return new me(a,r,t,n,o)}return et(zt);})();
package/dist/index.d.ts CHANGED
@@ -302,6 +302,35 @@ export interface PutEpubOptions {
302
302
  /** the tool to have enabled by default */
303
303
  lastTool?: string;
304
304
  }
305
+ /**
306
+ * options for {@link RemarkableApi.getRootHash | `getRootHash`}
307
+ */
308
+ export interface GetRootHashOptions {
309
+ /**
310
+ * whether to use the last known valid root hash
311
+ *
312
+ * @defaultValue true
313
+ */
314
+ cache?: boolean;
315
+ }
316
+ /**
317
+ * options for {@link RemarkableApi.create | `create`} and
318
+ * {@link RemarkableApi.move | `move`}
319
+ */
320
+ export interface CreateMoveOptions {
321
+ /**
322
+ * whether to use the last known valid root hash
323
+ *
324
+ * @defaultValue true
325
+ */
326
+ cache?: boolean;
327
+ /**
328
+ * whether broadcast syncing complete to other devices
329
+ *
330
+ * @defaultValue true
331
+ */
332
+ sync?: boolean;
333
+ }
305
334
  /** options for uploading a pdf */
306
335
  export interface PutPdfOptions {
307
336
  /** the parent id, default to root */
@@ -322,7 +351,7 @@ export interface RemarkableApi {
322
351
  *
323
352
  * If this hasn't changed, then neither have any of the files.
324
353
  */
325
- getRootHash(): Promise<[string, bigint]>;
354
+ getRootHash(options?: GetRootHashOptions): Promise<[string, bigint]>;
326
355
  /**
327
356
  * write the root hash, incrimenting from the current generation
328
357
  *
@@ -330,6 +359,16 @@ export interface RemarkableApi {
330
359
  * generation. Use this to preven race conditions. If this rejects, refetch
331
360
  * the root hash, resync the updates, and then try to put again.
332
361
  *
362
+ * @remarks Updating the root hash can be dangerous as it changes the full
363
+ * state of what's on the the remarkable. However, it's also the only way to
364
+ * change what's actually visible. If you're unsure if you're doing the right
365
+ * thing, make sure to first save your inital root hash. Then you can always
366
+ * recover by doing:
367
+ * ```
368
+ * let [, gen] = await api.getRootHash();
369
+ * await api.putRootHash(backup, gen);
370
+ * ```
371
+ *
333
372
  * @param hash - the hash of the new root collection
334
373
  * @param generation - the current generation this builds off of
335
374
  * @returns the new generation
@@ -400,12 +439,7 @@ export interface RemarkableApi {
400
439
  *
401
440
  * ```ts
402
441
  * const entry = await api.putEpub(...);
403
- * const [root, gen] = await api.getRootHash();
404
- * const rootEntries = await api.getEntries(root);
405
- * rootEntries.push(entry);
406
- * const { hash } = await api.putEntries("", rootEntries);
407
- * const nextGen = await api.putRootHash(hash, gen);
408
- * await api.syncComplete(nextGen);
442
+ * await api.create(entry);
409
443
  * ```
410
444
  *
411
445
  * @param visibleName - the name to show for the uploaded epub
@@ -428,12 +462,7 @@ export interface RemarkableApi {
428
462
  *
429
463
  * ```ts
430
464
  * const entry = await api.putPdf(...);
431
- * const [root, gen] = await api.getRootHash();
432
- * const rootEntries = await api.getEntries(root);
433
- * rootEntries.push(entry);
434
- * const { hash } = await api.putEntries("", rootEntries);
435
- * const nextGen = await api.putRootHash(hash, gen);
436
- * await api.syncComplete(nextGen);
465
+ * await api.create(entry);
437
466
  * ```
438
467
  *
439
468
  * @param visibleName - the name to show for the uploaded pdf
@@ -448,6 +477,86 @@ export interface RemarkableApi {
448
477
  * that other devices should pick up the change.
449
478
  */
450
479
  syncComplete(generation: bigint): Promise<void>;
480
+ /**
481
+ * high level api to create an entry
482
+ *
483
+ * After creating a collection entry with
484
+ * {@link RemarkableApi.putCollection | `putCollection`},
485
+ * {@link RemarkableApi.putEpub | `putEpub`}, or
486
+ * {@link RemarkableApi.putPdf | `putPdf`}, this is a high level API to try
487
+ * syncing the change to the remarkable.
488
+ *
489
+ * @remarks
490
+ * This API is provided to give a high level interface and to serve as an
491
+ * example of how to implement more advanced functionality, but it comes with
492
+ * a number of caveats:
493
+ * 1. For most use cases, it will repeat requests to remarkable's servers
494
+ * (even with a cache) making it slower than implementing similar steps
495
+ * manually.
496
+ * 2. It includes no handling of concurrent modification or other networking
497
+ * errors, requiring repeat network requests if anything fails.
498
+ *
499
+ * @example
500
+ * ```ts
501
+ * const entry = await api.putEpub(...);
502
+ * await api.create(entry);
503
+ * ```
504
+ *
505
+ * @param entry - and entry, usually created by a `put*` method
506
+ * @param sync - whether to notify apps of a change (default: true)
507
+ * @returns synced - if sync was successful
508
+ * @throws error - if any error occurred, in this case, nothing will be
509
+ * changed
510
+ */
511
+ create(entry: CollectionEntry, options?: CreateMoveOptions): Promise<boolean>;
512
+ /**
513
+ * deprecated variant without the ability to specify caching behavior
514
+ *
515
+ * @deprecated in favor of the options syntax: replace `create(entry, sync)`
516
+ * with `create(entry, { cache: false, sync: sync })`
517
+ */
518
+ create(entry: CollectionEntry, sync: boolean): Promise<boolean>;
519
+ /**
520
+ * high level api to move a document / collection
521
+ *
522
+ * Use this as a high level api to move files in the document tree.
523
+ *
524
+ * @remarks
525
+ * This API is provided to give a high level interface and to serve as an
526
+ * example of how to implement more advanced functionality, but it comes with
527
+ * a number of caveats:
528
+ * 1. For most use cases, it will repeat requests to remarkable's servers
529
+ * (even with a cache) making it slower than implementing similar steps
530
+ * manually.
531
+ * 2. It includes no handling of concurrent modification or other networking
532
+ * errors, requiring repeat network requests if anything fails.
533
+ *
534
+ * @example
535
+ * ```ts
536
+ * const [root] = await api.getRootHash();
537
+ * const entries = await api.getEntries(root);
538
+ * const { documentId } = entries.find(...);
539
+ * await api.move(documentId, "trash");
540
+ * ```
541
+ *
542
+ * @param documentId - the document id of the document or collection to move
543
+ * @param dest - the new parent of this collection or document; this should
544
+ * be the document id of an existing collection, an empty string for root,
545
+ * or the string `"trash"` to move to the trash
546
+ * @param sync - whether to notify apps of a change (default: true)
547
+ * @returns synced - true if synced successfully
548
+ * @throws error - if any error occurred, in this case, nothing will be
549
+ * changed
550
+ */
551
+ move(documentId: string, dest: string, opts?: CreateMoveOptions): Promise<boolean>;
552
+ /**
553
+ * deprecated variant without the ability to specify caching behavior
554
+ *
555
+ * @deprecated in favor of the options syntax: replace
556
+ * `move(docid, dest, sync)` with
557
+ * `move(docid, dest, { cache: false, sync: sync })`
558
+ */
559
+ move(documentId: string, dest: string, sync: boolean): Promise<boolean>;
451
560
  /**
452
561
  * get metadata on all entries
453
562
  *
package/dist/index.js CHANGED
@@ -36,12 +36,7 @@
36
36
  *
37
37
  * const api = await remarkable(...);
38
38
  * const entry = await api.putEpub("document name", epubBuffer);
39
- * const [root, gen] = await api.getRootHash();
40
- * const rootEntries = await api.getEntries(root);
41
- * rootEntries.push(entry);
42
- * const { hash } = await api.putEntries("", rootEntries);
43
- * const nextGen = await api.putRootHash(hash, gen);
44
- * await api.syncComplete(nextGen);
39
+ * await api.create(entry);
45
40
  * ```
46
41
  *
47
42
  * @packageDocumentation
@@ -300,9 +295,11 @@ export function parseEntry(line) {
300
295
  class Remarkable {
301
296
  #userToken;
302
297
  #fetch;
303
- #cache;
304
298
  #subtle;
305
299
  #syncHost;
300
+ // caches
301
+ #cache;
302
+ #rootCache = null;
306
303
  constructor(userToken, fetch, cache, subtle, syncHost) {
307
304
  this.#userToken = userToken;
308
305
  this.#fetch = fetch;
@@ -365,14 +362,38 @@ class Remarkable {
365
362
  /**
366
363
  * get the root hash and the current generation
367
364
  */
368
- async getRootHash() {
369
- const signed = await this.#getUrl("root");
370
- const resp = await this.#signedFetch(signed);
371
- const generation = resp.headers.get(GENERATION_HEADER);
372
- if (!generation) {
373
- throw new Error("no generation header in root hash");
365
+ async getRootHash({ cache = true } = {}) {
366
+ if (cache) {
367
+ while (this.#rootCache) {
368
+ try {
369
+ const [hash, gen] = await this.#rootCache;
370
+ return [hash, gen];
371
+ }
372
+ catch {
373
+ // noop
374
+ }
375
+ }
374
376
  }
375
- return [await resp.text(), BigInt(generation)];
377
+ const prom = (async () => {
378
+ try {
379
+ const signed = await this.#getUrl("root");
380
+ const resp = await this.#signedFetch(signed);
381
+ const generation = resp.headers.get(GENERATION_HEADER);
382
+ if (!generation) {
383
+ throw new Error("no generation header in root hash");
384
+ }
385
+ else {
386
+ return [await resp.text(), BigInt(generation)];
387
+ }
388
+ }
389
+ catch (ex) {
390
+ this.#rootCache = null;
391
+ throw ex;
392
+ }
393
+ })();
394
+ this.#rootCache = prom;
395
+ const [hash, gen] = await prom;
396
+ return [hash, gen];
376
397
  }
377
398
  /**
378
399
  * write the root hash, incrementing from the current generation
@@ -387,17 +408,20 @@ class Remarkable {
387
408
  }
388
409
  catch (ex) {
389
410
  if (ex instanceof ResponseError && ex.status === 412) {
411
+ this.#rootCache = null;
390
412
  throw new GenerationError();
391
413
  }
392
414
  else {
393
415
  throw ex;
394
416
  }
395
417
  }
396
- const gen = resp.headers.get(GENERATION_HEADER);
397
- if (!gen) {
418
+ const genStr = resp.headers.get(GENERATION_HEADER);
419
+ if (!genStr) {
398
420
  throw new Error("no generation header in root hash");
399
421
  }
400
- return BigInt(gen);
422
+ const gen = BigInt(genStr);
423
+ this.#rootCache = Promise.resolve([hash, gen]);
424
+ return gen;
401
425
  }
402
426
  /**
403
427
  * get text content associated with hash
@@ -597,6 +621,85 @@ class Remarkable {
597
621
  body,
598
622
  });
599
623
  }
624
+ /** try to sync, always succeed */
625
+ async #tryPutRootEntries(gen, entries, sync) {
626
+ const { hash } = await this.putEntries("", entries);
627
+ const nextGen = await this.putRootHash(hash, gen);
628
+ if (sync) {
629
+ try {
630
+ await this.syncComplete(nextGen);
631
+ return true;
632
+ }
633
+ catch {
634
+ return false;
635
+ }
636
+ }
637
+ else {
638
+ return false;
639
+ }
640
+ }
641
+ /** high level api to create an entry */
642
+ async create(entry, opts = {}) {
643
+ const { cache = true, sync = true } = typeof opts === "boolean" ? { cache: false, sync: opts } : opts;
644
+ const [root, gen] = await this.getRootHash({ cache });
645
+ const rootEntries = await this.getEntries(root);
646
+ rootEntries.push(entry);
647
+ return await this.#tryPutRootEntries(gen, rootEntries, sync);
648
+ }
649
+ /** high level api to move a document / collection */
650
+ async move(documentId, dest, opts = {}) {
651
+ const { cache = true, sync = true } = typeof opts === "boolean" ? { cache: false, sync: opts } : opts;
652
+ const [root, gen] = await this.getRootHash({ cache });
653
+ const rootEntries = await this.getEntries(root);
654
+ // check if destination is a collection
655
+ if (!dest || dest === "trash") {
656
+ // fine
657
+ }
658
+ else {
659
+ // TODO some of these could be done in parallel
660
+ const entry = rootEntries.find((ent) => ent.documentId === dest);
661
+ if (!entry) {
662
+ throw new Error(`destination id not found: ${dest}`);
663
+ }
664
+ else if (entry.type !== "80000000") {
665
+ throw new Error(`destination id was a raw file: ${dest}`);
666
+ }
667
+ const ents = await this.getEntries(entry.hash);
668
+ const [meta] = ents.filter((ent) => ent.documentId === `${dest}.metadata`);
669
+ if (!meta) {
670
+ throw new Error(`destination id didn't have metadata: ${dest}`);
671
+ }
672
+ const metadata = await this.getMetadata(meta.hash);
673
+ if (metadata.type !== "CollectionType") {
674
+ throw new Error(`destination id wasn't a collection: ${dest}`);
675
+ }
676
+ }
677
+ // get entry to move from root
678
+ const ind = rootEntries.findIndex((ent) => ent.documentId === documentId);
679
+ if (ind === -1) {
680
+ throw new Error(`document not found: ${documentId}`);
681
+ }
682
+ const [oldEntry] = rootEntries.splice(ind, 1);
683
+ if (oldEntry.type !== "80000000") {
684
+ throw new Error(`document was a raw file: ${documentId}`);
685
+ }
686
+ // get metadata from entry
687
+ const docEnts = await this.getEntries(oldEntry.hash);
688
+ const metaInd = docEnts.findIndex((ent) => ent.documentId === `${documentId}.metadata`);
689
+ if (metaInd === -1) {
690
+ throw new Error(`document didn't have metadata: ${documentId}`);
691
+ }
692
+ const [metaEnt] = docEnts.splice(metaInd, 1);
693
+ const metadata = await this.getMetadata(metaEnt.hash);
694
+ // update metadata
695
+ metadata.parent = dest;
696
+ const newMetaEnt = await this.putMetadata(documentId, metadata);
697
+ docEnts.push(newMetaEnt);
698
+ // update root entries
699
+ const newEntry = await this.putEntries(documentId, docEnts);
700
+ rootEntries.push(newEntry);
701
+ return await this.#tryPutRootEntries(gen, rootEntries, sync);
702
+ }
600
703
  /** get entries and metadata for all files */
601
704
  async getEntriesMetadata() {
602
705
  const resp = await this.#authedFetch(`${this.#syncHost}/doc/v2/files`, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rmapi-js",
3
- "version": "2.1.1",
3
+ "version": "2.3.0",
4
4
  "description": "JavaScript implementation of the reMarkable 1.5 api",
5
5
  "repository": "git@github.com:erikbrinkman/rmapi-js.git",
6
6
  "author": "Erik Brinkman <erik.brinkman@gmail.com>",
@@ -96,6 +96,7 @@
96
96
  },
97
97
  "rules": {
98
98
  "@typescript-eslint/no-inferrable-types": "off",
99
+ "@typescript-eslint/no-non-null-assertion": "off",
99
100
  "tsdoc/syntax": "error",
100
101
  "no-warning-comments": [
101
102
  "error",
@@ -124,6 +125,7 @@
124
125
  "Pencilv",
125
126
  "authed",
126
127
  "bigints",
128
+ "docid",
127
129
  "ebooks",
128
130
  "epub",
129
131
  "fineliner",
@@ -132,11 +134,15 @@
132
134
  "incrementing",
133
135
  "linux",
134
136
  "macos",
137
+ "movee",
135
138
  "rmapi",
136
139
  "subfiles",
137
140
  "urls",
138
141
  "webcrypto"
139
142
  ],
143
+ "skipIfMatch": [
144
+ "^[0-9a-f]{64}"
145
+ ],
140
146
  "minLength": 4
141
147
  }
142
148
  ]