@subnoto/api-client 2.3.7 → 2.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Qe=Object.defineProperty;var de=(e,t)=>{for(var i in t)Qe(e,i,{get:t[i],enumerable:!0})};import m1 from"openapi-fetch";var B={};de(B,{generateDigestHeaders:()=>Me,generateSignatureHeader:()=>Be});var le=typeof Uint8Array=="function",b,U=class e{static decode(t){let i=typeof t=="string",r;if(b===void 0){let a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=`= \f
2
- \r \xA0\u2028\u2029`;for(b=[],r=0;r<64;++r)b[a.charCodeAt(r)]=r;for(r=0;r<u.length;++r)b[u.charCodeAt(r)]=-1;b[45]=b[43],b[95]=b[47]}let s=le?new Uint8Array(t.length*3>>2):[],o=0,d=0,n=0;for(r=0;r<t.length;++r){let a=i?t.charCodeAt(r):t[r];if(a==61)break;if(a=b[a],a!=-1){if(a===void 0)throw"Illegal character at offset "+r;o|=a,++d>=4?(s[n++]=o>>16,s[n++]=o>>8&255,s[n++]=o&255,o=0,d=0):o<<=6}}switch(d){case 1:throw"Base64 encoding incomplete: at least 2 bits missing";case 2:s[n++]=o>>10;break;case 3:s[n++]=o>>16,s[n++]=o>>8&255;break}return le&&s.length>n&&(s=s.subarray(0,n)),s}static pretty(t){let i=4-t.length%4;return i<4&&(t+="===".slice(0,i)),t=t.replace(/-/g,"+").replace(/_/g,"/"),t.replace(/.{80}/g,`$&
3
- `)}static unarmor(t){let i=e.re.exec(t);if(i)if(i[1])t=i[1];else if(i[2])t=i[2];else if(i[3])t=i[3];else throw"RegExp out of sync";return e.decode(t)}};U.re=/-----BEGIN [^-]+-----([A-Za-z0-9+/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+/=\s]+)====|^([A-Za-z0-9+/=\s]+)$/;var ue={chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bits:6};var T={parse:function(t,i){return Ze(t,ue,i)},stringify:function(t,i){return Je(t,ue,i)}};function Ze(e,t,i){var r;if(i===void 0&&(i={}),!t.codes){t.codes={};for(var s=0;s<t.chars.length;++s)t.codes[t.chars[s]]=s}if(!i.loose&&e.length*t.bits&7)throw new SyntaxError("Invalid padding");for(var o=e.length;e[o-1]==="=";)if(--o,!i.loose&&!((e.length-o)*t.bits&7))throw new SyntaxError("Invalid padding");for(var d=new((r=i.out)!=null?r:Uint8Array)(o*t.bits/8|0),n=0,a=0,u=0,S=0;S<o;++S){var c=t.codes[e[S]];if(c===void 0)throw new SyntaxError("Invalid character "+e[S]);a=a<<t.bits|c,n+=t.bits,n>=8&&(n-=8,d[u++]=255&a>>n)}if(n>=t.bits||255&a<<8-n)throw new SyntaxError("Unexpected end of data");return d}function Je(e,t,i){i===void 0&&(i={});for(var r=i,s=r.pad,o=s===void 0?!0:s,d=(1<<t.bits)-1,n="",a=0,u=0,S=0;S<e.length;++S)for(u=u<<8|255&e[S],a+=8;a>t.bits;)a-=t.bits,n+=t.chars[d&u>>a];if(a&&(n+=t.chars[d&u<<t.bits-a]),o)for(;n.length*t.bits&7;)n+="=";return n}var Ye=Object.create,ge=Object.defineProperty,et=Object.getOwnPropertyDescriptor,Ce=Object.getOwnPropertyNames,tt=Object.getPrototypeOf,it=Object.prototype.hasOwnProperty,N=(e,t)=>function(){return t||(0,e[Ce(e)[0]])((t={exports:{}}).exports,t),t.exports},rt=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ce(t))!it.call(e,s)&&s!==i&&ge(e,s,{get:()=>t[s],enumerable:!(r=et(t,s))||r.enumerable});return e},V=(e,t,i)=>(i=e!=null?Ye(tt(e)):{},rt(t||!e||!e.__esModule?ge(i,"default",{value:e,enumerable:!0}):i,e)),ee=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/types.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ByteSequence=void 0;var t=class{constructor(i){this.base64Value=i}toBase64(){return this.base64Value}};e.ByteSequence=t}}),L=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/util.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isByteSequence=e.isInnerList=e.isValidKeyStr=e.isValidTokenStr=e.isAscii=void 0;var t=/^[\x20-\x7E]*$/,i=/^[a-zA-Z*][:/!#$%&'*+\-.^_`|~A-Za-z0-9]*$/,r=/^[a-z*][*\-_.a-z0-9]*$/;function s(u){return t.test(u)}e.isAscii=s;function o(u){return i.test(u)}e.isValidTokenStr=o;function d(u){return r.test(u)}e.isValidKeyStr=d;function n(u){return Array.isArray(u[0])}e.isInnerList=n;function a(u){return typeof u=="object"&&"base64Value"in u}e.isByteSequence=a}}),te=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/token.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Token=void 0;var t=L(),i=class{constructor(r){if(!(0,t.isValidTokenStr)(r))throw new TypeError("Invalid character in Token string. Tokens must start with *, A-Z and the rest of the string may only contain a-z, A-Z, 0-9, :/!#$%&'*+-.^_`|~");this.value=r}toString(){return this.value}};e.Token=i}}),st=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/serializer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.serializeKey=e.serializeParameters=e.serializeToken=e.serializeByteSequence=e.serializeBoolean=e.serializeString=e.serializeDecimal=e.serializeInteger=e.serializeBareItem=e.serializeInnerList=e.serializeItem=e.serializeDictionary=e.serializeList=e.SerializeError=void 0;var t=ee(),i=te(),r=L(),s=class extends Error{};e.SerializeError=s;function o(l){return l.map(C=>(0,r.isInnerList)(C)?a(C):n(C)).join(", ")}e.serializeList=o;function d(l){return Array.from(l.entries()).map(([C,A])=>{let E=M(C);return A[0]===!0?E+=I(A[1]):(E+="=",(0,r.isInnerList)(A)?E+=a(A):E+=n(A)),E}).join(", ")}e.serializeDictionary=d;function n(l){return u(l[0])+I(l[1])}e.serializeItem=n;function a(l){return`(${l[0].map(C=>n(C)).join(" ")})${I(l[1])}`}e.serializeInnerList=a;function u(l){if(typeof l=="number")return Number.isInteger(l)?S(l):c(l);if(typeof l=="string")return p(l);if(l instanceof i.Token)return W(l);if(l instanceof t.ByteSequence)return y(l);if(typeof l=="boolean")return f(l);throw new s(`Cannot serialize values of type ${typeof l}`)}e.serializeBareItem=u;function S(l){if(l<-999999999999999||l>999999999999999)throw new s("Structured headers can only encode integers in the range range of -999,999,999,999,999 to 999,999,999,999,999 inclusive");return l.toString()}e.serializeInteger=S;function c(l){let C=l.toFixed(3).replace(/0+$/,"");if(C.split(".")[0].replace("-","").length>12)throw new s("Fractional numbers are not allowed to have more than 12 significant digits before the decimal point");return C}e.serializeDecimal=c;function p(l){if(!(0,r.isAscii)(l))throw new s("Only ASCII strings may be serialized");return`"${l.replace(/("|\\)/g,C=>"\\"+C)}"`}e.serializeString=p;function f(l){return l?"?1":"?0"}e.serializeBoolean=f;function y(l){return`:${l.toBase64()}:`}e.serializeByteSequence=y;function W(l){return l.toString()}e.serializeToken=W;function I(l){return Array.from(l).map(([C,A])=>{let E=";"+M(C);return A!==!0&&(E+="="+u(A)),E}).join("")}e.serializeParameters=I;function M(l){if(!(0,r.isValidKeyStr)(l))throw new s("Keys in dictionaries must only contain lowercase letter, numbers, _-*. and must start with a letter or *");return l}e.serializeKey=M}}),nt=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/parser.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ParseError=e.parseItem=e.parseList=e.parseDictionary=void 0;var t=ee(),i=te(),r=L();function s(c){return new a(c).parseDictionary()}e.parseDictionary=s;function o(c){return new a(c).parseList()}e.parseList=o;function d(c){return new a(c).parseItem()}e.parseItem=d;var n=class extends Error{constructor(c,p){super(`Parse error: ${p} at offset ${c}`)}};e.ParseError=n;var a=class{constructor(c){this.input=c,this.pos=0}parseDictionary(){this.skipWS();let c=new Map;for(;!this.eof();){let p=this.parseKey(),f;if(this.lookChar()==="="?(this.pos++,f=this.parseItemOrInnerList()):f=[!0,this.parseParameters()],c.set(p,f),this.skipOWS(),this.eof())return c;if(this.expectChar(","),this.pos++,this.skipOWS(),this.eof())throw new n(this.pos,"Dictionary contained a trailing comma")}return c}parseList(){this.skipWS();let c=[];for(;!this.eof();){if(c.push(this.parseItemOrInnerList()),this.skipOWS(),this.eof())return c;if(this.expectChar(","),this.pos++,this.skipOWS(),this.eof())throw new n(this.pos,"A list may not end with a trailing comma")}return c}parseItem(c=!0){c&&this.skipWS();let p=[this.parseBareItem(),this.parseParameters()];return c&&this.checkTrail(),p}parseItemOrInnerList(){return this.lookChar()==="("?this.parseInnerList():this.parseItem(!1)}parseInnerList(){this.expectChar("("),this.pos++;let c=[];for(;!this.eof();){if(this.skipWS(),this.lookChar()===")")return this.pos++,[c,this.parseParameters()];c.push(this.parseItem(!1));let p=this.lookChar();if(p!==" "&&p!==")")throw new n(this.pos,"Expected a whitespace or ) after every item in an inner list")}throw new n(this.pos,"Could not find end of inner list")}parseBareItem(){let c=this.lookChar();if(c===void 0)throw new n(this.pos,"Unexpected end of string");if(c.match(/^[-0-9]/))return this.parseIntegerOrDecimal();if(c==='"')return this.parseString();if(c.match(/^[A-Za-z*]/))return this.parseToken();if(c===":")return this.parseByteSequence();if(c==="?")return this.parseBoolean();throw new n(this.pos,"Unexpected input")}parseParameters(){let c=new Map;for(;!this.eof()&&this.lookChar()===";";){this.pos++,this.skipWS();let f=this.parseKey(),y=!0;this.lookChar()==="="&&(this.pos++,y=this.parseBareItem()),c.set(f,y)}return c}parseIntegerOrDecimal(){let c="integer",p=1,f="";if(this.lookChar()==="-"&&(p=-1,this.pos++),!S(this.lookChar()))throw new n(this.pos,"Expected a digit (0-9)");for(;!this.eof();){let y=this.getChar();if(S(y))f+=y;else if(c==="integer"&&y==="."){if(f.length>12)throw new n(this.pos,"Exceeded maximum decimal length");f+=".",c="decimal"}else{this.pos--;break}if(c==="integer"&&f.length>15)throw new n(this.pos,"Exceeded maximum integer length");if(c==="decimal"&&f.length>16)throw new n(this.pos,"Exceeded maximum decimal length")}if(c==="integer")return parseInt(f,10)*p;if(f.endsWith("."))throw new n(this.pos,"Decimal cannot end on a period");if(f.split(".")[1].length>3)throw new n(this.pos,"Number of digits after the decimal point cannot exceed 3");return parseFloat(f)*p}parseString(){let c="";for(this.expectChar('"'),this.pos++;!this.eof();){let p=this.getChar();if(p==="\\"){if(this.eof())throw new n(this.pos,"Unexpected end of input");let f=this.getChar();if(f!=="\\"&&f!=='"')throw new n(this.pos,"A backslash must be followed by another backslash or double quote");c+=f}else{if(p==='"')return c;if((0,r.isAscii)(p))c+=p;else throw new n(this.pos,"Strings must be in the ASCII range")}}throw new n(this.pos,"Unexpected end of input")}parseToken(){let c="";for(;!this.eof();){let p=this.lookChar();if(p===void 0||!/^[:/!#$%&'*+\-.^_`|~A-Za-z0-9]$/.test(p))return new i.Token(c);c+=this.getChar()}return new i.Token(c)}parseByteSequence(){this.expectChar(":"),this.pos++;let c=this.input.indexOf(":",this.pos);if(c===-1)throw new n(this.pos,'Could not find a closing ":" character to mark end of Byte Sequence');let p=this.input.substring(this.pos,c);if(this.pos+=p.length+1,!/^[A-Za-z0-9+/=]*$/.test(p))throw new n(this.pos,"ByteSequence does not contain a valid base64 string");return new t.ByteSequence(p)}parseBoolean(){this.expectChar("?"),this.pos++;let c=this.getChar();if(c==="1")return!0;if(c==="0")return!1;throw new n(this.pos,'Unexpected character. Expected a "1" or a "0"')}parseKey(){var c;if(!(!((c=this.lookChar())===null||c===void 0)&&c.match(/^[a-z*]/)))throw new n(this.pos,"A key must begin with an asterisk or letter (a-z)");let p="";for(;!this.eof();){let f=this.lookChar();if(f===void 0||!/^[a-z0-9_\-.*]$/.test(f))return p;p+=this.getChar()}return p}lookChar(){return this.input[this.pos]}expectChar(c){if(this.lookChar()!==c)throw new n(this.pos,`Expected ${c}`)}getChar(){return this.input[this.pos++]}eof(){return this.pos>=this.input.length}skipOWS(){for(;;){let c=this.input.substr(this.pos,1);if(c===" "||c===" ")this.pos++;else break}}skipWS(){for(;this.lookChar()===" ";)this.pos++}checkTrail(){if(this.skipWS(),!this.eof())throw new n(this.pos,"Unexpected characters at end of input")}};e.default=a;var u=/^[0-9]$/;function S(c){return c===void 0?!1:u.test(c)}}}),z=N({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/index.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?function(s,o,d,n){n===void 0&&(n=d);var a=Object.getOwnPropertyDescriptor(o,d);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[d]}}),Object.defineProperty(s,n,a)}:function(s,o,d,n){n===void 0&&(n=d),s[n]=o[d]}),i=e&&e.__exportStar||function(s,o){for(var d in s)d!=="default"&&!Object.prototype.hasOwnProperty.call(o,d)&&t(o,s,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.Token=void 0,i(st(),e),i(nt(),e),i(ee(),e),i(L(),e);var r=te();Object.defineProperty(e,"Token",{enumerable:!0,get:function(){return r.Token}})}});var R1=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);var ye=new TextEncoder;async function ct(){return globalThis.crypto??(await import("node:crypto")).webcrypto}var ot=/[^\S\r\n]*\r?\n[^\S\r\n]+/g;function pe(e){return e.replaceAll(ot," ")}function v(e){if(typeof e=="number")return e.toString();if(!e)return"";if(typeof e=="string")return pe(e).trim();if(Array.isArray(e))return e.map(t=>{if(t==null)return"";if(typeof t=="number")return t.toString();if(typeof t=="string")return pe(t).trim();throw new Error(`Invalid header value type ${t}`)}).join(", ");throw new Error(`Invalid header value type ${e}`)}function q(e){return Object.entries(e).reduce((t,[i,r])=>(i==="__proto__"||(t[i.toLowerCase()]=r),t),{})}function he(e,t){t=t.toLowerCase();for(let[i,r]of Object.entries(e))if(i.toLowerCase()===t)return r}function at(e){return typeof e=="number"?e.toString():typeof e=="string"?e.toLowerCase():""}function Y(e){return e.reduce((t,i,r)=>{if(r%2===0){if(typeof i!="string")throw new Error(`Invalid header key type '${typeof i}' of ${i}`);if(i.toLowerCase()in t)return t;t[i.toLowerCase()]=[]}else t[at(e[r-1])].push(i==null?"":i.toString());return t},{})}function x(e){if("rawHeaders"in e&&e.rawHeaders)return Y(e.rawHeaders.flat(1));if("getHeaders"in e&&typeof e.getHeaders=="function")return q(e.getHeaders());if("headers"in e&&e.headers){if(typeof e.headers!="object")throw new Error("headers must be an object");return Ae(e.headers)?Y(Array.from(e.headers.entries()).flat(1)):Array.isArray(e.headers)?Y(e.headers.flat(1)):q(e.headers)}throw new Error("Cannot get headers from request object")}function Ie(e,t,i){if("setHeader"in e&&typeof e.setHeader=="function")e.setHeader(t,i.toString());else if("headers"in e&&typeof e.headers=="object")Ae(e.headers)?e.headers.set(t,i.toString()):e.headers[t]=i.toString();else throw new Error("Cannot set headers to request object")}function Se(e){return"Response"in globalThis&&typeof e=="object"&&e instanceof Response}function dt(e){return"Request"in globalThis&&typeof e=="object"&&e instanceof Request}function Ae(e){return"Headers"in globalThis&&typeof e=="object"&&e instanceof Headers}function be(e){let t=new Uint8Array(e);return T.stringify(t)}var lt={hash:"SHA-256",ec:"DSA"};function ut(e,t){return{hash:t,...e}}function ie(e){return e instanceof Map?new Map(e):Array.isArray(e)?new Map(e):new Map(Object.entries(e))}function fe(e){let t=ie(e);for(let[i,r]of t.entries())r===void 0&&t.delete(i);return t}var m=V(z(),1),pt={signature:"dict","signature-input":"dict","accept-signature":"dict","content-digest":"dict","repr-digest":"dict","want-content-digest":"dict","want-repr-digest":"dict","accept-ch":"list","proxy-status":"list","cache-status":"list",priority:"dict","client-cert":"bs","client-cert-chain":"list"},ht=["@method","@authority","@scheme","@target-uri","@request-target","@path","@query"],St=["@status"],Ee=class{isRequest(){return this.response===null}isResponse(){return this.response!==null}constructor(e,t="https",i={},r,s=null){if(s&&!Array.isArray(s))throw new Error("requiredComponents must be an array");if(s&&s.length>0?this.requiredComponents=s.map(n=>{let a;return n.startsWith('"')?a=m.parseItem(n):a=[n,new Map],m.serializeItem(a)}):this.requiredComponents=null,this.sfvTypeDictionary=q({...pt,...i}),"req"in e)this.response=e,this.responseHeaders=x(e),this.request=e.req,this.requestHeaders=x(this.request);else if(Se(e)){if(!r)throw new Error("Request is not provided");this.response=e,this.responseHeaders=x(e),this.request=r,this.requestHeaders=x(this.request)}else this.response=null,this.responseHeaders=null,this.request=e,this.requestHeaders=x(e);if(!this.request.url)throw new Error("Request URL is empty");if(!this.request.method)throw new Error("Request method is empty");if(!("signature-input"in this.requestHeaders))throw new Error("Signature-Input header is not found in request");if(this.requestSignatureInput=m.parseDictionary(v(this.requestHeaders["signature-input"])),this.isResponse()){if(!this.responseHeaders)throw new Error("responseHeaders is empty");if(!("signature-input"in this.responseHeaders))throw new Error("Signature-Input header is not found in response");this.responseSignatureInput=m.parseDictionary(v(this.responseHeaders["signature-input"]))}this.sfvTypeDictionary=q(i),this.scheme=this.request.url.startsWith("/")?t:new URL(this.request.url).protocol.replace(":","");let o="httpVersionMajor"in this.request&&this.request.httpVersionMajor===2?this.requestHeaders[":authority"]:this.requestHeaders.host;if(!dt(this.request)&&!o)throw new Error("Host header is empty");let d=v(o);this.targetUri=this.request.url.startsWith("/")?new URL(this.request.url,`${t}://${d}`).href:this.request.url,this.url=new URL(this.targetUri)}get(e,t=new Map){let i=ie(t),r=m.serializeItem([e,i]);if(!e)throw new Error(`Type is empty: ${r}`);if(e.startsWith('"'))if(e.endsWith('"'))e=e.slice(1,-1);else throw new Error(`Invalid component type string: ${r}`);if(this.isResponse()&&i.get("req")!==!0&&ht.includes(e))throw new Error(`component is not available in response (must use with ;req, or provided object is unintentionally treated as response (existing req prop.)): ${e}`);if(this.isRequest()&&St.includes(e))throw new Error(`component is not available in request (provided object is unintentionally treated as request (including req prop.)): ${e}`);if(this.isRequest()&&i.get("req")===!0)throw new Error("req param is not available in request (provided object is treated as request, please set req param with Request)");let s=this.isRequest()||i.get("req")===!0;if(e==="@signature-params")throw new Error(`@signature-params is not available in get method: ${r}`);if(e==="@method"){if(!this.request.method)throw new Error("Request method is empty");return this.request.method.toUpperCase()}else{if(e==="@authority")return this.url.host;if(e==="@scheme")return this.scheme.toLocaleLowerCase();if(e==="@target-uri")return this.targetUri;if(e==="@request-target"){if(!this.request.method)throw new Error("Request method is empty");return`${this.request.method.toLowerCase()} ${this.url.pathname}`}else{if(e==="@path")return this.url.pathname;if(e==="@query")return this.url.search;if(e==="@query-param"){let o=i.get("name");if(o===void 0)throw new Error("Query parameter name not found or invalid");let d=this.url.searchParams.get(o.toString());if(d===null)throw new Error(`Query parameter not found: ${o} (${r})`);return d}else if(e==="@status"){if(!this.response)throw new Error("response is empty (@status)");return Se(this.response)?this.response.status.toString():this.response.statusCode.toString()}else{if(e.startsWith("@"))throw new Error(`Unknown derived component: ${e}`);{let o=i.get("key"),d=i.get("sf")===!0,n=i.get("bs")===!0,a=i.get("tr")===!0;if([o,d,n].filter(S=>S).length>1)throw new Error(`Invalid component: ${r} (multiple params are specified)`);let u=(()=>{if(s)if(a){if("trailers"in this.request&&this.request.trailers)return he(this.request.trailers,e);throw new Error(`Trailers not found in request object (${r})`)}else return this.requestHeaders[e];else{if(!this.response||!this.responseHeaders)throw new Error("response is not provided");if(a){if("trailers"in this.response&&this.response.trailers)return he(this.response.trailers,e);throw new Error(`Trailers not found in response object (${r})`)}else return this.responseHeaders[e]}})();if(u===void 0)throw new Error(`Header not found: ${r}`);if(d){if(!(e in this.sfvTypeDictionary))throw new Error(`Type not found in SFV type dictionary: ${e}`);let S=v(u);if(this.sfvTypeDictionary[e]==="dict")return m.serializeDictionary(m.parseDictionary(S));if(this.sfvTypeDictionary[e]==="list")return m.serializeList(m.parseList(S));if(["item","bs","int","dec","str","bool","token"].includes(this.sfvTypeDictionary[e]))return m.serializeItem(m.parseItem(S))}if(o){if(!(e in this.sfvTypeDictionary))throw new Error(`key specified but type unknown (Type not found in SFV type dictionary): ${r}`);if(typeof u!="string")throw new Error(`Key specified but value is not a string: ${r}`);if(this.sfvTypeDictionary[e]==="dict"){let c=m.parseDictionary(u).get(o);if(c===void 0)throw new Error(`Key not found in dictionary: ${o} (${r})`);return Array.isArray(c[0])?m.serializeList([c]):m.serializeItem(c)}else throw new Error(`"${e}" is not dict: ${this.sfvTypeDictionary[e]} (${r})`)}if(n){let S=(Array.isArray(u)?u:[u]).map(c=>{if(typeof c!="string")throw new Error(`Invalid header value type: ${typeof c}`);return[new m.ByteSequence(be(ye.encode(v(c)).buffer)),new Map]});return m.serializeList(S)}return v(u)}}}}}generate(e){let t=this.isRequest()?this.requestSignatureInput?.get(e):this.responseSignatureInput?.get(e);if(!t)throw new Error(`label not found: ${e}`);if(!Array.isArray(t[0]))throw new Error(`item is not InnerList: ${m.serializeDictionary(new Map([[e,t]]))}`);let i=new Map;for(let r of t[0]){let s=r[0];if(s.startsWith('"'))if(s.endsWith('"'))s=s.slice(1,-1);else throw new Error(`Invalid component identifier name: ${s}`);r[0]=s;let o=m.serializeItem(r);if(i.has(o))throw new Error(`Duplicate key: ${s}`);i.set(o,this.get(s,r[1]))}if(this.requiredComponents){for(let r of this.requiredComponents)if(!i.has(r))throw new Error(`Required component not found: ${r}`)}return i.set('"@signature-params"',m.serializeInnerList(t)),Array.from(i.entries(),([r,s])=>`${r}: ${s}`).join(`
4
- `)}};function Te(e){let t=ie(e),i=new Map;for(let[r,s]of t){if(!Array.isArray(s))throw new Error("item is not array");let[o,d]=s;i.set(r,[o.map(n=>typeof n=="string"?[n,new Map]:[n[0],fe(n[1])]),fe(d)])}return m.serializeDictionary(i)}var _1=V(z(),1);async function Pe(e,t,i=lt){let r=await(await ct()).subtle.sign(ut(e.algorithm,i.hash),e,ye.encode(t));return be(r)}var F1=V(z(),1);function we(e){let t=e.toUpperCase();if(t==="SHA-256")return"sha-256";if(t==="SHA-512")return"sha-512";throw new Error(`Unsupported hash algorithm: ${e}`)}var W1=V(z(),1);async function j(){return globalThis.crypto??(await import("node:crypto")).webcrypto}var De=e=>{let t=new Uint8Array(e);return T.stringify(t)};var ft=async(e,t="SHA-256")=>(t==="SHA"&&(t="SHA-1"),typeof e=="string"&&(e=new TextEncoder().encode(e)),(await j()).subtle.digest(t,e)),Me=async e=>{let t="SHA-256",i=await ft(e.body,t).then(De),r=`${t}=${i}`,s=`${we(t)}=:${i}:`;return{digest:r,contentDigest:s}};var mt=/^[\x20-\x7E]*$/,gt=/^[a-zA-Z*][:/!#$%&'*+\-.^_`|~A-Za-z0-9]*$/,Ct=/^[a-z*][*\-_.a-z0-9]*$/;function re(e){return mt.test(e)}function ve(e){return gt.test(e)}function Ne(e){return Ct.test(e)}function ke(e){return Array.isArray(e[0])}function Ke(e){let t=new Uint8Array(e),i="";for(let r of t)i+=String.fromCharCode(r);return btoa(i)}function se(e){let t=atob(e),i=t.length,r=new Uint8Array(i);for(let s=0;s<i;s++)r[s]=t.charCodeAt(s);return r.buffer}var k=class{constructor(t){if(!ve(t))throw new TypeError("Invalid character in Token string. Tokens must start with *, A-Z and the rest of the string may only contain a-z, A-Z, 0-9, :/!#$%&'*+-.^_`|~");this.value=t}toString(){return this.value}};var K=class{constructor(t){this.value=t}toString(){return this.value}};var w=class extends Error{};function Re(e){let t=e instanceof Map?e.entries():Object.entries(e);return Array.from(t).map(([i,r])=>{let s=xe(i);return Array.isArray(r)?r[0]===!0?s+Q(r[1]):ke(r)?s+"="+yt(r):s+"="+Oe(r):r===!0?s:s+"="+$(r)}).join(", ")}function Oe(e,t){return Array.isArray(e)?$(e[0])+Q(e[1]):$(e)+(t?Q(t):"")}function yt(e){return`(${e[0].map(t=>Oe(t)).join(" ")})${Q(e[1])}`}function $(e){if(typeof e=="number")return Number.isInteger(e)?It(e):At(e);if(typeof e=="string")return bt(e);if(e instanceof k)return wt(e);if(e instanceof ArrayBuffer)return Pt(e);if(e instanceof K)return Et(e);if(e instanceof Date)return Dt(e);if(typeof e=="boolean")return Tt(e);throw new w(`Cannot serialize values of type ${typeof e}`)}function It(e){if(e<-999999999999999||e>999999999999999)throw new w("Structured headers can only encode integers in the range range of -999,999,999,999,999 to 999,999,999,999,999 inclusive");return e.toString()}function At(e){let t=e.toFixed(3).replace(/0+$/,"");if(t.split(".")[0].replace("-","").length>12)throw new w("Fractional numbers are not allowed to have more than 12 significant digits before the decimal point");return t}function bt(e){if(!re(e))throw new w("Only ASCII strings may be serialized");return`"${e.replace(/("|\\)/g,t=>"\\"+t)}"`}function Et(e){let t='%"',i=new TextEncoder;for(let r of i.encode(e.toString()))r===37||r===34||r<=31||r>=127?t+="%"+r.toString(16):t+=String.fromCharCode(r);return t+'"'}function Tt(e){return e?"?1":"?0"}function Pt(e){return`:${Ke(e)}:`}function wt(e){return e.toString()}function Dt(e){return"@"+Math.floor(e.getTime()/1e3)}function Q(e){return Array.from(e).map(([t,i])=>{let r=";"+xe(t);return i!==!0&&(r+="="+$(i)),r}).join("")}function xe(e){if(!Ne(e))throw new w("Keys in dictionaries must only contain lowercase letter, numbers, _-*. and must start with a letter or *");return e}var Be=async e=>{let{request:t,authenticationType:i,accessKey:r,secretKey:s,creationDate:o}=e,d={key_ops:["sign","verify"],ext:!0,kty:"oct",k:s,alg:"HS256"},n=await(await j()).subtle.importKey("jwk",d,{name:"HMAC",hash:"SHA-256"},!0,["sign","verify"]),a=new Map,u=new Map;a.set(i,n),u.set(i,[["x-timestamp","@authority","content-type","content-digest","content-length"],{keyid:r,created:o,alg:"hmac-sha256"}]);let S=Te(u);Ie(t,"Signature-Input",S);let c=new Ee(t),p=(c.isRequest()?c.requestSignatureInput:c.responseSignatureInput)?.keys();if(!p)throw new Error("signaturesEntries is undefined");let f=new Map,y=new Map;for(let I of p){let M=c.generate(I),l=a.get(I);if(!l)throw new Error(`key not found: ${I}`);y.set(I,M),f.set(I,[se(await Pe(l,M,{hash:"SHA-256",ec:"DSA"})),new Map])}let W=Re(f);return{signatureInputHeader:S,signatureHeader:W}};function _e(e){return{async onRequest({request:t}){let i=t.clone(),r=i.url,s=await i.arrayBuffer()??JSON.stringify({}),o=i.method??"POST",d=await B.generateDigestHeaders({body:s}),n={headers:{"X-Timestamp":Date.now().toString(),Host:new URL(r).host,"Content-Type":i.headers.get("Content-Type")??"application/json","Content-Length":i.headers.get("Content-Length")??s.byteLength.toString(),Digest:d.digest,"Content-Digest":d.contentDigest},body:s.toString(),method:o,url:r},{signatureHeader:a,signatureInputHeader:u}=await B.generateSignatureHeader({request:n,authenticationType:"team",accessKey:e.accessKey,secretKey:Buffer.from(e.secretKey,"hex").toString("base64"),creationDate:Math.floor(Date.now()/1e3)});return t.headers.set("Signature",a),t.headers.set("Signature-Input",u),t.headers.set("X-Timestamp",n.headers["X-Timestamp"]),t.headers.set("Content-Type",n.headers["Content-Type"]),t.headers.set("Digest",n.headers.Digest),t.headers.set("Content-Digest",n.headers["Content-Digest"]),t}}}var g=class extends Error{statusCode;code;constructor(t,i,r){super(t),this.statusCode=i,this.code=r,this.name="SubnotoError"}};function Xe(e){return{async onRequest({request:t}){if(!t.url.includes("/tunnel/")&&!t.url.includes("/public/")||t.url.includes("/tunnel/session"))return t;try{await e.ensureSession();let i=t.clone(),r=Buffer.from(await i.arrayBuffer());if(!r||r.byteLength===0)throw new g("EMPTY_REQUEST_BODY");let s=e.encryptRequest(r);if(!s||s.byteLength===0)throw new g("Empty encrypted message");let o=e.getSessionId();if(!o)throw new g("Session ID not available");let d=new Headers(i.headers);d.set("X-Session-Id",o);let n=i.headers.get("Content-Type");n&&n.includes("multipart/form-data")&&d.set("X-Original-Content-Type",n),d.set("Content-Type","application/octet-stream"),d.set("Content-Length",s.byteLength.toString());let a=await e.getCookies(i.url);return a&&d.set("Cookie",a),new Request(i.url,{method:i.method,headers:d,body:s,mode:i.mode,credentials:i.credentials,cache:i.cache,redirect:i.redirect,referrer:i.referrer,referrerPolicy:i.referrerPolicy,integrity:i.integrity,keepalive:i.keepalive})}catch(i){throw console.error(`Error in tunnel middleware for ${t.url}:`,i),i}},async onResponse({response:t,request:i}){if(!i.url.includes("/tunnel/")&&!i.url.includes("/public/")||i.url.includes("/tunnel/session"))return t;try{if(!(t.headers.get("x-subnoto-encrypted-response")?.includes("true")&&t.headers.get("content-type")?.includes("application/octet-stream")))return t;let s=t.clone(),o=Buffer.from(await s.arrayBuffer());if(o.byteLength===0)throw new g("Empty encrypted response");let d=e.decryptResponse(o),n=new Headers(t.headers);return n.get("x-subnoto-content-type-response")?.includes("application/octet-stream")?(n.set("Content-Type","application/octet-stream"),n.delete("x-subnoto-encrypted-response"),new Response(d,{status:t.status,statusText:t.statusText,headers:n})):(n.set("Content-Type","application/json"),n.delete("x-subnoto-encrypted-response"),n.delete("x-subnoto-content-type-response"),new Response(d,{status:t.status,statusText:t.statusText,headers:n}))}catch(r){throw console.error(`Error decrypting response for ${i.url}:`,r),r}}}}import{fileURLToPath as Mt}from"url";import{dirname as vt,join as Nt}from"path";var kt=Mt(import.meta.url),Kt=vt(kt),Fe=Nt(Kt,"oak_session_wasm_nodejs_bg.wasm");var ce={};de(ce,{PutIncomingMessageResult:()=>Bt,WasmClientSession:()=>F,__wbg_buffer_609cc3eee51ed158:()=>_t,__wbg_call_672a4d21634d4a24:()=>Xt,__wbg_call_7cccdd69e0791ae2:()=>Ft,__wbg_crypto_574e78ad8b13b65f:()=>Ht,__wbg_getRandomValues_b8f5dbd5f3995a9e:()=>Gt,__wbg_msCrypto_a61aeb35a24c1329:()=>Wt,__wbg_new_a12002a7f91c75be:()=>Ut,__wbg_newnoargs_105ed471475aaf50:()=>qt,__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a:()=>Vt,__wbg_newwithlength_a381634e90c276d4:()=>Lt,__wbg_node_905d3e251edff8a2:()=>zt,__wbg_now_807e54c39636c349:()=>jt,__wbg_process_dc0fbacc7c1c06f7:()=>$t,__wbg_randomFillSync_ac0988aba3254290:()=>Qt,__wbg_require_60cc747a6bc5215a:()=>Zt,__wbg_set_65595bdd868b3009:()=>Jt,__wbg_set_wasm:()=>xt,__wbg_static_accessor_GLOBAL_88a902d13a557d07:()=>Yt,__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0:()=>e1,__wbg_static_accessor_SELF_37c5d418e4bf5819:()=>t1,__wbg_static_accessor_WINDOW_5de37043a91a9c40:()=>i1,__wbg_subarray_aa9065fa9dc5df96:()=>r1,__wbg_versions_c01dfd4722a88165:()=>s1,__wbindgen_init_externref_table:()=>n1,__wbindgen_is_function:()=>c1,__wbindgen_is_object:()=>o1,__wbindgen_is_string:()=>a1,__wbindgen_is_undefined:()=>d1,__wbindgen_memory:()=>l1,__wbindgen_string_new:()=>u1,__wbindgen_throw:()=>p1});import{TextDecoder as Rt}from"util";var h,Ot;function xt(e,t){h=e,Ot=t}function H(e){let t=h.__externref_table_alloc();return h.__wbindgen_export_2.set(t,e),t}function G(e,t){try{return e.apply(this,t)}catch(i){let r=H(i);h.__wbindgen_exn_store(r)}}var Ge=new Rt("utf-8",{ignoreBOM:!0,fatal:!0});Ge.decode();var Z=null;function ne(){return(Z===null||Z.byteLength===0)&&(Z=new Uint8Array(h.memory.buffer)),Z}function X(e,t){return e=e>>>0,Ge.decode(ne().subarray(e,e+t))}function O(e){return e==null}var D=0;function R(e,t){let i=t(e.length*1,1)>>>0;return ne().set(e,i/1),D=e.length,i}function P(e){let t=h.__wbindgen_export_2.get(e);return h.__externref_table_dealloc(e),t}function _(e,t){return e=e>>>0,ne().subarray(e/1,e/1+t)}var Bt=Object.freeze({NoIncomingMessageExpected:0,0:"NoIncomingMessageExpected",Success:1,1:"Success"}),He=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>h.__wbg_wasmclientsession_free(e>>>0,1)),F=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,He.unregister(this),t}free(){let t=this.__destroy_into_raw();h.__wbg_wasmclientsession_free(t,0)}constructor(t,i){var r=O(i)?0:R(i,h.__wbindgen_malloc),s=D;let o=h.wasmclientsession_new(O(t)?16777215:t?1:0,r,s);if(o[2])throw P(o[1]);return this.__wbg_ptr=o[0]>>>0,He.register(this,this.__wbg_ptr,this),this}is_open(){return h.wasmclientsession_is_open(this.__wbg_ptr)!==0}write(t){let i=R(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_write(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=_(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}read(t){let i=R(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_read(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=_(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}write_buffer(t){let i=R(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_write_buffer(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=_(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}read_buffer(t){let i=R(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_read_buffer(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=_(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}put_incoming_message(t){let i=R(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_put_incoming_message(this.__wbg_ptr,i,r);if(s[2])throw P(s[1]);return s[0]}get_outgoing_message(){let t=h.wasmclientsession_get_outgoing_message(this.__wbg_ptr);if(t[3])throw P(t[2]);let i;return t[0]!==0&&(i=_(t[0],t[1]).slice(),h.__wbindgen_free(t[0],t[1]*1,1)),i}get_attestation_results_json(){let t=h.wasmclientsession_get_attestation_results_json(this.__wbg_ptr);if(t[3])throw P(t[2]);let i;return t[0]!==0&&(i=X(t[0],t[1]).slice(),h.__wbindgen_free(t[0],t[1]*1,1)),i}get_attestation_status(){let t,i;try{let r=h.wasmclientsession_get_attestation_status(this.__wbg_ptr);return t=r[0],i=r[1],X(r[0],r[1])}finally{h.__wbindgen_free(t,i,1)}}};function _t(e){return e.buffer}function Xt(){return G(function(e,t){return e.call(t)},arguments)}function Ft(){return G(function(e,t,i){return e.call(t,i)},arguments)}function Ht(e){return e.crypto}function Gt(){return G(function(e,t){e.getRandomValues(t)},arguments)}function Wt(e){return e.msCrypto}function Ut(e){return new Uint8Array(e)}function qt(e,t){return new Function(X(e,t))}function Vt(e,t,i){return new Uint8Array(e,t>>>0,i>>>0)}function Lt(e){return new Uint8Array(e>>>0)}function zt(e){return e.node}function jt(){return Date.now()}function $t(e){return e.process}function Qt(){return G(function(e,t){e.randomFillSync(t)},arguments)}function Zt(){return G(function(){return module.require},arguments)}function Jt(e,t,i){e.set(t,i>>>0)}function Yt(){let e=typeof global>"u"?null:global;return O(e)?0:H(e)}function e1(){let e=typeof globalThis>"u"?null:globalThis;return O(e)?0:H(e)}function t1(){let e=typeof self>"u"?null:self;return O(e)?0:H(e)}function i1(){let e=typeof window>"u"?null:window;return O(e)?0:H(e)}function r1(e,t,i){return e.subarray(t>>>0,i>>>0)}function s1(e){return e.versions}function n1(){let e=h.__wbindgen_export_2,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}function c1(e){return typeof e=="function"}function o1(e){let t=e;return typeof t=="object"&&t!==null}function a1(e){return typeof e=="string"}function d1(e){return e===void 0}function l1(){return h.memory}function u1(e,t){return X(e,t)}function p1(e,t){throw new Error(X(e,t))}import*as Ue from"node:path";import*as qe from"node:fs";import*as Ve from"node:process";var oe={};oe["./oak_session_wasm_nodejs_bg.js"]=ce;var We=Ue.dirname(new URL(import.meta.url).pathname);Ve.platform==="win32"&&(We=We.substring(1));var h1=qe.readFileSync(Fe),Le=new WebAssembly.Module(h1),S1=new WebAssembly.Instance(Le,oe),ze=S1.exports;oe["./oak_session_wasm_nodejs_bg.js"].__wbg_set_wasm(ze,Le);ze.__wbindgen_start();import{CookieJar as f1}from"tough-cookie";var J=class{session=null;sessionId=null;config;handshakeInProgress=!1;cookieJar;constructor(t){this.config=t,this.cookieJar=new f1}async ensureSession(){if(!(this.session&&this.session.is_open())){if(this.handshakeInProgress){for(;this.handshakeInProgress;)await new Promise(t=>setTimeout(t,50));return}await this.handshake()}}async handshake(){this.handshakeInProgress=!0;try{let t=this.config.unattested??!1;this.session=new F(t,t?void 0:this.config.attesterKey);let i=4,r=0;if(!this.session)throw new g("Failed to create session");for(;!this.session.is_open()&&r<i;){r++;let s=this.session.get_outgoing_message();if(!s||this.session.is_open())break;let o=`${this.config.apiBaseUrl}/tunnel/session`,d={"Content-Type":"application/octet-stream"};this.sessionId&&(d["X-Session-Id"]=this.sessionId);let n=await this.cookieJar.getCookieString(o);n&&(d.Cookie=n);let a=await fetch(o,{method:"POST",body:s,headers:d});if(!this.sessionId){let c=a.headers.get("X-Session-Id");if(!c)throw new g("No session ID received from server");this.sessionId=c}if(!a.ok){let c=await a.text().catch(()=>"Unable to read error");throw new g(`Handshake failed with status ${a.status}: ${c}`,a.status)}let u=a.headers.getSetCookie?.()||[];for(let c of u)await this.cookieJar.setCookie(c,o);let S=await a.arrayBuffer();if(S.byteLength>0)this.session.put_incoming_message(Buffer.from(S));else throw new g("Empty response from server during handshake")}if(!this.session.is_open()||!this.sessionId)throw new g("Failed to establish session after handshake")}finally{this.handshakeInProgress=!1}}encryptRequest(t){if(!this.session||!this.session.is_open())throw new g("Session not open");try{let i=typeof t=="string"?Buffer.from(t,"utf-8"):t,r=this.session.write(i);return Buffer.from(r)}catch(i){throw new g(`Encryption failed: ${i instanceof Error?i.message:"Unknown error"}`)}}decryptResponse(t){if(!this.session||!this.session.is_open())throw new g("Session not open");try{let i=Buffer.isBuffer(t)?t:Buffer.from(t),r=this.session.read(i);return Buffer.from(r)}catch(i){throw new g(`Decryption failed: ${i instanceof Error?i.message:"Unknown error"}`)}}getSessionId(){return this.sessionId}getCookies(t){return this.cookieJar.getCookieString(t)}destroy(){this.session=null,this.sessionId=null}getAttestationResults(){return this.session?this.session.get_attestation_results_json()??null:null}getAttestationStatus(){return this.session?this.session.get_attestation_status()??null:null}};function je(e){let t=m1({baseUrl:e.apiBaseUrl}),i=new J(e);return t.use(Xe(i)),t.use(_e({accessKey:e.accessKey,secretKey:e.secretKey})),{client:t,sessionManager:i}}async function $e(e,t){let{workspaceUuid:i,fileBuffer:r,envelopeTitle:s}=t,o=new Blob([new Uint8Array(r)],{type:"application/pdf"}),d=await e.POST("/public/envelope/create-from-file",{body:{workspaceUuid:i,envelopeTitle:s,file:o},bodySerializer:n=>{let a=new FormData;return a.append("workspaceUuid",n.workspaceUuid),a.append("envelopeTitle",n.envelopeTitle),a.append("file",n.file,"document.pdf"),a}});if(d.error)throw new g(`Failed to upload document: ${JSON.stringify(d.error)}`,d.response?.status,typeof d.error=="object"&&"code"in d.error?String(d.error.code):void 0);return{envelopeUuid:d.data.envelopeUuid,documentUuid:d.data.documentUuid}}var ae=class{client;sessionManager;constructor(t){let{client:i,sessionManager:r}=je(t);this.client=i,this.sessionManager=r}get GET(){return this.client.GET}get POST(){return this.client.POST}get PUT(){return this.client.PUT}get DELETE(){return this.client.DELETE}get PATCH(){return this.client.PATCH}uploadDocument(t){return $e(this,t)}getAttestationStatus(){let t=this.sessionManager.getAttestationStatus();return t?JSON.parse(t):null}getAttestationResults(){let t=this.sessionManager.getAttestationResults();return t?JSON.parse(t):null}};export{ae as SubnotoClient,g as SubnotoError};
1
+ var Ve=Object.defineProperty;var de=(e,t)=>{for(var i in t)Ve(e,i,{get:t[i],enumerable:!0})};import c1 from"openapi-fetch";var X={};de(X,{generateDigestHeaders:()=>Me,generateSignatureHeader:()=>Be});var le=typeof Uint8Array=="function",b,U=class e{static decode(t){let i=typeof t=="string",r;if(b===void 0){let a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=`= \f
2
+ \r \xA0\u2028\u2029`;for(b=[],r=0;r<64;++r)b[a.charCodeAt(r)]=r;for(r=0;r<u.length;++r)b[u.charCodeAt(r)]=-1;b[45]=b[43],b[95]=b[47]}let s=le?new Uint8Array(t.length*3>>2):[],o=0,d=0,c=0;for(r=0;r<t.length;++r){let a=i?t.charCodeAt(r):t[r];if(a==61)break;if(a=b[a],a!=-1){if(a===void 0)throw"Illegal character at offset "+r;o|=a,++d>=4?(s[c++]=o>>16,s[c++]=o>>8&255,s[c++]=o&255,o=0,d=0):o<<=6}}switch(d){case 1:throw"Base64 encoding incomplete: at least 2 bits missing";case 2:s[c++]=o>>10;break;case 3:s[c++]=o>>16,s[c++]=o>>8&255;break}return le&&s.length>c&&(s=s.subarray(0,c)),s}static pretty(t){let i=4-t.length%4;return i<4&&(t+="===".slice(0,i)),t=t.replace(/-/g,"+").replace(/_/g,"/"),t.replace(/.{80}/g,`$&
3
+ `)}static unarmor(t){let i=e.re.exec(t);if(i)if(i[1])t=i[1];else if(i[2])t=i[2];else if(i[3])t=i[3];else throw"RegExp out of sync";return e.decode(t)}};U.re=/-----BEGIN [^-]+-----([A-Za-z0-9+/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+/=\s]+)====|^([A-Za-z0-9+/=\s]+)$/;var ue={chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bits:6};var T={parse:function(t,i){return Le(t,ue,i)},stringify:function(t,i){return ze(t,ue,i)}};function Le(e,t,i){var r;if(i===void 0&&(i={}),!t.codes){t.codes={};for(var s=0;s<t.chars.length;++s)t.codes[t.chars[s]]=s}if(!i.loose&&e.length*t.bits&7)throw new SyntaxError("Invalid padding");for(var o=e.length;e[o-1]==="=";)if(--o,!i.loose&&!((e.length-o)*t.bits&7))throw new SyntaxError("Invalid padding");for(var d=new((r=i.out)!=null?r:Uint8Array)(o*t.bits/8|0),c=0,a=0,u=0,S=0;S<o;++S){var n=t.codes[e[S]];if(n===void 0)throw new SyntaxError("Invalid character "+e[S]);a=a<<t.bits|n,c+=t.bits,c>=8&&(c-=8,d[u++]=255&a>>c)}if(c>=t.bits||255&a<<8-c)throw new SyntaxError("Unexpected end of data");return d}function ze(e,t,i){i===void 0&&(i={});for(var r=i,s=r.pad,o=s===void 0?!0:s,d=(1<<t.bits)-1,c="",a=0,u=0,S=0;S<e.length;++S)for(u=u<<8|255&e[S],a+=8;a>t.bits;)a-=t.bits,c+=t.chars[d&u>>a];if(a&&(c+=t.chars[d&u<<t.bits-a]),o)for(;c.length*t.bits&7;)c+="=";return c}var je=Object.create,ge=Object.defineProperty,$e=Object.getOwnPropertyDescriptor,Ce=Object.getOwnPropertyNames,Qe=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty,K=(e,t)=>function(){return t||(0,e[Ce(e)[0]])((t={exports:{}}).exports,t),t.exports},Je=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ce(t))!Ze.call(e,s)&&s!==i&&ge(e,s,{get:()=>t[s],enumerable:!(r=$e(t,s))||r.enumerable});return e},V=(e,t,i)=>(i=e!=null?je(Qe(e)):{},Je(t||!e||!e.__esModule?ge(i,"default",{value:e,enumerable:!0}):i,e)),ee=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/types.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ByteSequence=void 0;var t=class{constructor(i){this.base64Value=i}toBase64(){return this.base64Value}};e.ByteSequence=t}}),L=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/util.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isByteSequence=e.isInnerList=e.isValidKeyStr=e.isValidTokenStr=e.isAscii=void 0;var t=/^[\x20-\x7E]*$/,i=/^[a-zA-Z*][:/!#$%&'*+\-.^_`|~A-Za-z0-9]*$/,r=/^[a-z*][*\-_.a-z0-9]*$/;function s(u){return t.test(u)}e.isAscii=s;function o(u){return i.test(u)}e.isValidTokenStr=o;function d(u){return r.test(u)}e.isValidKeyStr=d;function c(u){return Array.isArray(u[0])}e.isInnerList=c;function a(u){return typeof u=="object"&&"base64Value"in u}e.isByteSequence=a}}),te=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/token.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Token=void 0;var t=L(),i=class{constructor(r){if(!(0,t.isValidTokenStr)(r))throw new TypeError("Invalid character in Token string. Tokens must start with *, A-Z and the rest of the string may only contain a-z, A-Z, 0-9, :/!#$%&'*+-.^_`|~");this.value=r}toString(){return this.value}};e.Token=i}}),Ye=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/serializer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.serializeKey=e.serializeParameters=e.serializeToken=e.serializeByteSequence=e.serializeBoolean=e.serializeString=e.serializeDecimal=e.serializeInteger=e.serializeBareItem=e.serializeInnerList=e.serializeItem=e.serializeDictionary=e.serializeList=e.SerializeError=void 0;var t=ee(),i=te(),r=L(),s=class extends Error{};e.SerializeError=s;function o(l){return l.map(C=>(0,r.isInnerList)(C)?a(C):c(C)).join(", ")}e.serializeList=o;function d(l){return Array.from(l.entries()).map(([C,A])=>{let E=N(C);return A[0]===!0?E+=I(A[1]):(E+="=",(0,r.isInnerList)(A)?E+=a(A):E+=c(A)),E}).join(", ")}e.serializeDictionary=d;function c(l){return u(l[0])+I(l[1])}e.serializeItem=c;function a(l){return`(${l[0].map(C=>c(C)).join(" ")})${I(l[1])}`}e.serializeInnerList=a;function u(l){if(typeof l=="number")return Number.isInteger(l)?S(l):n(l);if(typeof l=="string")return p(l);if(l instanceof i.Token)return W(l);if(l instanceof t.ByteSequence)return y(l);if(typeof l=="boolean")return f(l);throw new s(`Cannot serialize values of type ${typeof l}`)}e.serializeBareItem=u;function S(l){if(l<-999999999999999||l>999999999999999)throw new s("Structured headers can only encode integers in the range range of -999,999,999,999,999 to 999,999,999,999,999 inclusive");return l.toString()}e.serializeInteger=S;function n(l){let C=l.toFixed(3).replace(/0+$/,"");if(C.split(".")[0].replace("-","").length>12)throw new s("Fractional numbers are not allowed to have more than 12 significant digits before the decimal point");return C}e.serializeDecimal=n;function p(l){if(!(0,r.isAscii)(l))throw new s("Only ASCII strings may be serialized");return`"${l.replace(/("|\\)/g,C=>"\\"+C)}"`}e.serializeString=p;function f(l){return l?"?1":"?0"}e.serializeBoolean=f;function y(l){return`:${l.toBase64()}:`}e.serializeByteSequence=y;function W(l){return l.toString()}e.serializeToken=W;function I(l){return Array.from(l).map(([C,A])=>{let E=";"+N(C);return A!==!0&&(E+="="+u(A)),E}).join("")}e.serializeParameters=I;function N(l){if(!(0,r.isValidKeyStr)(l))throw new s("Keys in dictionaries must only contain lowercase letter, numbers, _-*. and must start with a letter or *");return l}e.serializeKey=N}}),et=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/parser.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ParseError=e.parseItem=e.parseList=e.parseDictionary=void 0;var t=ee(),i=te(),r=L();function s(n){return new a(n).parseDictionary()}e.parseDictionary=s;function o(n){return new a(n).parseList()}e.parseList=o;function d(n){return new a(n).parseItem()}e.parseItem=d;var c=class extends Error{constructor(n,p){super(`Parse error: ${p} at offset ${n}`)}};e.ParseError=c;var a=class{constructor(n){this.input=n,this.pos=0}parseDictionary(){this.skipWS();let n=new Map;for(;!this.eof();){let p=this.parseKey(),f;if(this.lookChar()==="="?(this.pos++,f=this.parseItemOrInnerList()):f=[!0,this.parseParameters()],n.set(p,f),this.skipOWS(),this.eof())return n;if(this.expectChar(","),this.pos++,this.skipOWS(),this.eof())throw new c(this.pos,"Dictionary contained a trailing comma")}return n}parseList(){this.skipWS();let n=[];for(;!this.eof();){if(n.push(this.parseItemOrInnerList()),this.skipOWS(),this.eof())return n;if(this.expectChar(","),this.pos++,this.skipOWS(),this.eof())throw new c(this.pos,"A list may not end with a trailing comma")}return n}parseItem(n=!0){n&&this.skipWS();let p=[this.parseBareItem(),this.parseParameters()];return n&&this.checkTrail(),p}parseItemOrInnerList(){return this.lookChar()==="("?this.parseInnerList():this.parseItem(!1)}parseInnerList(){this.expectChar("("),this.pos++;let n=[];for(;!this.eof();){if(this.skipWS(),this.lookChar()===")")return this.pos++,[n,this.parseParameters()];n.push(this.parseItem(!1));let p=this.lookChar();if(p!==" "&&p!==")")throw new c(this.pos,"Expected a whitespace or ) after every item in an inner list")}throw new c(this.pos,"Could not find end of inner list")}parseBareItem(){let n=this.lookChar();if(n===void 0)throw new c(this.pos,"Unexpected end of string");if(n.match(/^[-0-9]/))return this.parseIntegerOrDecimal();if(n==='"')return this.parseString();if(n.match(/^[A-Za-z*]/))return this.parseToken();if(n===":")return this.parseByteSequence();if(n==="?")return this.parseBoolean();throw new c(this.pos,"Unexpected input")}parseParameters(){let n=new Map;for(;!this.eof()&&this.lookChar()===";";){this.pos++,this.skipWS();let f=this.parseKey(),y=!0;this.lookChar()==="="&&(this.pos++,y=this.parseBareItem()),n.set(f,y)}return n}parseIntegerOrDecimal(){let n="integer",p=1,f="";if(this.lookChar()==="-"&&(p=-1,this.pos++),!S(this.lookChar()))throw new c(this.pos,"Expected a digit (0-9)");for(;!this.eof();){let y=this.getChar();if(S(y))f+=y;else if(n==="integer"&&y==="."){if(f.length>12)throw new c(this.pos,"Exceeded maximum decimal length");f+=".",n="decimal"}else{this.pos--;break}if(n==="integer"&&f.length>15)throw new c(this.pos,"Exceeded maximum integer length");if(n==="decimal"&&f.length>16)throw new c(this.pos,"Exceeded maximum decimal length")}if(n==="integer")return parseInt(f,10)*p;if(f.endsWith("."))throw new c(this.pos,"Decimal cannot end on a period");if(f.split(".")[1].length>3)throw new c(this.pos,"Number of digits after the decimal point cannot exceed 3");return parseFloat(f)*p}parseString(){let n="";for(this.expectChar('"'),this.pos++;!this.eof();){let p=this.getChar();if(p==="\\"){if(this.eof())throw new c(this.pos,"Unexpected end of input");let f=this.getChar();if(f!=="\\"&&f!=='"')throw new c(this.pos,"A backslash must be followed by another backslash or double quote");n+=f}else{if(p==='"')return n;if((0,r.isAscii)(p))n+=p;else throw new c(this.pos,"Strings must be in the ASCII range")}}throw new c(this.pos,"Unexpected end of input")}parseToken(){let n="";for(;!this.eof();){let p=this.lookChar();if(p===void 0||!/^[:/!#$%&'*+\-.^_`|~A-Za-z0-9]$/.test(p))return new i.Token(n);n+=this.getChar()}return new i.Token(n)}parseByteSequence(){this.expectChar(":"),this.pos++;let n=this.input.indexOf(":",this.pos);if(n===-1)throw new c(this.pos,'Could not find a closing ":" character to mark end of Byte Sequence');let p=this.input.substring(this.pos,n);if(this.pos+=p.length+1,!/^[A-Za-z0-9+/=]*$/.test(p))throw new c(this.pos,"ByteSequence does not contain a valid base64 string");return new t.ByteSequence(p)}parseBoolean(){this.expectChar("?"),this.pos++;let n=this.getChar();if(n==="1")return!0;if(n==="0")return!1;throw new c(this.pos,'Unexpected character. Expected a "1" or a "0"')}parseKey(){var n;if(!(!((n=this.lookChar())===null||n===void 0)&&n.match(/^[a-z*]/)))throw new c(this.pos,"A key must begin with an asterisk or letter (a-z)");let p="";for(;!this.eof();){let f=this.lookChar();if(f===void 0||!/^[a-z0-9_\-.*]$/.test(f))return p;p+=this.getChar()}return p}lookChar(){return this.input[this.pos]}expectChar(n){if(this.lookChar()!==n)throw new c(this.pos,`Expected ${n}`)}getChar(){return this.input[this.pos++]}eof(){return this.pos>=this.input.length}skipOWS(){for(;;){let n=this.input.substr(this.pos,1);if(n===" "||n===" ")this.pos++;else break}}skipWS(){for(;this.lookChar()===" ";)this.pos++}checkTrail(){if(this.skipWS(),!this.eof())throw new c(this.pos,"Unexpected characters at end of input")}};e.default=a;var u=/^[0-9]$/;function S(n){return n===void 0?!1:u.test(n)}}}),z=K({"node_modules/.pnpm/structured-headers@1.0.1/node_modules/structured-headers/dist/index.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?function(s,o,d,c){c===void 0&&(c=d);var a=Object.getOwnPropertyDescriptor(o,d);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[d]}}),Object.defineProperty(s,c,a)}:function(s,o,d,c){c===void 0&&(c=d),s[c]=o[d]}),i=e&&e.__exportStar||function(s,o){for(var d in s)d!=="default"&&!Object.prototype.hasOwnProperty.call(o,d)&&t(o,s,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.Token=void 0,i(Ye(),e),i(et(),e),i(ee(),e),i(L(),e);var r=te();Object.defineProperty(e,"Token",{enumerable:!0,get:function(){return r.Token}})}});var b1=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);var ye=new TextEncoder;async function tt(){return globalThis.crypto??(await import("node:crypto")).webcrypto}var it=/[^\S\r\n]*\r?\n[^\S\r\n]+/g;function pe(e){return e.replaceAll(it," ")}function k(e){if(typeof e=="number")return e.toString();if(!e)return"";if(typeof e=="string")return pe(e).trim();if(Array.isArray(e))return e.map(t=>{if(t==null)return"";if(typeof t=="number")return t.toString();if(typeof t=="string")return pe(t).trim();throw new Error(`Invalid header value type ${t}`)}).join(", ");throw new Error(`Invalid header value type ${e}`)}function q(e){return Object.entries(e).reduce((t,[i,r])=>(i==="__proto__"||(t[i.toLowerCase()]=r),t),{})}function he(e,t){t=t.toLowerCase();for(let[i,r]of Object.entries(e))if(i.toLowerCase()===t)return r}function rt(e){return typeof e=="number"?e.toString():typeof e=="string"?e.toLowerCase():""}function Y(e){return e.reduce((t,i,r)=>{if(r%2===0){if(typeof i!="string")throw new Error(`Invalid header key type '${typeof i}' of ${i}`);if(i.toLowerCase()in t)return t;t[i.toLowerCase()]=[]}else t[rt(e[r-1])].push(i==null?"":i.toString());return t},{})}function _(e){if("rawHeaders"in e&&e.rawHeaders)return Y(e.rawHeaders.flat(1));if("getHeaders"in e&&typeof e.getHeaders=="function")return q(e.getHeaders());if("headers"in e&&e.headers){if(typeof e.headers!="object")throw new Error("headers must be an object");return Ae(e.headers)?Y(Array.from(e.headers.entries()).flat(1)):Array.isArray(e.headers)?Y(e.headers.flat(1)):q(e.headers)}throw new Error("Cannot get headers from request object")}function Ie(e,t,i){if("setHeader"in e&&typeof e.setHeader=="function")e.setHeader(t,i.toString());else if("headers"in e&&typeof e.headers=="object")Ae(e.headers)?e.headers.set(t,i.toString()):e.headers[t]=i.toString();else throw new Error("Cannot set headers to request object")}function Se(e){return"Response"in globalThis&&typeof e=="object"&&e instanceof Response}function st(e){return"Request"in globalThis&&typeof e=="object"&&e instanceof Request}function Ae(e){return"Headers"in globalThis&&typeof e=="object"&&e instanceof Headers}function be(e){let t=new Uint8Array(e);return T.stringify(t)}var ct={hash:"SHA-256",ec:"DSA"};function nt(e,t){return{hash:t,...e}}function ie(e){return e instanceof Map?new Map(e):Array.isArray(e)?new Map(e):new Map(Object.entries(e))}function fe(e){let t=ie(e);for(let[i,r]of t.entries())r===void 0&&t.delete(i);return t}var m=V(z(),1),ot={signature:"dict","signature-input":"dict","accept-signature":"dict","content-digest":"dict","repr-digest":"dict","want-content-digest":"dict","want-repr-digest":"dict","accept-ch":"list","proxy-status":"list","cache-status":"list",priority:"dict","client-cert":"bs","client-cert-chain":"list"},at=["@method","@authority","@scheme","@target-uri","@request-target","@path","@query"],dt=["@status"],Ee=class{isRequest(){return this.response===null}isResponse(){return this.response!==null}constructor(e,t="https",i={},r,s=null){if(s&&!Array.isArray(s))throw new Error("requiredComponents must be an array");if(s&&s.length>0?this.requiredComponents=s.map(c=>{let a;return c.startsWith('"')?a=m.parseItem(c):a=[c,new Map],m.serializeItem(a)}):this.requiredComponents=null,this.sfvTypeDictionary=q({...ot,...i}),"req"in e)this.response=e,this.responseHeaders=_(e),this.request=e.req,this.requestHeaders=_(this.request);else if(Se(e)){if(!r)throw new Error("Request is not provided");this.response=e,this.responseHeaders=_(e),this.request=r,this.requestHeaders=_(this.request)}else this.response=null,this.responseHeaders=null,this.request=e,this.requestHeaders=_(e);if(!this.request.url)throw new Error("Request URL is empty");if(!this.request.method)throw new Error("Request method is empty");if(!("signature-input"in this.requestHeaders))throw new Error("Signature-Input header is not found in request");if(this.requestSignatureInput=m.parseDictionary(k(this.requestHeaders["signature-input"])),this.isResponse()){if(!this.responseHeaders)throw new Error("responseHeaders is empty");if(!("signature-input"in this.responseHeaders))throw new Error("Signature-Input header is not found in response");this.responseSignatureInput=m.parseDictionary(k(this.responseHeaders["signature-input"]))}this.sfvTypeDictionary=q(i),this.scheme=this.request.url.startsWith("/")?t:new URL(this.request.url).protocol.replace(":","");let o="httpVersionMajor"in this.request&&this.request.httpVersionMajor===2?this.requestHeaders[":authority"]:this.requestHeaders.host;if(!st(this.request)&&!o)throw new Error("Host header is empty");let d=k(o);this.targetUri=this.request.url.startsWith("/")?new URL(this.request.url,`${t}://${d}`).href:this.request.url,this.url=new URL(this.targetUri)}get(e,t=new Map){let i=ie(t),r=m.serializeItem([e,i]);if(!e)throw new Error(`Type is empty: ${r}`);if(e.startsWith('"'))if(e.endsWith('"'))e=e.slice(1,-1);else throw new Error(`Invalid component type string: ${r}`);if(this.isResponse()&&i.get("req")!==!0&&at.includes(e))throw new Error(`component is not available in response (must use with ;req, or provided object is unintentionally treated as response (existing req prop.)): ${e}`);if(this.isRequest()&&dt.includes(e))throw new Error(`component is not available in request (provided object is unintentionally treated as request (including req prop.)): ${e}`);if(this.isRequest()&&i.get("req")===!0)throw new Error("req param is not available in request (provided object is treated as request, please set req param with Request)");let s=this.isRequest()||i.get("req")===!0;if(e==="@signature-params")throw new Error(`@signature-params is not available in get method: ${r}`);if(e==="@method"){if(!this.request.method)throw new Error("Request method is empty");return this.request.method.toUpperCase()}else{if(e==="@authority")return this.url.host;if(e==="@scheme")return this.scheme.toLocaleLowerCase();if(e==="@target-uri")return this.targetUri;if(e==="@request-target"){if(!this.request.method)throw new Error("Request method is empty");return`${this.request.method.toLowerCase()} ${this.url.pathname}`}else{if(e==="@path")return this.url.pathname;if(e==="@query")return this.url.search;if(e==="@query-param"){let o=i.get("name");if(o===void 0)throw new Error("Query parameter name not found or invalid");let d=this.url.searchParams.get(o.toString());if(d===null)throw new Error(`Query parameter not found: ${o} (${r})`);return d}else if(e==="@status"){if(!this.response)throw new Error("response is empty (@status)");return Se(this.response)?this.response.status.toString():this.response.statusCode.toString()}else{if(e.startsWith("@"))throw new Error(`Unknown derived component: ${e}`);{let o=i.get("key"),d=i.get("sf")===!0,c=i.get("bs")===!0,a=i.get("tr")===!0;if([o,d,c].filter(S=>S).length>1)throw new Error(`Invalid component: ${r} (multiple params are specified)`);let u=(()=>{if(s)if(a){if("trailers"in this.request&&this.request.trailers)return he(this.request.trailers,e);throw new Error(`Trailers not found in request object (${r})`)}else return this.requestHeaders[e];else{if(!this.response||!this.responseHeaders)throw new Error("response is not provided");if(a){if("trailers"in this.response&&this.response.trailers)return he(this.response.trailers,e);throw new Error(`Trailers not found in response object (${r})`)}else return this.responseHeaders[e]}})();if(u===void 0)throw new Error(`Header not found: ${r}`);if(d){if(!(e in this.sfvTypeDictionary))throw new Error(`Type not found in SFV type dictionary: ${e}`);let S=k(u);if(this.sfvTypeDictionary[e]==="dict")return m.serializeDictionary(m.parseDictionary(S));if(this.sfvTypeDictionary[e]==="list")return m.serializeList(m.parseList(S));if(["item","bs","int","dec","str","bool","token"].includes(this.sfvTypeDictionary[e]))return m.serializeItem(m.parseItem(S))}if(o){if(!(e in this.sfvTypeDictionary))throw new Error(`key specified but type unknown (Type not found in SFV type dictionary): ${r}`);if(typeof u!="string")throw new Error(`Key specified but value is not a string: ${r}`);if(this.sfvTypeDictionary[e]==="dict"){let n=m.parseDictionary(u).get(o);if(n===void 0)throw new Error(`Key not found in dictionary: ${o} (${r})`);return Array.isArray(n[0])?m.serializeList([n]):m.serializeItem(n)}else throw new Error(`"${e}" is not dict: ${this.sfvTypeDictionary[e]} (${r})`)}if(c){let S=(Array.isArray(u)?u:[u]).map(n=>{if(typeof n!="string")throw new Error(`Invalid header value type: ${typeof n}`);return[new m.ByteSequence(be(ye.encode(k(n)).buffer)),new Map]});return m.serializeList(S)}return k(u)}}}}}generate(e){let t=this.isRequest()?this.requestSignatureInput?.get(e):this.responseSignatureInput?.get(e);if(!t)throw new Error(`label not found: ${e}`);if(!Array.isArray(t[0]))throw new Error(`item is not InnerList: ${m.serializeDictionary(new Map([[e,t]]))}`);let i=new Map;for(let r of t[0]){let s=r[0];if(s.startsWith('"'))if(s.endsWith('"'))s=s.slice(1,-1);else throw new Error(`Invalid component identifier name: ${s}`);r[0]=s;let o=m.serializeItem(r);if(i.has(o))throw new Error(`Duplicate key: ${s}`);i.set(o,this.get(s,r[1]))}if(this.requiredComponents){for(let r of this.requiredComponents)if(!i.has(r))throw new Error(`Required component not found: ${r}`)}return i.set('"@signature-params"',m.serializeInnerList(t)),Array.from(i.entries(),([r,s])=>`${r}: ${s}`).join(`
4
+ `)}};function Te(e){let t=ie(e),i=new Map;for(let[r,s]of t){if(!Array.isArray(s))throw new Error("item is not array");let[o,d]=s;i.set(r,[o.map(c=>typeof c=="string"?[c,new Map]:[c[0],fe(c[1])]),fe(d)])}return m.serializeDictionary(i)}var w1=V(z(),1);async function Pe(e,t,i=ct){let r=await(await tt()).subtle.sign(nt(e.algorithm,i.hash),e,ye.encode(t));return be(r)}var M1=V(z(),1);function we(e){let t=e.toUpperCase();if(t==="SHA-256")return"sha-256";if(t==="SHA-512")return"sha-512";throw new Error(`Unsupported hash algorithm: ${e}`)}var k1=V(z(),1);async function j(){return globalThis.crypto??(await import("node:crypto")).webcrypto}var De=e=>{let t=new Uint8Array(e);return T.stringify(t)};var lt=async(e,t="SHA-256")=>(t==="SHA"&&(t="SHA-1"),typeof e=="string"&&(e=new TextEncoder().encode(e)),(await j()).subtle.digest(t,e)),Me=async e=>{let t="SHA-256",i=await lt(e.body,t).then(De),r=`${t}=${i}`,s=`${we(t)}=:${i}:`;return{digest:r,contentDigest:s}};var ut=/^[\x20-\x7E]*$/,pt=/^[a-zA-Z*][:/!#$%&'*+\-.^_`|~A-Za-z0-9]*$/,ht=/^[a-z*][*\-_.a-z0-9]*$/;function re(e){return ut.test(e)}function ve(e){return pt.test(e)}function Ne(e){return ht.test(e)}function ke(e){return Array.isArray(e[0])}function Ke(e){let t=new Uint8Array(e),i="";for(let r of t)i+=String.fromCharCode(r);return btoa(i)}function se(e){let t=atob(e),i=t.length,r=new Uint8Array(i);for(let s=0;s<i;s++)r[s]=t.charCodeAt(s);return r.buffer}var R=class{constructor(t){if(!ve(t))throw new TypeError("Invalid character in Token string. Tokens must start with *, A-Z and the rest of the string may only contain a-z, A-Z, 0-9, :/!#$%&'*+-.^_`|~");this.value=t}toString(){return this.value}};var O=class{constructor(t){this.value=t}toString(){return this.value}};var w=class extends Error{};function Re(e){let t=e instanceof Map?e.entries():Object.entries(e);return Array.from(t).map(([i,r])=>{let s=xe(i);return Array.isArray(r)?r[0]===!0?s+Q(r[1]):ke(r)?s+"="+St(r):s+"="+Oe(r):r===!0?s:s+"="+$(r)}).join(", ")}function Oe(e,t){return Array.isArray(e)?$(e[0])+Q(e[1]):$(e)+(t?Q(t):"")}function St(e){return`(${e[0].map(t=>Oe(t)).join(" ")})${Q(e[1])}`}function $(e){if(typeof e=="number")return Number.isInteger(e)?ft(e):mt(e);if(typeof e=="string")return gt(e);if(e instanceof R)return At(e);if(e instanceof ArrayBuffer)return It(e);if(e instanceof O)return Ct(e);if(e instanceof Date)return bt(e);if(typeof e=="boolean")return yt(e);throw new w(`Cannot serialize values of type ${typeof e}`)}function ft(e){if(e<-999999999999999||e>999999999999999)throw new w("Structured headers can only encode integers in the range range of -999,999,999,999,999 to 999,999,999,999,999 inclusive");return e.toString()}function mt(e){let t=e.toFixed(3).replace(/0+$/,"");if(t.split(".")[0].replace("-","").length>12)throw new w("Fractional numbers are not allowed to have more than 12 significant digits before the decimal point");return t}function gt(e){if(!re(e))throw new w("Only ASCII strings may be serialized");return`"${e.replace(/("|\\)/g,t=>"\\"+t)}"`}function Ct(e){let t='%"',i=new TextEncoder;for(let r of i.encode(e.toString()))r===37||r===34||r<=31||r>=127?t+="%"+r.toString(16):t+=String.fromCharCode(r);return t+'"'}function yt(e){return e?"?1":"?0"}function It(e){return`:${Ke(e)}:`}function At(e){return e.toString()}function bt(e){return"@"+Math.floor(e.getTime()/1e3)}function Q(e){return Array.from(e).map(([t,i])=>{let r=";"+xe(t);return i!==!0&&(r+="="+$(i)),r}).join("")}function xe(e){if(!Ne(e))throw new w("Keys in dictionaries must only contain lowercase letter, numbers, _-*. and must start with a letter or *");return e}var Be=async e=>{let{request:t,authenticationType:i,accessKey:r,secretKey:s,creationDate:o}=e,d={key_ops:["sign","verify"],ext:!0,kty:"oct",k:s,alg:"HS256"},c=await(await j()).subtle.importKey("jwk",d,{name:"HMAC",hash:"SHA-256"},!0,["sign","verify"]),a=new Map,u=new Map;a.set(i,c),u.set(i,[["x-timestamp","@authority","content-type","content-digest","content-length"],{keyid:r,created:o,alg:"hmac-sha256"}]);let S=Te(u);Ie(t,"Signature-Input",S);let n=new Ee(t),p=(n.isRequest()?n.requestSignatureInput:n.responseSignatureInput)?.keys();if(!p)throw new Error("signaturesEntries is undefined");let f=new Map,y=new Map;for(let I of p){let N=n.generate(I),l=a.get(I);if(!l)throw new Error(`key not found: ${I}`);y.set(I,N),f.set(I,[se(await Pe(l,N,{hash:"SHA-256",ec:"DSA"})),new Map])}let W=Re(f);return{signatureInputHeader:S,signatureHeader:W}};function _e(e){return{async onRequest({request:t}){let i=t.clone(),r=i.url,s=await i.arrayBuffer()??JSON.stringify({}),o=i.method??"POST",d=await X.generateDigestHeaders({body:s}),c={headers:{"X-Timestamp":Date.now().toString(),Host:new URL(r).host,"Content-Type":i.headers.get("Content-Type")??"application/json","Content-Length":i.headers.get("Content-Length")??s.byteLength.toString(),Digest:d.digest,"Content-Digest":d.contentDigest},body:s.toString(),method:o,url:r},{signatureHeader:a,signatureInputHeader:u}=await X.generateSignatureHeader({request:c,authenticationType:"team",accessKey:e.accessKey,secretKey:Buffer.from(e.secretKey,"hex").toString("base64"),creationDate:Math.floor(Date.now()/1e3)});return t.headers.set("Signature",a),t.headers.set("Signature-Input",u),t.headers.set("X-Timestamp",c.headers["X-Timestamp"]),t.headers.set("Content-Type",c.headers["Content-Type"]),t.headers.set("Digest",c.headers.Digest),t.headers.set("Content-Digest",c.headers["Content-Digest"]),t}}}var g=class extends Error{statusCode;code;constructor(t,i,r){super(t),this.statusCode=i,this.code=r,this.name="SubnotoError"}};function Xe(e){return{async onRequest({request:t}){if(!t.url.includes("/tunnel/")&&!t.url.includes("/public/")||t.url.includes("/tunnel/session"))return t;try{await e.ensureSession();let i=t.clone(),r=Buffer.from(await i.arrayBuffer());if(!r||r.byteLength===0)throw new g("EMPTY_REQUEST_BODY");let s=e.encryptRequest(r);if(!s||s.byteLength===0)throw new g("Empty encrypted message");let o=e.getSessionId();if(!o)throw new g("Session ID not available");let d=new Headers(i.headers);d.set("X-Session-Id",o);let c=i.headers.get("Content-Type");c&&c.includes("multipart/form-data")&&d.set("X-Original-Content-Type",c),d.set("Content-Type","application/octet-stream"),d.set("Content-Length",s.byteLength.toString());let a=await e.getCookies(i.url);return a&&d.set("Cookie",a),new Request(i.url,{method:i.method,headers:d,body:s,mode:i.mode,credentials:i.credentials,cache:i.cache,redirect:i.redirect,referrer:i.referrer,referrerPolicy:i.referrerPolicy,integrity:i.integrity,keepalive:i.keepalive})}catch(i){throw console.error(`Error in tunnel middleware for ${t.url}:`,i),i}},async onResponse({response:t,request:i}){if(!i.url.includes("/tunnel/")&&!i.url.includes("/public/")||i.url.includes("/tunnel/session"))return t;try{if(!(t.headers.get("x-subnoto-encrypted-response")?.includes("true")&&t.headers.get("content-type")?.includes("application/octet-stream")))return t;let s=t.clone(),o=Buffer.from(await s.arrayBuffer());if(o.byteLength===0)throw new g("Empty encrypted response");let d=e.decryptResponse(o),c=new Headers(t.headers);return c.get("x-subnoto-content-type-response")?.includes("application/octet-stream")?(c.set("Content-Type","application/octet-stream"),c.delete("x-subnoto-encrypted-response"),new Response(d,{status:t.status,statusText:t.statusText,headers:c})):(c.set("Content-Type","application/json"),c.delete("x-subnoto-encrypted-response"),c.delete("x-subnoto-content-type-response"),new Response(d,{status:t.status,statusText:t.statusText,headers:c}))}catch(r){throw console.error(`Error decrypting response for ${i.url}:`,r),r}}}}var ne={};de(ne,{PutIncomingMessageResult:()=>wt,WasmClientSession:()=>v,__wbg___wbindgen_is_function_ee8a6c5833c90377:()=>Dt,__wbg___wbindgen_is_object_c818261d21f283a4:()=>Mt,__wbg___wbindgen_is_string_fbb76cb2940daafd:()=>vt,__wbg___wbindgen_is_undefined_2d472862bd29a478:()=>Nt,__wbg___wbindgen_throw_b855445ff6a94295:()=>kt,__wbg_call_525440f72fbfc0ea:()=>Kt,__wbg_call_e762c39fa8ea36bf:()=>Rt,__wbg_crypto_574e78ad8b13b65f:()=>Ot,__wbg_getRandomValues_b8f5dbd5f3995a9e:()=>xt,__wbg_length_69bca3cb64fc8748:()=>Bt,__wbg_msCrypto_a61aeb35a24c1329:()=>_t,__wbg_new_no_args_ee98eee5275000a4:()=>Xt,__wbg_new_with_length_01aa0dc35aa13543:()=>Ft,__wbg_node_905d3e251edff8a2:()=>Ht,__wbg_now_793306c526e2e3b6:()=>Gt,__wbg_process_dc0fbacc7c1c06f7:()=>Wt,__wbg_prototypesetcall_2a6620b6922694b2:()=>Ut,__wbg_randomFillSync_ac0988aba3254290:()=>qt,__wbg_require_60cc747a6bc5215a:()=>Vt,__wbg_set_wasm:()=>Tt,__wbg_static_accessor_GLOBAL_89e1d9ac6a1b250e:()=>Lt,__wbg_static_accessor_GLOBAL_THIS_8b530f326a9e48ac:()=>zt,__wbg_static_accessor_SELF_6fdf4b64710cc91b:()=>jt,__wbg_static_accessor_WINDOW_b45bfc5a37f6cfa2:()=>$t,__wbg_subarray_480600f3d6a9f26c:()=>Qt,__wbg_versions_c01dfd4722a88165:()=>Zt,__wbindgen_cast_2241b6af4c4b2941:()=>Jt,__wbindgen_cast_cb9088102bce6b30:()=>Yt,__wbindgen_init_externref_table:()=>e1});var h,Et;function Tt(e,t){h=e,Et=t}var Z=null;function ce(){return(Z===null||Z.byteLength===0)&&(Z=new Uint8Array(h.memory.buffer)),Z}var He=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});He.decode();function Pt(e,t){return He.decode(ce().subarray(e,e+t))}function F(e,t){return e=e>>>0,Pt(e,t)}function H(e){let t=h.__externref_table_alloc();return h.__wbindgen_externrefs.set(t,e),t}function G(e,t){try{return e.apply(this,t)}catch(i){let r=H(i);h.__wbindgen_exn_store(r)}}function M(e,t){return e=e>>>0,ce().subarray(e/1,e/1+t)}function B(e){return e==null}var D=0;function x(e,t){let i=t(e.length*1,1)>>>0;return ce().set(e,i/1),D=e.length,i}function P(e){let t=h.__wbindgen_externrefs.get(e);return h.__externref_table_dealloc(e),t}var wt=Object.freeze({NoIncomingMessageExpected:0,0:"NoIncomingMessageExpected",Success:1,1:"Success"}),Fe=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>h.__wbg_wasmclientsession_free(e>>>0,1)),v=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,Fe.unregister(this),t}free(){let t=this.__destroy_into_raw();h.__wbg_wasmclientsession_free(t,0)}constructor(t,i){var r=B(i)?0:x(i,h.__wbindgen_malloc),s=D;let o=h.wasmclientsession_new(B(t)?16777215:t?1:0,r,s);if(o[2])throw P(o[1]);return this.__wbg_ptr=o[0]>>>0,Fe.register(this,this.__wbg_ptr,this),this}is_open(){return h.wasmclientsession_is_open(this.__wbg_ptr)!==0}write(t){let i=x(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_write(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=M(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}read(t){let i=x(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_read(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=M(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}write_buffer(t){let i=x(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_write_buffer(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=M(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}read_buffer(t){let i=x(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_read_buffer(this.__wbg_ptr,i,r);if(s[3])throw P(s[2]);var o=M(s[0],s[1]).slice();return h.__wbindgen_free(s[0],s[1]*1,1),o}put_incoming_message(t){let i=x(t,h.__wbindgen_malloc),r=D,s=h.wasmclientsession_put_incoming_message(this.__wbg_ptr,i,r);if(s[2])throw P(s[1]);return s[0]}get_outgoing_message(){let t=h.wasmclientsession_get_outgoing_message(this.__wbg_ptr);if(t[3])throw P(t[2]);let i;return t[0]!==0&&(i=M(t[0],t[1]).slice(),h.__wbindgen_free(t[0],t[1]*1,1)),i}get_attestation_results_json(){let t=h.wasmclientsession_get_attestation_results_json(this.__wbg_ptr);if(t[3])throw P(t[2]);let i;return t[0]!==0&&(i=F(t[0],t[1]).slice(),h.__wbindgen_free(t[0],t[1]*1,1)),i}get_attestation_status(){let t,i;try{let r=h.wasmclientsession_get_attestation_status(this.__wbg_ptr);return t=r[0],i=r[1],F(r[0],r[1])}finally{h.__wbindgen_free(t,i,1)}}};Symbol.dispose&&(v.prototype[Symbol.dispose]=v.prototype.free);function Dt(e){return typeof e=="function"}function Mt(e){let t=e;return typeof t=="object"&&t!==null}function vt(e){return typeof e=="string"}function Nt(e){return e===void 0}function kt(e,t){throw new Error(F(e,t))}function Kt(){return G(function(e,t,i){return e.call(t,i)},arguments)}function Rt(){return G(function(e,t){return e.call(t)},arguments)}function Ot(e){return e.crypto}function xt(){return G(function(e,t){e.getRandomValues(t)},arguments)}function Bt(e){return e.length}function _t(e){return e.msCrypto}function Xt(e,t){return new Function(F(e,t))}function Ft(e){return new Uint8Array(e>>>0)}function Ht(e){return e.node}function Gt(){return Date.now()}function Wt(e){return e.process}function Ut(e,t,i){Uint8Array.prototype.set.call(M(e,t),i)}function qt(){return G(function(e,t){e.randomFillSync(t)},arguments)}function Vt(){return G(function(){return module.require},arguments)}function Lt(){let e=typeof global>"u"?null:global;return B(e)?0:H(e)}function zt(){let e=typeof globalThis>"u"?null:globalThis;return B(e)?0:H(e)}function jt(){let e=typeof self>"u"?null:self;return B(e)?0:H(e)}function $t(){let e=typeof window>"u"?null:window;return B(e)?0:H(e)}function Qt(e,t,i){return e.subarray(t>>>0,i>>>0)}function Zt(e){return e.versions}function Jt(e,t){return F(e,t)}function Yt(e,t){return M(e,t)}function e1(){let e=h.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}import{readFileSync as t1}from"node:fs";var oe={};oe["./oak_session_wasm_nodejs_bg.js"]=ne;var i1=new URL("oak_session_wasm_nodejs_bg.wasm",import.meta.url),r1=t1(i1),Ge=new WebAssembly.Module(r1),We=new WebAssembly.Instance(Ge,oe).exports;oe["./oak_session_wasm_nodejs_bg.js"].__wbg_set_wasm(We,Ge);We.__wbindgen_start();import{CookieJar as s1}from"tough-cookie";var J=class{session=null;sessionId=null;config;handshakeInProgress=!1;cookieJar;constructor(t){this.config=t,this.cookieJar=new s1}async ensureSession(){if(!(this.session&&this.session.is_open())){if(this.handshakeInProgress){for(;this.handshakeInProgress;)await new Promise(t=>setTimeout(t,50));return}await this.handshake()}}async handshake(){this.handshakeInProgress=!0;try{let t=this.config.unattested??!1;this.session=new v(t,t?void 0:this.config.attesterKey);let i=4,r=0;if(!this.session)throw new g("Failed to create session");for(;!this.session.is_open()&&r<i;){r++;let s=this.session.get_outgoing_message();if(!s||this.session.is_open())break;let o=`${this.config.apiBaseUrl}/tunnel/session`,d={"Content-Type":"application/octet-stream"};this.sessionId&&(d["X-Session-Id"]=this.sessionId);let c=await this.cookieJar.getCookieString(o);c&&(d.Cookie=c);let a=await fetch(o,{method:"POST",body:s,headers:d});if(!this.sessionId){let n=a.headers.get("X-Session-Id");if(!n)throw new g("No session ID received from server");this.sessionId=n}if(!a.ok){let n=await a.text().catch(()=>"Unable to read error");throw new g(`Handshake failed with status ${a.status}: ${n}`,a.status)}let u=a.headers.getSetCookie?.()||[];for(let n of u)await this.cookieJar.setCookie(n,o);let S=await a.arrayBuffer();if(S.byteLength>0)this.session.put_incoming_message(Buffer.from(S));else throw new g("Empty response from server during handshake")}if(!this.session.is_open()||!this.sessionId)throw new g("Failed to establish session after handshake")}finally{this.handshakeInProgress=!1}}encryptRequest(t){if(!this.session||!this.session.is_open())throw new g("Session not open");try{let i=typeof t=="string"?Buffer.from(t,"utf-8"):t,r=this.session.write(i);return Buffer.from(r)}catch(i){throw new g(`Encryption failed: ${i instanceof Error?i.message:"Unknown error"}`)}}decryptResponse(t){if(!this.session||!this.session.is_open())throw new g("Session not open");try{let i=Buffer.isBuffer(t)?t:Buffer.from(t),r=this.session.read(i);return Buffer.from(r)}catch(i){throw new g(`Decryption failed: ${i instanceof Error?i.message:"Unknown error"}`)}}getSessionId(){return this.sessionId}getCookies(t){return this.cookieJar.getCookieString(t)}destroy(){this.session=null,this.sessionId=null}getAttestationResults(){return this.session?this.session.get_attestation_results_json()??null:null}getAttestationStatus(){return this.session?this.session.get_attestation_status()??null:null}};function Ue(e){let t=c1({baseUrl:e.apiBaseUrl}),i=new J(e);return t.use(Xe(i)),t.use(_e({accessKey:e.accessKey,secretKey:e.secretKey})),{client:t,sessionManager:i}}async function qe(e,t){let{workspaceUuid:i,fileBuffer:r,envelopeTitle:s}=t,o=new Blob([new Uint8Array(r)],{type:"application/pdf"}),d=await e.POST("/public/envelope/create-from-file",{body:{workspaceUuid:i,envelopeTitle:s,file:o},bodySerializer:c=>{let a=new FormData;return a.append("workspaceUuid",c.workspaceUuid),a.append("envelopeTitle",c.envelopeTitle),a.append("file",c.file,"document.pdf"),a}});if(d.error)throw new g(`Failed to upload document: ${JSON.stringify(d.error)}`,d.response?.status,typeof d.error=="object"&&"code"in d.error?String(d.error.code):void 0);return{envelopeUuid:d.data.envelopeUuid,documentUuid:d.data.documentUuid}}var ae=class{client;sessionManager;constructor(t){let{client:i,sessionManager:r}=Ue(t);this.client=i,this.sessionManager=r}get GET(){return this.client.GET}get POST(){return this.client.POST}get PUT(){return this.client.PUT}get DELETE(){return this.client.DELETE}get PATCH(){return this.client.PATCH}uploadDocument(t){return qe(this,t)}getAttestationStatus(){let t=this.sessionManager.getAttestationStatus();return t?JSON.parse(t):null}getAttestationResults(){let t=this.sessionManager.getAttestationResults();return t?JSON.parse(t):null}};export{ae as SubnotoClient,g as SubnotoError};
@@ -0,0 +1,63 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export enum PutIncomingMessageResult {
4
+ NoIncomingMessageExpected = 0,
5
+ Success = 1,
6
+ }
7
+ export class WasmClientSession {
8
+ free(): void;
9
+ [Symbol.dispose](): void;
10
+ constructor(unattested?: boolean | null, attester_key?: Uint8Array | null);
11
+ /**
12
+ * Checks whether session is ready to send and receive encrypted messages.
13
+ * Session becomes ready once remote attestation and crypto handshake have
14
+ * been successfully finished.
15
+ */
16
+ is_open(): boolean;
17
+ /**
18
+ * Encrypts `plaintext` and returns the encrypted message as bytes.
19
+ * For use after handshake is complete.
20
+ */
21
+ write(plaintext: Uint8Array): Uint8Array;
22
+ /**
23
+ * Decrypts an encrypted message and returns the plaintext.
24
+ * For use after handshake is complete.
25
+ */
26
+ read(encrypted_data: Uint8Array): Uint8Array;
27
+ /**
28
+ * Encrypts `plaintext` and returns the encrypted message as a Buffer.
29
+ * Alias for write() for Node.js Buffer compatibility.
30
+ */
31
+ write_buffer(plaintext: Uint8Array): Uint8Array;
32
+ /**
33
+ * Decrypts an encrypted message and returns the plaintext as a Buffer.
34
+ * Alias for read() for Node.js Buffer compatibility.
35
+ */
36
+ read_buffer(encrypted_data: Uint8Array): Uint8Array;
37
+ /**
38
+ * Puts a handshake message received from the peer into the state-machine.
39
+ * Only for use during handshake phase.
40
+ *
41
+ * The message is a byte-encoded protobuf message of the type
42
+ * `type.googleapis.com/oak.session.v1.SessionResponse`.
43
+ */
44
+ put_incoming_message(incoming_message: Uint8Array): PutIncomingMessageResult;
45
+ /**
46
+ * Gets the next handshake message that needs to be sent to the peer.
47
+ * Only for use during handshake phase.
48
+ *
49
+ * The message is a byte-encoded protobuf message of the type
50
+ * `type.googleapis.com/oak.session.v1.SessionRequest`.
51
+ */
52
+ get_outgoing_message(): Uint8Array | undefined;
53
+ /**
54
+ * Gets the attestation results as a JSON string.
55
+ * Returns None if no attestation has been performed yet.
56
+ */
57
+ get_attestation_results_json(): string | undefined;
58
+ /**
59
+ * Gets the attestation status as a JSON string with status and reason fields.
60
+ * Returns JSON with "status": "None" if no attestation has been performed yet.
61
+ */
62
+ get_attestation_status(): string;
63
+ }
@@ -0,0 +1,17 @@
1
+
2
+ let imports = {};
3
+ import * as import0 from './oak_session_wasm_nodejs_bg.js';
4
+ imports['./oak_session_wasm_nodejs_bg.js'] = import0;
5
+
6
+ import { readFileSync } from 'node:fs';
7
+
8
+ const wasmUrl = new URL('oak_session_wasm_nodejs_bg.wasm', import.meta.url);
9
+ const wasmBytes = readFileSync(wasmUrl);
10
+ const wasmModule = new WebAssembly.Module(wasmBytes);
11
+ const wasm = new WebAssembly.Instance(wasmModule, imports).exports;
12
+ export { wasm as __wasm };
13
+
14
+ imports["./oak_session_wasm_nodejs_bg.js"].__wbg_set_wasm(wasm, wasmModule);
15
+ wasm.__wbindgen_start();
16
+
17
+ export * from "./oak_session_wasm_nodejs_bg.js";
@@ -0,0 +1,406 @@
1
+ let wasm;
2
+ let wasmModule;
3
+ export function __wbg_set_wasm(exports, module) {
4
+ wasm = exports;
5
+ wasmModule = module;
6
+ }
7
+
8
+
9
+ let cachedUint8ArrayMemory0 = null;
10
+
11
+ function getUint8ArrayMemory0() {
12
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
13
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
14
+ }
15
+ return cachedUint8ArrayMemory0;
16
+ }
17
+
18
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
19
+
20
+ cachedTextDecoder.decode();
21
+
22
+ function decodeText(ptr, len) {
23
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
24
+ }
25
+
26
+ function getStringFromWasm0(ptr, len) {
27
+ ptr = ptr >>> 0;
28
+ return decodeText(ptr, len);
29
+ }
30
+
31
+ function addToExternrefTable0(obj) {
32
+ const idx = wasm.__externref_table_alloc();
33
+ wasm.__wbindgen_externrefs.set(idx, obj);
34
+ return idx;
35
+ }
36
+
37
+ function handleError(f, args) {
38
+ try {
39
+ return f.apply(this, args);
40
+ } catch (e) {
41
+ const idx = addToExternrefTable0(e);
42
+ wasm.__wbindgen_exn_store(idx);
43
+ }
44
+ }
45
+
46
+ function getArrayU8FromWasm0(ptr, len) {
47
+ ptr = ptr >>> 0;
48
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
49
+ }
50
+
51
+ function isLikeNone(x) {
52
+ return x === undefined || x === null;
53
+ }
54
+
55
+ let WASM_VECTOR_LEN = 0;
56
+
57
+ function passArray8ToWasm0(arg, malloc) {
58
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
59
+ getUint8ArrayMemory0().set(arg, ptr / 1);
60
+ WASM_VECTOR_LEN = arg.length;
61
+ return ptr;
62
+ }
63
+
64
+ function takeFromExternrefTable0(idx) {
65
+ const value = wasm.__wbindgen_externrefs.get(idx);
66
+ wasm.__externref_table_dealloc(idx);
67
+ return value;
68
+ }
69
+ /**
70
+ * @enum {0 | 1}
71
+ */
72
+ export const PutIncomingMessageResult = Object.freeze({
73
+ NoIncomingMessageExpected: 0, "0": "NoIncomingMessageExpected",
74
+ Success: 1, "1": "Success",
75
+ });
76
+
77
+ const WasmClientSessionFinalization = (typeof FinalizationRegistry === 'undefined')
78
+ ? { register: () => {}, unregister: () => {} }
79
+ : new FinalizationRegistry(ptr => wasm.__wbg_wasmclientsession_free(ptr >>> 0, 1));
80
+
81
+ export class WasmClientSession {
82
+
83
+ __destroy_into_raw() {
84
+ const ptr = this.__wbg_ptr;
85
+ this.__wbg_ptr = 0;
86
+ WasmClientSessionFinalization.unregister(this);
87
+ return ptr;
88
+ }
89
+
90
+ free() {
91
+ const ptr = this.__destroy_into_raw();
92
+ wasm.__wbg_wasmclientsession_free(ptr, 0);
93
+ }
94
+ /**
95
+ * @param {boolean | null} [unattested]
96
+ * @param {Uint8Array | null} [attester_key]
97
+ */
98
+ constructor(unattested, attester_key) {
99
+ var ptr0 = isLikeNone(attester_key) ? 0 : passArray8ToWasm0(attester_key, wasm.__wbindgen_malloc);
100
+ var len0 = WASM_VECTOR_LEN;
101
+ const ret = wasm.wasmclientsession_new(isLikeNone(unattested) ? 0xFFFFFF : unattested ? 1 : 0, ptr0, len0);
102
+ if (ret[2]) {
103
+ throw takeFromExternrefTable0(ret[1]);
104
+ }
105
+ this.__wbg_ptr = ret[0] >>> 0;
106
+ WasmClientSessionFinalization.register(this, this.__wbg_ptr, this);
107
+ return this;
108
+ }
109
+ /**
110
+ * Checks whether session is ready to send and receive encrypted messages.
111
+ * Session becomes ready once remote attestation and crypto handshake have
112
+ * been successfully finished.
113
+ * @returns {boolean}
114
+ */
115
+ is_open() {
116
+ const ret = wasm.wasmclientsession_is_open(this.__wbg_ptr);
117
+ return ret !== 0;
118
+ }
119
+ /**
120
+ * Encrypts `plaintext` and returns the encrypted message as bytes.
121
+ * For use after handshake is complete.
122
+ * @param {Uint8Array} plaintext
123
+ * @returns {Uint8Array}
124
+ */
125
+ write(plaintext) {
126
+ const ptr0 = passArray8ToWasm0(plaintext, wasm.__wbindgen_malloc);
127
+ const len0 = WASM_VECTOR_LEN;
128
+ const ret = wasm.wasmclientsession_write(this.__wbg_ptr, ptr0, len0);
129
+ if (ret[3]) {
130
+ throw takeFromExternrefTable0(ret[2]);
131
+ }
132
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
133
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
134
+ return v2;
135
+ }
136
+ /**
137
+ * Decrypts an encrypted message and returns the plaintext.
138
+ * For use after handshake is complete.
139
+ * @param {Uint8Array} encrypted_data
140
+ * @returns {Uint8Array}
141
+ */
142
+ read(encrypted_data) {
143
+ const ptr0 = passArray8ToWasm0(encrypted_data, wasm.__wbindgen_malloc);
144
+ const len0 = WASM_VECTOR_LEN;
145
+ const ret = wasm.wasmclientsession_read(this.__wbg_ptr, ptr0, len0);
146
+ if (ret[3]) {
147
+ throw takeFromExternrefTable0(ret[2]);
148
+ }
149
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
150
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
151
+ return v2;
152
+ }
153
+ /**
154
+ * Encrypts `plaintext` and returns the encrypted message as a Buffer.
155
+ * Alias for write() for Node.js Buffer compatibility.
156
+ * @param {Uint8Array} plaintext
157
+ * @returns {Uint8Array}
158
+ */
159
+ write_buffer(plaintext) {
160
+ const ptr0 = passArray8ToWasm0(plaintext, wasm.__wbindgen_malloc);
161
+ const len0 = WASM_VECTOR_LEN;
162
+ const ret = wasm.wasmclientsession_write_buffer(this.__wbg_ptr, ptr0, len0);
163
+ if (ret[3]) {
164
+ throw takeFromExternrefTable0(ret[2]);
165
+ }
166
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
167
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
168
+ return v2;
169
+ }
170
+ /**
171
+ * Decrypts an encrypted message and returns the plaintext as a Buffer.
172
+ * Alias for read() for Node.js Buffer compatibility.
173
+ * @param {Uint8Array} encrypted_data
174
+ * @returns {Uint8Array}
175
+ */
176
+ read_buffer(encrypted_data) {
177
+ const ptr0 = passArray8ToWasm0(encrypted_data, wasm.__wbindgen_malloc);
178
+ const len0 = WASM_VECTOR_LEN;
179
+ const ret = wasm.wasmclientsession_read_buffer(this.__wbg_ptr, ptr0, len0);
180
+ if (ret[3]) {
181
+ throw takeFromExternrefTable0(ret[2]);
182
+ }
183
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
184
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
185
+ return v2;
186
+ }
187
+ /**
188
+ * Puts a handshake message received from the peer into the state-machine.
189
+ * Only for use during handshake phase.
190
+ *
191
+ * The message is a byte-encoded protobuf message of the type
192
+ * `type.googleapis.com/oak.session.v1.SessionResponse`.
193
+ * @param {Uint8Array} incoming_message
194
+ * @returns {PutIncomingMessageResult}
195
+ */
196
+ put_incoming_message(incoming_message) {
197
+ const ptr0 = passArray8ToWasm0(incoming_message, wasm.__wbindgen_malloc);
198
+ const len0 = WASM_VECTOR_LEN;
199
+ const ret = wasm.wasmclientsession_put_incoming_message(this.__wbg_ptr, ptr0, len0);
200
+ if (ret[2]) {
201
+ throw takeFromExternrefTable0(ret[1]);
202
+ }
203
+ return ret[0];
204
+ }
205
+ /**
206
+ * Gets the next handshake message that needs to be sent to the peer.
207
+ * Only for use during handshake phase.
208
+ *
209
+ * The message is a byte-encoded protobuf message of the type
210
+ * `type.googleapis.com/oak.session.v1.SessionRequest`.
211
+ * @returns {Uint8Array | undefined}
212
+ */
213
+ get_outgoing_message() {
214
+ const ret = wasm.wasmclientsession_get_outgoing_message(this.__wbg_ptr);
215
+ if (ret[3]) {
216
+ throw takeFromExternrefTable0(ret[2]);
217
+ }
218
+ let v1;
219
+ if (ret[0] !== 0) {
220
+ v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
221
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
222
+ }
223
+ return v1;
224
+ }
225
+ /**
226
+ * Gets the attestation results as a JSON string.
227
+ * Returns None if no attestation has been performed yet.
228
+ * @returns {string | undefined}
229
+ */
230
+ get_attestation_results_json() {
231
+ const ret = wasm.wasmclientsession_get_attestation_results_json(this.__wbg_ptr);
232
+ if (ret[3]) {
233
+ throw takeFromExternrefTable0(ret[2]);
234
+ }
235
+ let v1;
236
+ if (ret[0] !== 0) {
237
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
238
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
239
+ }
240
+ return v1;
241
+ }
242
+ /**
243
+ * Gets the attestation status as a JSON string with status and reason fields.
244
+ * Returns JSON with "status": "None" if no attestation has been performed yet.
245
+ * @returns {string}
246
+ */
247
+ get_attestation_status() {
248
+ let deferred1_0;
249
+ let deferred1_1;
250
+ try {
251
+ const ret = wasm.wasmclientsession_get_attestation_status(this.__wbg_ptr);
252
+ deferred1_0 = ret[0];
253
+ deferred1_1 = ret[1];
254
+ return getStringFromWasm0(ret[0], ret[1]);
255
+ } finally {
256
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
257
+ }
258
+ }
259
+ }
260
+ if (Symbol.dispose) WasmClientSession.prototype[Symbol.dispose] = WasmClientSession.prototype.free;
261
+
262
+ export function __wbg___wbindgen_is_function_ee8a6c5833c90377(arg0) {
263
+ const ret = typeof(arg0) === 'function';
264
+ return ret;
265
+ };
266
+
267
+ export function __wbg___wbindgen_is_object_c818261d21f283a4(arg0) {
268
+ const val = arg0;
269
+ const ret = typeof(val) === 'object' && val !== null;
270
+ return ret;
271
+ };
272
+
273
+ export function __wbg___wbindgen_is_string_fbb76cb2940daafd(arg0) {
274
+ const ret = typeof(arg0) === 'string';
275
+ return ret;
276
+ };
277
+
278
+ export function __wbg___wbindgen_is_undefined_2d472862bd29a478(arg0) {
279
+ const ret = arg0 === undefined;
280
+ return ret;
281
+ };
282
+
283
+ export function __wbg___wbindgen_throw_b855445ff6a94295(arg0, arg1) {
284
+ throw new Error(getStringFromWasm0(arg0, arg1));
285
+ };
286
+
287
+ export function __wbg_call_525440f72fbfc0ea() { return handleError(function (arg0, arg1, arg2) {
288
+ const ret = arg0.call(arg1, arg2);
289
+ return ret;
290
+ }, arguments) };
291
+
292
+ export function __wbg_call_e762c39fa8ea36bf() { return handleError(function (arg0, arg1) {
293
+ const ret = arg0.call(arg1);
294
+ return ret;
295
+ }, arguments) };
296
+
297
+ export function __wbg_crypto_574e78ad8b13b65f(arg0) {
298
+ const ret = arg0.crypto;
299
+ return ret;
300
+ };
301
+
302
+ export function __wbg_getRandomValues_b8f5dbd5f3995a9e() { return handleError(function (arg0, arg1) {
303
+ arg0.getRandomValues(arg1);
304
+ }, arguments) };
305
+
306
+ export function __wbg_length_69bca3cb64fc8748(arg0) {
307
+ const ret = arg0.length;
308
+ return ret;
309
+ };
310
+
311
+ export function __wbg_msCrypto_a61aeb35a24c1329(arg0) {
312
+ const ret = arg0.msCrypto;
313
+ return ret;
314
+ };
315
+
316
+ export function __wbg_new_no_args_ee98eee5275000a4(arg0, arg1) {
317
+ const ret = new Function(getStringFromWasm0(arg0, arg1));
318
+ return ret;
319
+ };
320
+
321
+ export function __wbg_new_with_length_01aa0dc35aa13543(arg0) {
322
+ const ret = new Uint8Array(arg0 >>> 0);
323
+ return ret;
324
+ };
325
+
326
+ export function __wbg_node_905d3e251edff8a2(arg0) {
327
+ const ret = arg0.node;
328
+ return ret;
329
+ };
330
+
331
+ export function __wbg_now_793306c526e2e3b6() {
332
+ const ret = Date.now();
333
+ return ret;
334
+ };
335
+
336
+ export function __wbg_process_dc0fbacc7c1c06f7(arg0) {
337
+ const ret = arg0.process;
338
+ return ret;
339
+ };
340
+
341
+ export function __wbg_prototypesetcall_2a6620b6922694b2(arg0, arg1, arg2) {
342
+ Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
343
+ };
344
+
345
+ export function __wbg_randomFillSync_ac0988aba3254290() { return handleError(function (arg0, arg1) {
346
+ arg0.randomFillSync(arg1);
347
+ }, arguments) };
348
+
349
+ export function __wbg_require_60cc747a6bc5215a() { return handleError(function () {
350
+ const ret = module.require;
351
+ return ret;
352
+ }, arguments) };
353
+
354
+ export function __wbg_static_accessor_GLOBAL_89e1d9ac6a1b250e() {
355
+ const ret = typeof global === 'undefined' ? null : global;
356
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
357
+ };
358
+
359
+ export function __wbg_static_accessor_GLOBAL_THIS_8b530f326a9e48ac() {
360
+ const ret = typeof globalThis === 'undefined' ? null : globalThis;
361
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
362
+ };
363
+
364
+ export function __wbg_static_accessor_SELF_6fdf4b64710cc91b() {
365
+ const ret = typeof self === 'undefined' ? null : self;
366
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
367
+ };
368
+
369
+ export function __wbg_static_accessor_WINDOW_b45bfc5a37f6cfa2() {
370
+ const ret = typeof window === 'undefined' ? null : window;
371
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
372
+ };
373
+
374
+ export function __wbg_subarray_480600f3d6a9f26c(arg0, arg1, arg2) {
375
+ const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);
376
+ return ret;
377
+ };
378
+
379
+ export function __wbg_versions_c01dfd4722a88165(arg0) {
380
+ const ret = arg0.versions;
381
+ return ret;
382
+ };
383
+
384
+ export function __wbindgen_cast_2241b6af4c4b2941(arg0, arg1) {
385
+ // Cast intrinsic for `Ref(String) -> Externref`.
386
+ const ret = getStringFromWasm0(arg0, arg1);
387
+ return ret;
388
+ };
389
+
390
+ export function __wbindgen_cast_cb9088102bce6b30(arg0, arg1) {
391
+ // Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref("Uint8Array")`.
392
+ const ret = getArrayU8FromWasm0(arg0, arg1);
393
+ return ret;
394
+ };
395
+
396
+ export function __wbindgen_init_externref_table() {
397
+ const table = wasm.__wbindgen_externrefs;
398
+ const offset = table.grow(4);
399
+ table.set(0, undefined);
400
+ table.set(offset + 0, undefined);
401
+ table.set(offset + 1, null);
402
+ table.set(offset + 2, true);
403
+ table.set(offset + 3, false);
404
+ ;
405
+ };
406
+
Binary file
@@ -0,0 +1,21 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export const memory: WebAssembly.Memory;
4
+ export const __wbg_wasmclientsession_free: (a: number, b: number) => void;
5
+ export const wasmclientsession_new: (a: number, b: number, c: number) => [number, number, number];
6
+ export const wasmclientsession_is_open: (a: number) => number;
7
+ export const wasmclientsession_write: (a: number, b: number, c: number) => [number, number, number, number];
8
+ export const wasmclientsession_read: (a: number, b: number, c: number) => [number, number, number, number];
9
+ export const wasmclientsession_write_buffer: (a: number, b: number, c: number) => [number, number, number, number];
10
+ export const wasmclientsession_read_buffer: (a: number, b: number, c: number) => [number, number, number, number];
11
+ export const wasmclientsession_put_incoming_message: (a: number, b: number, c: number) => [number, number, number];
12
+ export const wasmclientsession_get_outgoing_message: (a: number) => [number, number, number, number];
13
+ export const wasmclientsession_get_attestation_results_json: (a: number) => [number, number, number, number];
14
+ export const wasmclientsession_get_attestation_status: (a: number) => [number, number];
15
+ export const __wbindgen_exn_store: (a: number) => void;
16
+ export const __externref_table_alloc: () => number;
17
+ export const __wbindgen_externrefs: WebAssembly.Table;
18
+ export const __wbindgen_malloc: (a: number, b: number) => number;
19
+ export const __externref_table_dealloc: (a: number) => void;
20
+ export const __wbindgen_free: (a: number, b: number, c: number) => void;
21
+ export const __wbindgen_start: () => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@subnoto/api-client",
3
3
  "private": false,
4
- "version": "2.3.7",
4
+ "version": "2.3.8",
5
5
  "description": "TypeScript SDK for Subnoto Public API",
6
6
  "author": "Subnoto",
7
7
  "homepage": "https://subnoto.com",