@decentro-dev/polkadot-sufficient-assets 0.0.4 → 0.0.5
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/package.json +1 -1
- package/packages/client/dist/chain-specs/ksmcc3/index.js +1 -63
- package/packages/client/dist/chain-specs/ksmcc3/index.mjs +1 -63
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.js +1 -45
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.mjs +1 -45
- package/packages/client/dist/chain-specs/paseo/index.js +1 -43
- package/packages/client/dist/chain-specs/paseo/index.mjs +1 -43
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.js +1 -25
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.mjs +1 -25
- package/packages/client/dist/chain-specs/polkadot/index.js +1 -62
- package/packages/client/dist/chain-specs/polkadot/index.mjs +1 -62
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.js +1 -46
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.mjs +1 -46
- package/packages/client/dist/chain-specs/rococo_v2_2/index.js +1 -31
- package/packages/client/dist/chain-specs/rococo_v2_2/index.mjs +1 -31
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.js +1 -26
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.mjs +1 -26
- package/packages/client/dist/chain-specs/westend2/index.js +1 -57
- package/packages/client/dist/chain-specs/westend2/index.mjs +1 -57
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.js +1 -45
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.mjs +1 -45
- package/packages/client/dist/index.js +1 -264
- package/packages/client/dist/index.mjs +1 -264
- package/packages/client/dist/smoldot/from-node-worker/index.js +1 -1
- package/packages/client/dist/smoldot/from-node-worker/index.mjs +1 -1
- package/packages/client/dist/smoldot/from-worker/index.js +1 -18
- package/packages/client/dist/smoldot/from-worker/index.mjs +1 -18
- package/packages/client/dist/smoldot/index.js +1 -18
- package/packages/client/dist/smoldot/index.mjs +1 -18
- package/packages/client/dist/smoldot/worker/index.js +1 -1
- package/packages/client/dist/smoldot/worker/index.mjs +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var
|
|
2
|
+
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(r,o,f,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!d.call(r,e)&&e!==f&&a(r,e,{get:()=>o[e],enumerable:!(x=b(o,e))||x.enumerable});return r},t=(r,o,f)=>(p(r,o,"default"),f&&p(f,o,"default"));var g=r=>p(a({},"__esModule",{value:!0}),r);var m={};module.exports=g(m);t(m,require("@polkadot-api/smoldot/from-node-worker"),module.exports);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
2
|
+
export*from"@polkadot-api/smoldot/from-node-worker";
|
|
@@ -1,19 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var _=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var V=(o,r)=>{for(var d in r)_(o,d,{get:r[d],enumerable:!0})},H=(o,r,d,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let f of D(r))!F.call(o,f)&&f!==d&&_(o,f,{get:()=>r[f],enumerable:!(c=q(r,f))||c.enumerable});return o};var z=o=>H(_({},"__esModule",{value:!0}),o);var K={};V(K,{startFromWorker:()=>X});module.exports=z(K);var I=class extends Error{constructor(r){super(r),this.name="AddChainError"}},x=class extends Error{constructor(){super(),this.name="AlreadyDestroyedError"}},R=class extends Error{constructor(){super(),this.name="JsonRpcDisabledError"}},E=class extends Error{constructor(r){super(r)}},k=class extends Error{constructor(){super("JSON-RPC requests queue is full")}};function b(o,r,d){return S(o,r,d),new TextDecoder().decode(o.slice(r,r+d))}function B(o,r){return S(o,r,1),o[r]}function g(o,r){return S(o,r,2),o[r]<<8|o[r+1]}function W(o,r){return S(o,r,4),(o[r]|o[r+1]<<8|o[r+2]<<16)+o[r+3]*16777216}function M(o,r,d){S(o,r,1),o[r]=d&255}function A(o,r,d){S(o,r,4),o[r+3]=d>>>24&255,o[r+2]=d>>>16&255,o[r+1]=d>>>8&255,o[r]=d&255}function S(o,r,d){if(!Number.isInteger(r)||r<0)throw new RangeError;if(r+d>o.length)throw new RangeError}var U=function(o,r,d,c){function f(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(a){try{s(c.next(a))}catch(i){u(i)}}function e(a){try{s(c.throw(a))}catch(i){u(i)}}function s(a){a.done?n(a.value):f(a.value).then(t,e)}s((c=c.apply(o,r||[])).next())})};function C(o,r,d){return U(this,void 0,void 0,function*(){let c={instance:null,currentTask:null,bufferIndices:new Array,advanceExecutionPromise:null,onShutdownExecutorOrWasmPanic:()=>{}},f={panic:(t,e)=>{let s=c.instance;c.instance=null,t>>>=0,e>>>=0;let a=b(new Uint8Array(s.exports.memory.buffer),t,e);throw d({ty:"wasm-panic",message:a,currentTask:c.currentTask}),c.onShutdownExecutorOrWasmPanic(),c.onShutdownExecutorOrWasmPanic=()=>{},new Error},chain_initialized:(t,e,s)=>{let a=c.instance,i=new Uint8Array(a.exports.memory.buffer);if(e>>>=0,s>>>=0,e===0)d({ty:"add-chain-result",chainId:t,success:!0});else{let l=b(i,e,s);d({ty:"add-chain-result",chainId:t,success:!1,error:l})}},random_get:(t,e)=>{let s=c.instance;t>>>=0,e>>>=0;let a=new Uint8Array(s.exports.memory.buffer).subarray(t,t+e);for(let i=0;i<e;i+=65536)o.getRandomValues(a.subarray(i,i+65536))},unix_timestamp_us:()=>{let t=Math.floor(Date.now());if(t<0)throw new Error("UNIX timestamp inferior to 0");return BigInt(t)*BigInt(1e3)},monotonic_clock_us:()=>{let t=o.performanceNow(),e=Math.floor(t);return BigInt(e)*BigInt(1e3)+BigInt(Math.floor((t-e)*1e3))},buffer_size:t=>c.bufferIndices[t].byteLength,buffer_copy:(t,e)=>{let s=c.instance;e=e>>>0;let a=c.bufferIndices[t];new Uint8Array(s.exports.memory.buffer).set(a,e)},advance_execution_ready:()=>{c.advanceExecutionPromise&&c.advanceExecutionPromise(),c.advanceExecutionPromise=null},json_rpc_responses_non_empty:t=>{d({ty:"json-rpc-responses-non-empty",chainId:t})},log:(t,e,s,a,i)=>{let l=c.instance;e>>>=0,s>>>=0,a>>>=0,i>>>=0;let p=new Uint8Array(l.exports.memory.buffer),h=b(p,e,s),m=b(p,a,i);d({ty:"log",level:t,message:m,target:h})},start_timer:t=>{let e=c.instance;t>2147483647&&(t=2147483647),t<1&&typeof setImmediate=="function"?setImmediate(()=>{if(c.instance)try{e.exports.timer_finished()}catch{}}):setTimeout(()=>{if(c.instance)try{e.exports.timer_finished()}catch{}},t)},connection_type_supported:t=>{switch(t){case 0:case 1:case 2:return o.forbidTcp?0:1;case 4:case 5:case 6:return o.forbidWs||o.forbidNonLocalWs?0:1;case 7:return o.forbidWs?0:1;case 14:return o.forbidWss?0:1;case 16:case 17:return o.forbidWebRtc?0:1;default:throw new Error("Invalid connection type passed to `connection_type_supported`")}},connection_new:(t,e,s)=>{let a=c.instance,i=new Uint8Array(a.exports.memory.buffer);e>>>=0,s>>>=0;let l;switch(B(i,e)){case 0:case 1:case 2:{let p=g(i,e+1),h=b(i,e+3,s-3);l={ty:"tcp",port:p,hostname:h};break}case 4:case 6:{let p=g(i,e+1);l={ty:"websocket",url:"ws://"+b(i,e+3,s-3)+":"+p};break}case 5:{let p=g(i,e+1);l={ty:"websocket",url:"ws://["+b(i,e+3,s-3)+"]:"+p};break}case 14:{let p=g(i,e+1);l={ty:"websocket",url:"wss://"+b(i,e+3,s-3)+":"+p};break}case 16:{let p=g(i,e+1),h=i.slice(e+3,e+35),m=b(i,e+35,s-35);l={ty:"webrtc",ipVersion:"4",remoteTlsCertificateSha256:h,targetIp:m,targetPort:p};break}case 17:{let p=g(i,e+1),h=i.slice(e+3,e+35),m=b(i,e+35,s-35);l={ty:"webrtc",ipVersion:"6",remoteTlsCertificateSha256:h,targetIp:m,targetPort:p};break}default:throw new Error("Invalid encoded address passed to `connection_new`")}d({ty:"new-connection",connectionId:t,address:l})},reset_connection:t=>{d({ty:"connection-reset",connectionId:t})},connection_stream_open:t=>{d({ty:"connection-stream-open",connectionId:t})},connection_stream_reset:(t,e)=>{d({ty:"connection-stream-reset",connectionId:t,streamId:e})},stream_send:(t,e,s,a)=>{let i=c.instance,l=new Uint8Array(i.exports.memory.buffer);s>>>=0,a>>>=0;let p=new Array;for(let h=0;h<a;++h){let m=W(l,s+8*h),w=W(l,s+8*h+4);p.push(l.slice(m,m+w))}d({ty:"stream-send",connectionId:t,streamId:e,data:p})},stream_send_close:(t,e)=>{d({ty:"stream-send-close",connectionId:t,streamId:e})},current_task_entered:(t,e)=>{t>>>=0,e>>>=0;let s=b(new Uint8Array(c.instance.exports.memory.buffer),t,e);c.currentTask=s},current_task_exit:()=>{c.currentTask=null}},n=yield WebAssembly.instantiate(r,{smoldot:f});c.instance=n,c.instance.exports.init(o.maxLogLevel);let u=new Promise(t=>c.onShutdownExecutorOrWasmPanic=()=>t("stop"));return U(this,void 0,void 0,function*(){let t=o.cpuRateLimit,e=0,s=o.performanceNow();for(;;){let a=new Promise(m=>c.advanceExecutionPromise=()=>m("ready"));if(!c.instance)break;c.instance.exports.advance_execution();let i=o.performanceNow(),l=i-s;s=i;let p=l*(1/t-1);if(e+=p,e>5){e>2147483646&&(e=2147483646);let m=new Promise(w=>setTimeout(()=>w("timeout"),e));if((yield Promise.race([m,u]))==="stop")break}if((yield Promise.race([a,u]))==="stop")break;let h=o.performanceNow();e-=h-s,e<-1e4&&(e=-1e4),s=h}c.instance&&d({ty:"executor-shutdown"})}),{request:(t,e)=>c.instance?(c.bufferIndices[0]=new TextEncoder().encode(t),c.instance.exports.json_rpc_send(0,e)>>>0):1,peekJsonRpcResponse:t=>{if(!c.instance)return null;let e=c.instance.exports.json_rpc_responses_peek(t)>>>0,s=new Uint8Array(c.instance.exports.memory.buffer),a=W(s,e)>>>0,i=W(s,e+4)>>>0;if(i!==0){let l=b(s,a,i);return c.instance.exports.json_rpc_responses_pop(t),l}else return null},addChain:(t,e,s,a,i,l)=>{if(!c.instance){d({ty:"add-chain-id-allocated",chainId:0}),d({ty:"add-chain-result",chainId:0,success:!1,error:"Smoldot has crashed"});return}console.assert(a||i!=0,"invalid jsonRpcMaxPendingRequests value passed to local-instance::addChain"),c.bufferIndices[0]=new TextEncoder().encode(t),c.bufferIndices[1]=new TextEncoder().encode(e);let p=new Uint8Array(s.length*4);for(let m=0;m<s.length;++m)A(p,m*4,s[m]);c.bufferIndices[2]=p;let h=c.instance.exports.add_chain(0,1,a?0:i,l,2);delete c.bufferIndices[0],delete c.bufferIndices[1],delete c.bufferIndices[2],d({ty:"add-chain-id-allocated",chainId:h})},removeChain:t=>{c.instance&&c.instance.exports.remove_chain(t)},shutdownExecutor:()=>{if(!c.instance)return;let t=c.onShutdownExecutorOrWasmPanic;c.onShutdownExecutorOrWasmPanic=()=>{},t()},connectionMultiStreamSetHandshakeInfo:(t,e)=>{if(!c.instance)return;let s=new Uint8Array(1+e.localTlsCertificateSha256.length);M(s,0,0),s.set(e.localTlsCertificateSha256,1),c.bufferIndices[0]=s,c.instance.exports.connection_multi_stream_set_handshake_info(t,0),delete c.bufferIndices[0]},connectionReset:(t,e)=>{c.instance&&(c.bufferIndices[0]=new TextEncoder().encode(e),c.instance.exports.connection_reset(t,0),delete c.bufferIndices[0])},streamWritableBytes:(t,e,s)=>{c.instance&&c.instance.exports.stream_writable_bytes(t,s||0,e)},streamMessage:(t,e,s)=>{c.instance&&(c.bufferIndices[0]=e,c.instance.exports.stream_message(t,s||0,0),delete c.bufferIndices[0])},streamOpened:(t,e,s)=>{c.instance&&c.instance.exports.connection_stream_opened(t,e,s==="outbound"?1:0)},streamReset:(t,e,s)=>{c.instance&&(c.bufferIndices[0]=new TextEncoder().encode(s),c.instance.exports.stream_reset(t,e,0),delete c.bufferIndices[0])}}})}var j=function(o,r,d,c){function f(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(a){try{s(c.next(a))}catch(i){u(i)}}function e(a){try{s(c.throw(a))}catch(i){u(i)}}function s(a){a.done?n(a.value):f(a.value).then(t,e)}s((c=c.apply(o,r||[])).next())})};function P(o){return j(this,void 0,void 0,function*(){let{port1:r,port2:d}=new MessageChannel,c=o.portToServer,f={wasmModule:yield o.wasmModule,serverToClient:d,maxLogLevel:o.maxLogLevel,cpuRateLimit:o.cpuRateLimit,forbidWs:o.forbidWs,forbidWss:o.forbidWss,forbidNonLocalWs:o.forbidNonLocalWs,forbidTcp:o.forbidTcp,forbidWebRtc:o.forbidWebRtc};c.postMessage(f,[d]);let n={jsonRpcResponses:new Map,connections:new Map};return r.onmessage=u=>{let t=u.data;switch(t.ty){case"wasm-panic":case"executor-shutdown":{r.close(),c.close();break}case"add-chain-result":{if(t.success){n.jsonRpcResponses.set(t.chainId,new Array);let e={ty:"accept-more-json-rpc-answers",chainId:t.chainId};for(let s=0;s<10;++s)r.postMessage(e)}break}case"new-connection":{n.connections.set(t.connectionId,new Set);break}case"connection-reset":{if(!n.connections.has(t.connectionId))return;n.connections.delete(t.connectionId);break}case"connection-stream-open":{if(!n.connections.has(t.connectionId))return;break}case"connection-stream-reset":{if(!n.connections.has(t.connectionId)||!n.connections.get(t.connectionId).has(t.streamId))return;break}case"stream-send":{if(!n.connections.has(t.connectionId)||t.streamId&&!n.connections.get(t.connectionId).has(t.streamId))return;break}case"stream-send-close":{if(!n.connections.has(t.connectionId)||t.streamId&&!n.connections.get(t.connectionId).has(t.streamId))return;break}case"json-rpc-response":{let e=n.jsonRpcResponses.get(t.chainId);e&&(e.push(t.response),o.eventCallback({ty:"json-rpc-responses-non-empty",chainId:t.chainId}));return}}o.eventCallback(t)},{addChain(u,t,e,s,a,i){return j(this,void 0,void 0,function*(){let l={ty:"add-chain",chainSpec:u,databaseContent:t,potentialRelayChains:e,disableJsonRpc:s,jsonRpcMaxPendingRequests:a,jsonRpcMaxSubscriptions:i};r.postMessage(l)})},removeChain(u){n.jsonRpcResponses.delete(u);let t={ty:"remove-chain",chainId:u};r.postMessage(t)},request(u,t){let e={ty:"request",chainId:t,request:u};return r.postMessage(e),0},peekJsonRpcResponse(u){let t=n.jsonRpcResponses.get(u).shift();if(!t)return null;let e={ty:"accept-more-json-rpc-answers",chainId:u};return r.postMessage(e),t},shutdownExecutor(){let u={ty:"shutdown"};r.postMessage(u)},connectionReset(u,t){n.connections.delete(u);let e={ty:"connection-reset",connectionId:u,message:t};r.postMessage(e)},connectionMultiStreamSetHandshakeInfo(u,t){let e={ty:"connection-multistream-set-info",connectionId:u,info:t};r.postMessage(e)},streamMessage(u,t,e){let s={ty:"stream-message",connectionId:u,message:t,streamId:e};r.postMessage(s)},streamOpened(u,t,e){n.connections.get(u).add(t);let s={ty:"stream-opened",connectionId:u,streamId:t,direction:e};r.postMessage(s)},streamWritableBytes(u,t,e){let s={ty:"stream-writable-bytes",connectionId:u,numExtra:t,streamId:e};r.postMessage(s)},streamReset(u,t,e){n.connections.get(u).delete(t);let s={ty:"stream-reset",connectionId:u,streamId:t,message:e};r.postMessage(s)}}})}var T=function(o,r,d,c){function f(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(a){try{s(c.next(a))}catch(i){u(i)}}function e(a){try{s(c.throw(a))}catch(i){u(i)}}function s(a){a.done?n(a.value):f(a.value).then(t,e)}s((c=c.apply(o,r||[])).next())})};function L(o,r,d){let c=o.logCallback||((e,s,a)=>{e<=1?console.error("[%s] %s",s,a):e==2?console.warn("[%s] %s",s,a):e==3?console.info("[%s] %s",s,a):e==4?console.debug("[%s] %s",s,a):console.trace("[%s] %s",s,a)});r instanceof Promise||(r=Promise.resolve(r));let f=o.cpuRateLimit||1;isNaN(f)&&(f=1),f>1&&(f=1),f<0&&(f=0);let n={instance:{status:"not-created"},chainIds:new WeakMap,connections:new Map,addChainIdAllocations:[],addChainResults:new Map,onExecutorShutdownOrWasmPanic:()=>{},chains:new Map},u=e=>{switch(e.ty){case"wasm-panic":{console.error("Smoldot has panicked"+(e.currentTask?" while executing task `"+e.currentTask+"`":"")+`. This is a bug in smoldot. Please open an issue at https://github.com/smol-dot/smoldot/issues with the following message:
|
|
3
|
-
`+e.message),n.instance={status:"destroyed",error:new E(e.message)},n.connections.forEach(a=>a.reset()),n.connections.clear();for(let a of n.addChainIdAllocations)a({success:!1,error:"Smoldot has crashed"});n.addChainIdAllocations=[],n.addChainResults.forEach(a=>{a({success:!1,error:"Smoldot has crashed"})}),n.addChainResults.clear();for(let a of Array.from(n.chains.values())){for(let i of a.jsonRpcResponsesPromises)i();a.jsonRpcResponsesPromises=[]}n.chains.clear();let s=n.onExecutorShutdownOrWasmPanic;n.onExecutorShutdownOrWasmPanic=()=>{},s();break}case"executor-shutdown":{let s=n.onExecutorShutdownOrWasmPanic;n.onExecutorShutdownOrWasmPanic=()=>{},s();break}case"log":{c(e.level,e.target,e.message);break}case"add-chain-id-allocated":{let s=n.addChainIdAllocations.shift();n.addChainResults.set(e.chainId,s);break}case"add-chain-result":{n.addChainResults.get(e.chainId)(e),n.addChainResults.delete(e.chainId);break}case"json-rpc-responses-non-empty":{let s=n.chains.get(e.chainId).jsonRpcResponsesPromises;for(;s.length!==0;)s.shift()();break}case"new-connection":{let s=e.connectionId;n.connections.set(s,d.connect({address:e.address,onConnectionReset(a){if(n.instance.status!=="ready")throw new Error;n.connections.delete(s),n.instance.instance.connectionReset(s,a)},onMessage(a,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamMessage(s,a,i)},onStreamOpened(a,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamOpened(s,a,i)},onMultistreamHandshakeInfo(a){if(n.instance.status!=="ready")throw new Error;n.instance.instance.connectionMultiStreamSetHandshakeInfo(s,a)},onWritableBytes(a,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamWritableBytes(s,a,i)},onStreamReset(a,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamReset(s,a,i)}}));break}case"connection-reset":{n.connections.get(e.connectionId).reset(),n.connections.delete(e.connectionId);break}case"connection-stream-open":{n.connections.get(e.connectionId).openOutSubstream();break}case"connection-stream-reset":{n.connections.get(e.connectionId).reset(e.streamId);break}case"stream-send":{n.connections.get(e.connectionId).send(e.data,e.streamId);break}case"stream-send-close":{n.connections.get(e.connectionId).closeSend(e.streamId);break}}},t=o.portToWorker;return t?n.instance={status:"not-ready",whenReady:P({wasmModule:r.then(e=>e.wasm),forbidTcp:o.forbidTcp||!1,forbidWs:o.forbidWs||!1,forbidNonLocalWs:o.forbidNonLocalWs||!1,forbidWss:o.forbidWss||!1,forbidWebRtc:o.forbidWebRtc||!1,maxLogLevel:o.maxLogLevel||3,cpuRateLimit:f,portToServer:t,eventCallback:u}).then(e=>{n.instance.status!=="destroyed"&&(n.instance={status:"ready",instance:e})})}:n.instance={status:"not-ready",whenReady:r.then(e=>C({forbidTcp:o.forbidTcp||!1,forbidWs:o.forbidWs||!1,forbidNonLocalWs:o.forbidNonLocalWs||!1,forbidWss:o.forbidWss||!1,forbidWebRtc:o.forbidWebRtc||!1,maxLogLevel:o.maxLogLevel||3,cpuRateLimit:f,envVars:[],performanceNow:d.performanceNow,getRandomValues:d.getRandomValues},e.wasm,u)).then(e=>{n.instance.status!=="destroyed"&&(n.instance={status:"ready",instance:e})})},{addChain:e=>T(this,void 0,void 0,function*(){if(n.instance.status==="not-ready"&&(yield n.instance.whenReady),n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status==="not-created"||n.instance.status==="not-ready")throw new Error;if(typeof e.chainSpec!="string")throw new Error("Chain specification must be a string");let s=[];if(e.potentialRelayChains)for(let w of e.potentialRelayChains){let y=n.chainIds.get(w);y!==void 0&&s.push(y)}let a=e.jsonRpcMaxPendingRequests===void 0?1/0:e.jsonRpcMaxPendingRequests;if(a=Math.floor(a),a<=0||isNaN(a))throw new I("Invalid value for `jsonRpcMaxPendingRequests`");a>4294967295&&(a=4294967295);let i=e.jsonRpcMaxSubscriptions===void 0?1/0:e.jsonRpcMaxSubscriptions;if(i=Math.floor(i),i<0||isNaN(i))throw new I("Invalid value for `jsonRpcMaxSubscriptions`");if(i>4294967295&&(i=4294967295),e.databaseContent!==void 0&&typeof e.databaseContent!="string")throw new I("`databaseContent` is not a string");let l=new Promise(w=>n.addChainIdAllocations.push(w));n.instance.instance.addChain(e.chainSpec,e.databaseContent||"",s,!!e.disableJsonRpc,a,i);let p=yield l;if(!p.success)throw new I(p.error);let h=p.chainId;n.chains.set(h,{jsonRpcResponsesPromises:new Array});let m={sendJsonRpc:w=>{if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;if(!n.chains.has(h))throw new x;if(e.disableJsonRpc)throw new R;let y=n.instance.instance.request(w,h);switch(y){case 0:break;case 1:throw new k;default:throw new Error("Internal error: unknown json_rpc_send error code: "+y)}},jsonRpcResponses:{next:()=>T(this,void 0,void 0,function*(){for(;;){if(!n.chains.has(h))return{done:!0,value:void 0};if(e.disableJsonRpc)throw new R;if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;let w=n.instance.instance.peekJsonRpcResponse(h);if(w)return{done:!1,value:w};yield new Promise(y=>{n.chains.get(h).jsonRpcResponsesPromises.push(y)})}}),[Symbol.asyncIterator](){return this}},nextJsonRpcResponse:()=>T(this,void 0,void 0,function*(){let w=yield m.jsonRpcResponses.next();if(w.done)throw new x;return w.value}),remove:()=>{if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;if(!n.chains.has(h))throw new x;console.assert(n.chainIds.has(m)),n.chainIds.delete(m);for(let w of n.chains.get(h).jsonRpcResponsesPromises)w();n.chains.delete(h),n.instance.instance.removeChain(h)}};return n.chainIds.set(m,h),m}),terminate:()=>T(this,void 0,void 0,function*(){if(n.instance.status==="not-ready"&&(yield n.instance.whenReady),n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;n.instance.instance.shutdownExecutor(),yield new Promise(e=>n.onExecutorShutdownOrWasmPanic=e),n.instance.status==="ready"&&(n.instance={status:"destroyed",error:new x}),n.connections.forEach(e=>e.reset()),n.connections.clear();for(let e of n.addChainIdAllocations)e({success:!1,error:"Client.terminate() has been called"});n.addChainIdAllocations=[],n.addChainResults.forEach(e=>{e({success:!1,error:"Client.terminate() has been called"})}),n.addChainResults.clear();for(let e of Array.from(n.chains.values())){for(let s of e.jsonRpcResponsesPromises)s();e.jsonRpcResponsesPromises=[]}n.chains.clear()})}}var N=function(o,r,d,c){function f(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(a){try{s(c.next(a))}catch(i){u(i)}}function e(a){try{s(c.throw(a))}catch(i){u(i)}}function s(a){a.done?n(a.value):f(a.value).then(t,e)}s((c=c.apply(o,r||[])).next())})};function v(o){if(o.forbidTcp=!0,typeof isSecureContext=="boolean"&&isSecureContext&&typeof location!==void 0){let r=location.toString();r.indexOf("localhost")!==-1&&r.indexOf("127.0.0.1")!==-1&&r.indexOf("::1")!==-1&&(o.forbidNonLocalWs=!0)}return L(o,o.bytecode,{performanceNow:()=>performance.now(),getRandomValues:r=>{let d=globalThis.crypto;if(!d)throw new Error("randomness not available");if(r.buffer instanceof ArrayBuffer)d.getRandomValues(r);else{let c=new Uint8Array(r.length);d.getRandomValues(c),r.set(c)}},connect:r=>Q(r)})}function Q(o){if(o.address.ty==="websocket"){let r;try{r=new WebSocket(o.address.url)}catch(f){r=f instanceof Error?f.toString():"Exception thrown by new WebSocket"}let d={quenedUnreportedBytes:0,nextTimeout:10},c=()=>{if(!(r instanceof WebSocket)||r.readyState!=1)return;let f=r.bufferedAmount,n=d.quenedUnreportedBytes-f;n<0&&(n=0),d.quenedUnreportedBytes-=n,d.quenedUnreportedBytes!=0&&(setTimeout(c,d.nextTimeout),d.nextTimeout*=2,d.nextTimeout>500&&(d.nextTimeout=500)),n!=0&&o.onWritableBytes(n)};return r instanceof WebSocket?(r.binaryType="arraybuffer",r.onopen=()=>{o.onWritableBytes(1024*1024)},r.onclose=f=>{let n="Error code "+f.code+(f.reason?": "+f.reason:"");o.onConnectionReset(n)},r.onmessage=f=>{o.onMessage(new Uint8Array(f.data))}):setTimeout(()=>{r&&!(r instanceof WebSocket)&&(o.onConnectionReset(r),r=null)},1),{reset:()=>{r instanceof WebSocket&&(r.onopen=null,r.onclose=null,r.onmessage=null,r.onerror=null,r.readyState==WebSocket.OPEN&&r.close()),r=null},send:f=>{d.quenedUnreportedBytes==0&&(d.nextTimeout=10,setTimeout(c,10));for(let n of f)d.quenedUnreportedBytes+=n.length;r.send(new Blob(f))},closeSend:()=>{throw new Error("Wrong connection type")},openOutSubstream:()=>{throw new Error("Wrong connection type")}}}else if(o.address.ty==="webrtc"){let{targetPort:r,ipVersion:d,targetIp:c,remoteTlsCertificateSha256:f}=o.address,n={pc:void 0,dataChannels:new Map,nextStreamId:0,isFirstOutSubstream:!0},u=()=>{if(!n.pc){console.assert(n.dataChannels.size===0,"substreams exist while pc is undef"),n.pc=null;return}n.pc.onconnectionstatechange=null,n.pc.onnegotiationneeded=null,n.pc.ondatachannel=null;for(let e of Array.from(n.dataChannels.values()))e.channel.onopen=null,e.channel.onerror=null,e.channel.onclose=null,e.channel.onbufferedamountlow=null,e.channel.onmessage=null;n.dataChannels.clear(),n.pc.close()},t=(e,s)=>{let a=n.nextStreamId;n.nextStreamId+=1,e.binaryType="arraybuffer";let i={value:!1};e.onopen=()=>{console.assert(!i.value,"substream opened twice"),i.value=!0,o.onStreamOpened(a,s),o.onWritableBytes(65536,a)},e.onerror=e.onclose=l=>{let p=l instanceof RTCErrorEvent?l.error.toString():"RTCDataChannel closed";i.value?(e.onopen=null,e.onerror=null,e.onclose=null,e.onbufferedamountlow=null,e.onmessage=null,n.dataChannels.delete(a),o.onStreamReset(a,p)):(u(),o.onConnectionReset("data channel failed to open: "+p))},e.onbufferedamountlow=()=>{let l=n.dataChannels.get(a),p=l.bufferedBytes;l.bufferedBytes=0,o.onWritableBytes(p,a)},e.onmessage=l=>{o.onMessage(new Uint8Array(l.data),a)},n.dataChannels.set(a,{channel:e,bufferedBytes:0})};return RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:"SHA-256"}).then(e=>N(this,void 0,void 0,function*(){if(n.pc===null)return;if((c=="localhost"||c=="127.0.0.1"||c=="::1")&&navigator.userAgent.indexOf("Firefox")!==-1){u(),o.onConnectionReset("Firefox can't connect to a localhost WebRTC server");return}n.pc=new RTCPeerConnection({certificates:[e]});let s;if(e.getFingerprints){for(let{algorithm:i,value:l}of e.getFingerprints())if(i==="sha-256"){s=l;break}}else{let l=(yield n.pc.createOffer()).sdp.match(/a(\s*)=(\s*)fingerprint:(\s*)(sha|SHA)-256(\s*)(([a-fA-F0-9]{2}(:)*){32})/);l&&(s=l[6])}if(s===void 0){o.onConnectionReset("Failed to obtain the browser certificate fingerprint");return}let a=new Uint8Array(32);a.set(s.split(":").map(i=>parseInt(i,16)),0),n.pc.onconnectionstatechange=i=>{(n.pc.connectionState=="closed"||n.pc.connectionState=="disconnected"||n.pc.connectionState=="failed")&&(u(),o.onConnectionReset("WebRTC state transitioned to "+n.pc.connectionState))},n.pc.onnegotiationneeded=i=>N(this,void 0,void 0,function*(){var l;let p=(yield n.pc.createOffer()).sdp;p.match(/^m=application(\s+)(\d+)(\s+)UDP\/DTLS\/SCTP(\s+)webrtc-datachannel$/m)===null&&console.error("Local offer doesn't contain UDP data channel. WebRTC connections will likely fail. Please report this issue.");let h=(l=p.match(/^a=ice-pwd:(.+)$/m))===null||l===void 0?void 0:l.at(1);h===void 0&&console.error("Failed to set ufrag to pwd. WebRTC connections will likely fail. Please report this issue.");let m="libp2p+webrtc+v1/"+h;p=p.replace(/^a=ice-ufrag.*$/m,"a=ice-ufrag:"+m),p=p.replace(/^a=ice-pwd.*$/m,"a=ice-pwd:"+m),yield n.pc.setLocalDescription({type:"offer",sdp:p});let w=Array.from(f).map(J=>("0"+J.toString(16)).slice(-2).toUpperCase()).join(":"),y=`v=0
|
|
4
|
-
o=- 0 0 IN IP`+d+" "+c+`
|
|
5
|
-
s=-
|
|
6
|
-
t=0 0
|
|
7
|
-
a=ice-lite
|
|
8
|
-
m=application `+String(r)+` UDP/DTLS/SCTP webrtc-datachannel
|
|
9
|
-
c=IN IP`+d+" "+c+`
|
|
10
|
-
a=mid:0
|
|
11
|
-
a=ice-options:ice2
|
|
12
|
-
a=ice-ufrag:`+m+`
|
|
13
|
-
a=ice-pwd:`+m+`
|
|
14
|
-
a=fingerprint:sha-256 `+w+`
|
|
15
|
-
a=setup:passive
|
|
16
|
-
a=sctp-port:5000
|
|
17
|
-
a=max-message-size:16384
|
|
18
|
-
a=candidate:1 1 UDP 1 `+c+" "+String(r)+` typ host
|
|
19
|
-
`;yield n.pc.setRemoteDescription({type:"answer",sdp:y})}),n.pc.ondatachannel=({channel:i})=>{t(i,"inbound")},o.onMultistreamHandshakeInfo({handshake:"webrtc",localTlsCertificateSha256:a})})),{reset:e=>{if(e===void 0)u();else{let s=n.dataChannels.get(e);s.channel.onopen=null,s.channel.onerror=null,s.channel.onclose=null,s.channel.onbufferedamountlow=null,s.channel.onmessage=null,s.channel.close(),n.dataChannels.delete(e)}},send:(e,s)=>{let a=n.dataChannels.get(s);for(let i of e)a.bufferedBytes+=i.length;a.channel.send(new Blob(e))},closeSend:()=>{throw new Error("Wrong connection type")},openOutSubstream:()=>{let e=n.isFirstOutSubstream?{negotiated:!0,id:0}:{};n.isFirstOutSubstream=!1,t(n.pc.createDataChannel("",e),"outbound")}}}else throw new Error}var X=(o,r={})=>{let d=new Promise(n=>{o.onmessage=u=>n(u.data)}),{port1:c,port2:f}=new MessageChannel;return o.postMessage(c,[c]),v({bytecode:d,portToWorker:f,...r})};
|
|
2
|
+
"use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(r,o,f,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!d.call(r,e)&&e!==f&&a(r,e,{get:()=>o[e],enumerable:!(x=b(o,e))||x.enumerable});return r},t=(r,o,f)=>(p(r,o,"default"),f&&p(f,o,"default"));var g=r=>p(a({},"__esModule",{value:!0}),r);var m={};module.exports=g(m);t(m,require("@polkadot-api/smoldot/from-worker"),module.exports);
|
|
@@ -1,19 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
var I=class extends Error{constructor(a){super(a),this.name="AddChainError"}},x=class extends Error{constructor(){super(),this.name="AlreadyDestroyedError"}},R=class extends Error{constructor(){super(),this.name="JsonRpcDisabledError"}},E=class extends Error{constructor(a){super(a)}},k=class extends Error{constructor(){super("JSON-RPC requests queue is full")}};function b(r,a,d){return S(r,a,d),new TextDecoder().decode(r.slice(a,a+d))}function C(r,a){return S(r,a,1),r[a]}function g(r,a){return S(r,a,2),r[a]<<8|r[a+1]}function W(r,a){return S(r,a,4),(r[a]|r[a+1]<<8|r[a+2]<<16)+r[a+3]*16777216}function B(r,a,d){S(r,a,1),r[a]=d&255}function M(r,a,d){S(r,a,4),r[a+3]=d>>>24&255,r[a+2]=d>>>16&255,r[a+1]=d>>>8&255,r[a]=d&255}function S(r,a,d){if(!Number.isInteger(a)||a<0)throw new RangeError;if(a+d>r.length)throw new RangeError}var A=function(r,a,d,o){function p(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(c){try{s(o.next(c))}catch(i){u(i)}}function e(c){try{s(o.throw(c))}catch(i){u(i)}}function s(c){c.done?n(c.value):p(c.value).then(t,e)}s((o=o.apply(r,a||[])).next())})};function _(r,a,d){return A(this,void 0,void 0,function*(){let o={instance:null,currentTask:null,bufferIndices:new Array,advanceExecutionPromise:null,onShutdownExecutorOrWasmPanic:()=>{}},p={panic:(t,e)=>{let s=o.instance;o.instance=null,t>>>=0,e>>>=0;let c=b(new Uint8Array(s.exports.memory.buffer),t,e);throw d({ty:"wasm-panic",message:c,currentTask:o.currentTask}),o.onShutdownExecutorOrWasmPanic(),o.onShutdownExecutorOrWasmPanic=()=>{},new Error},chain_initialized:(t,e,s)=>{let c=o.instance,i=new Uint8Array(c.exports.memory.buffer);if(e>>>=0,s>>>=0,e===0)d({ty:"add-chain-result",chainId:t,success:!0});else{let f=b(i,e,s);d({ty:"add-chain-result",chainId:t,success:!1,error:f})}},random_get:(t,e)=>{let s=o.instance;t>>>=0,e>>>=0;let c=new Uint8Array(s.exports.memory.buffer).subarray(t,t+e);for(let i=0;i<e;i+=65536)r.getRandomValues(c.subarray(i,i+65536))},unix_timestamp_us:()=>{let t=Math.floor(Date.now());if(t<0)throw new Error("UNIX timestamp inferior to 0");return BigInt(t)*BigInt(1e3)},monotonic_clock_us:()=>{let t=r.performanceNow(),e=Math.floor(t);return BigInt(e)*BigInt(1e3)+BigInt(Math.floor((t-e)*1e3))},buffer_size:t=>o.bufferIndices[t].byteLength,buffer_copy:(t,e)=>{let s=o.instance;e=e>>>0;let c=o.bufferIndices[t];new Uint8Array(s.exports.memory.buffer).set(c,e)},advance_execution_ready:()=>{o.advanceExecutionPromise&&o.advanceExecutionPromise(),o.advanceExecutionPromise=null},json_rpc_responses_non_empty:t=>{d({ty:"json-rpc-responses-non-empty",chainId:t})},log:(t,e,s,c,i)=>{let f=o.instance;e>>>=0,s>>>=0,c>>>=0,i>>>=0;let l=new Uint8Array(f.exports.memory.buffer),h=b(l,e,s),m=b(l,c,i);d({ty:"log",level:t,message:m,target:h})},start_timer:t=>{let e=o.instance;t>2147483647&&(t=2147483647),t<1&&typeof setImmediate=="function"?setImmediate(()=>{if(o.instance)try{e.exports.timer_finished()}catch{}}):setTimeout(()=>{if(o.instance)try{e.exports.timer_finished()}catch{}},t)},connection_type_supported:t=>{switch(t){case 0:case 1:case 2:return r.forbidTcp?0:1;case 4:case 5:case 6:return r.forbidWs||r.forbidNonLocalWs?0:1;case 7:return r.forbidWs?0:1;case 14:return r.forbidWss?0:1;case 16:case 17:return r.forbidWebRtc?0:1;default:throw new Error("Invalid connection type passed to `connection_type_supported`")}},connection_new:(t,e,s)=>{let c=o.instance,i=new Uint8Array(c.exports.memory.buffer);e>>>=0,s>>>=0;let f;switch(C(i,e)){case 0:case 1:case 2:{let l=g(i,e+1),h=b(i,e+3,s-3);f={ty:"tcp",port:l,hostname:h};break}case 4:case 6:{let l=g(i,e+1);f={ty:"websocket",url:"ws://"+b(i,e+3,s-3)+":"+l};break}case 5:{let l=g(i,e+1);f={ty:"websocket",url:"ws://["+b(i,e+3,s-3)+"]:"+l};break}case 14:{let l=g(i,e+1);f={ty:"websocket",url:"wss://"+b(i,e+3,s-3)+":"+l};break}case 16:{let l=g(i,e+1),h=i.slice(e+3,e+35),m=b(i,e+35,s-35);f={ty:"webrtc",ipVersion:"4",remoteTlsCertificateSha256:h,targetIp:m,targetPort:l};break}case 17:{let l=g(i,e+1),h=i.slice(e+3,e+35),m=b(i,e+35,s-35);f={ty:"webrtc",ipVersion:"6",remoteTlsCertificateSha256:h,targetIp:m,targetPort:l};break}default:throw new Error("Invalid encoded address passed to `connection_new`")}d({ty:"new-connection",connectionId:t,address:f})},reset_connection:t=>{d({ty:"connection-reset",connectionId:t})},connection_stream_open:t=>{d({ty:"connection-stream-open",connectionId:t})},connection_stream_reset:(t,e)=>{d({ty:"connection-stream-reset",connectionId:t,streamId:e})},stream_send:(t,e,s,c)=>{let i=o.instance,f=new Uint8Array(i.exports.memory.buffer);s>>>=0,c>>>=0;let l=new Array;for(let h=0;h<c;++h){let m=W(f,s+8*h),w=W(f,s+8*h+4);l.push(f.slice(m,m+w))}d({ty:"stream-send",connectionId:t,streamId:e,data:l})},stream_send_close:(t,e)=>{d({ty:"stream-send-close",connectionId:t,streamId:e})},current_task_entered:(t,e)=>{t>>>=0,e>>>=0;let s=b(new Uint8Array(o.instance.exports.memory.buffer),t,e);o.currentTask=s},current_task_exit:()=>{o.currentTask=null}},n=yield WebAssembly.instantiate(a,{smoldot:p});o.instance=n,o.instance.exports.init(r.maxLogLevel);let u=new Promise(t=>o.onShutdownExecutorOrWasmPanic=()=>t("stop"));return A(this,void 0,void 0,function*(){let t=r.cpuRateLimit,e=0,s=r.performanceNow();for(;;){let c=new Promise(m=>o.advanceExecutionPromise=()=>m("ready"));if(!o.instance)break;o.instance.exports.advance_execution();let i=r.performanceNow(),f=i-s;s=i;let l=f*(1/t-1);if(e+=l,e>5){e>2147483646&&(e=2147483646);let m=new Promise(w=>setTimeout(()=>w("timeout"),e));if((yield Promise.race([m,u]))==="stop")break}if((yield Promise.race([c,u]))==="stop")break;let h=r.performanceNow();e-=h-s,e<-1e4&&(e=-1e4),s=h}o.instance&&d({ty:"executor-shutdown"})}),{request:(t,e)=>o.instance?(o.bufferIndices[0]=new TextEncoder().encode(t),o.instance.exports.json_rpc_send(0,e)>>>0):1,peekJsonRpcResponse:t=>{if(!o.instance)return null;let e=o.instance.exports.json_rpc_responses_peek(t)>>>0,s=new Uint8Array(o.instance.exports.memory.buffer),c=W(s,e)>>>0,i=W(s,e+4)>>>0;if(i!==0){let f=b(s,c,i);return o.instance.exports.json_rpc_responses_pop(t),f}else return null},addChain:(t,e,s,c,i,f)=>{if(!o.instance){d({ty:"add-chain-id-allocated",chainId:0}),d({ty:"add-chain-result",chainId:0,success:!1,error:"Smoldot has crashed"});return}console.assert(c||i!=0,"invalid jsonRpcMaxPendingRequests value passed to local-instance::addChain"),o.bufferIndices[0]=new TextEncoder().encode(t),o.bufferIndices[1]=new TextEncoder().encode(e);let l=new Uint8Array(s.length*4);for(let m=0;m<s.length;++m)M(l,m*4,s[m]);o.bufferIndices[2]=l;let h=o.instance.exports.add_chain(0,1,c?0:i,f,2);delete o.bufferIndices[0],delete o.bufferIndices[1],delete o.bufferIndices[2],d({ty:"add-chain-id-allocated",chainId:h})},removeChain:t=>{o.instance&&o.instance.exports.remove_chain(t)},shutdownExecutor:()=>{if(!o.instance)return;let t=o.onShutdownExecutorOrWasmPanic;o.onShutdownExecutorOrWasmPanic=()=>{},t()},connectionMultiStreamSetHandshakeInfo:(t,e)=>{if(!o.instance)return;let s=new Uint8Array(1+e.localTlsCertificateSha256.length);B(s,0,0),s.set(e.localTlsCertificateSha256,1),o.bufferIndices[0]=s,o.instance.exports.connection_multi_stream_set_handshake_info(t,0),delete o.bufferIndices[0]},connectionReset:(t,e)=>{o.instance&&(o.bufferIndices[0]=new TextEncoder().encode(e),o.instance.exports.connection_reset(t,0),delete o.bufferIndices[0])},streamWritableBytes:(t,e,s)=>{o.instance&&o.instance.exports.stream_writable_bytes(t,s||0,e)},streamMessage:(t,e,s)=>{o.instance&&(o.bufferIndices[0]=e,o.instance.exports.stream_message(t,s||0,0),delete o.bufferIndices[0])},streamOpened:(t,e,s)=>{o.instance&&o.instance.exports.connection_stream_opened(t,e,s==="outbound"?1:0)},streamReset:(t,e,s)=>{o.instance&&(o.bufferIndices[0]=new TextEncoder().encode(s),o.instance.exports.stream_reset(t,e,0),delete o.bufferIndices[0])}}})}var O=function(r,a,d,o){function p(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(c){try{s(o.next(c))}catch(i){u(i)}}function e(c){try{s(o.throw(c))}catch(i){u(i)}}function s(c){c.done?n(c.value):p(c.value).then(t,e)}s((o=o.apply(r,a||[])).next())})};function j(r){return O(this,void 0,void 0,function*(){let{port1:a,port2:d}=new MessageChannel,o=r.portToServer,p={wasmModule:yield r.wasmModule,serverToClient:d,maxLogLevel:r.maxLogLevel,cpuRateLimit:r.cpuRateLimit,forbidWs:r.forbidWs,forbidWss:r.forbidWss,forbidNonLocalWs:r.forbidNonLocalWs,forbidTcp:r.forbidTcp,forbidWebRtc:r.forbidWebRtc};o.postMessage(p,[d]);let n={jsonRpcResponses:new Map,connections:new Map};return a.onmessage=u=>{let t=u.data;switch(t.ty){case"wasm-panic":case"executor-shutdown":{a.close(),o.close();break}case"add-chain-result":{if(t.success){n.jsonRpcResponses.set(t.chainId,new Array);let e={ty:"accept-more-json-rpc-answers",chainId:t.chainId};for(let s=0;s<10;++s)a.postMessage(e)}break}case"new-connection":{n.connections.set(t.connectionId,new Set);break}case"connection-reset":{if(!n.connections.has(t.connectionId))return;n.connections.delete(t.connectionId);break}case"connection-stream-open":{if(!n.connections.has(t.connectionId))return;break}case"connection-stream-reset":{if(!n.connections.has(t.connectionId)||!n.connections.get(t.connectionId).has(t.streamId))return;break}case"stream-send":{if(!n.connections.has(t.connectionId)||t.streamId&&!n.connections.get(t.connectionId).has(t.streamId))return;break}case"stream-send-close":{if(!n.connections.has(t.connectionId)||t.streamId&&!n.connections.get(t.connectionId).has(t.streamId))return;break}case"json-rpc-response":{let e=n.jsonRpcResponses.get(t.chainId);e&&(e.push(t.response),r.eventCallback({ty:"json-rpc-responses-non-empty",chainId:t.chainId}));return}}r.eventCallback(t)},{addChain(u,t,e,s,c,i){return O(this,void 0,void 0,function*(){let f={ty:"add-chain",chainSpec:u,databaseContent:t,potentialRelayChains:e,disableJsonRpc:s,jsonRpcMaxPendingRequests:c,jsonRpcMaxSubscriptions:i};a.postMessage(f)})},removeChain(u){n.jsonRpcResponses.delete(u);let t={ty:"remove-chain",chainId:u};a.postMessage(t)},request(u,t){let e={ty:"request",chainId:t,request:u};return a.postMessage(e),0},peekJsonRpcResponse(u){let t=n.jsonRpcResponses.get(u).shift();if(!t)return null;let e={ty:"accept-more-json-rpc-answers",chainId:u};return a.postMessage(e),t},shutdownExecutor(){let u={ty:"shutdown"};a.postMessage(u)},connectionReset(u,t){n.connections.delete(u);let e={ty:"connection-reset",connectionId:u,message:t};a.postMessage(e)},connectionMultiStreamSetHandshakeInfo(u,t){let e={ty:"connection-multistream-set-info",connectionId:u,info:t};a.postMessage(e)},streamMessage(u,t,e){let s={ty:"stream-message",connectionId:u,message:t,streamId:e};a.postMessage(s)},streamOpened(u,t,e){n.connections.get(u).add(t);let s={ty:"stream-opened",connectionId:u,streamId:t,direction:e};a.postMessage(s)},streamWritableBytes(u,t,e){let s={ty:"stream-writable-bytes",connectionId:u,numExtra:t,streamId:e};a.postMessage(s)},streamReset(u,t,e){n.connections.get(u).delete(t);let s={ty:"stream-reset",connectionId:u,streamId:t,message:e};a.postMessage(s)}}})}var T=function(r,a,d,o){function p(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(c){try{s(o.next(c))}catch(i){u(i)}}function e(c){try{s(o.throw(c))}catch(i){u(i)}}function s(c){c.done?n(c.value):p(c.value).then(t,e)}s((o=o.apply(r,a||[])).next())})};function P(r,a,d){let o=r.logCallback||((e,s,c)=>{e<=1?console.error("[%s] %s",s,c):e==2?console.warn("[%s] %s",s,c):e==3?console.info("[%s] %s",s,c):e==4?console.debug("[%s] %s",s,c):console.trace("[%s] %s",s,c)});a instanceof Promise||(a=Promise.resolve(a));let p=r.cpuRateLimit||1;isNaN(p)&&(p=1),p>1&&(p=1),p<0&&(p=0);let n={instance:{status:"not-created"},chainIds:new WeakMap,connections:new Map,addChainIdAllocations:[],addChainResults:new Map,onExecutorShutdownOrWasmPanic:()=>{},chains:new Map},u=e=>{switch(e.ty){case"wasm-panic":{console.error("Smoldot has panicked"+(e.currentTask?" while executing task `"+e.currentTask+"`":"")+`. This is a bug in smoldot. Please open an issue at https://github.com/smol-dot/smoldot/issues with the following message:
|
|
3
|
-
`+e.message),n.instance={status:"destroyed",error:new E(e.message)},n.connections.forEach(c=>c.reset()),n.connections.clear();for(let c of n.addChainIdAllocations)c({success:!1,error:"Smoldot has crashed"});n.addChainIdAllocations=[],n.addChainResults.forEach(c=>{c({success:!1,error:"Smoldot has crashed"})}),n.addChainResults.clear();for(let c of Array.from(n.chains.values())){for(let i of c.jsonRpcResponsesPromises)i();c.jsonRpcResponsesPromises=[]}n.chains.clear();let s=n.onExecutorShutdownOrWasmPanic;n.onExecutorShutdownOrWasmPanic=()=>{},s();break}case"executor-shutdown":{let s=n.onExecutorShutdownOrWasmPanic;n.onExecutorShutdownOrWasmPanic=()=>{},s();break}case"log":{o(e.level,e.target,e.message);break}case"add-chain-id-allocated":{let s=n.addChainIdAllocations.shift();n.addChainResults.set(e.chainId,s);break}case"add-chain-result":{n.addChainResults.get(e.chainId)(e),n.addChainResults.delete(e.chainId);break}case"json-rpc-responses-non-empty":{let s=n.chains.get(e.chainId).jsonRpcResponsesPromises;for(;s.length!==0;)s.shift()();break}case"new-connection":{let s=e.connectionId;n.connections.set(s,d.connect({address:e.address,onConnectionReset(c){if(n.instance.status!=="ready")throw new Error;n.connections.delete(s),n.instance.instance.connectionReset(s,c)},onMessage(c,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamMessage(s,c,i)},onStreamOpened(c,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamOpened(s,c,i)},onMultistreamHandshakeInfo(c){if(n.instance.status!=="ready")throw new Error;n.instance.instance.connectionMultiStreamSetHandshakeInfo(s,c)},onWritableBytes(c,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamWritableBytes(s,c,i)},onStreamReset(c,i){if(n.instance.status!=="ready")throw new Error;n.instance.instance.streamReset(s,c,i)}}));break}case"connection-reset":{n.connections.get(e.connectionId).reset(),n.connections.delete(e.connectionId);break}case"connection-stream-open":{n.connections.get(e.connectionId).openOutSubstream();break}case"connection-stream-reset":{n.connections.get(e.connectionId).reset(e.streamId);break}case"stream-send":{n.connections.get(e.connectionId).send(e.data,e.streamId);break}case"stream-send-close":{n.connections.get(e.connectionId).closeSend(e.streamId);break}}},t=r.portToWorker;return t?n.instance={status:"not-ready",whenReady:j({wasmModule:a.then(e=>e.wasm),forbidTcp:r.forbidTcp||!1,forbidWs:r.forbidWs||!1,forbidNonLocalWs:r.forbidNonLocalWs||!1,forbidWss:r.forbidWss||!1,forbidWebRtc:r.forbidWebRtc||!1,maxLogLevel:r.maxLogLevel||3,cpuRateLimit:p,portToServer:t,eventCallback:u}).then(e=>{n.instance.status!=="destroyed"&&(n.instance={status:"ready",instance:e})})}:n.instance={status:"not-ready",whenReady:a.then(e=>_({forbidTcp:r.forbidTcp||!1,forbidWs:r.forbidWs||!1,forbidNonLocalWs:r.forbidNonLocalWs||!1,forbidWss:r.forbidWss||!1,forbidWebRtc:r.forbidWebRtc||!1,maxLogLevel:r.maxLogLevel||3,cpuRateLimit:p,envVars:[],performanceNow:d.performanceNow,getRandomValues:d.getRandomValues},e.wasm,u)).then(e=>{n.instance.status!=="destroyed"&&(n.instance={status:"ready",instance:e})})},{addChain:e=>T(this,void 0,void 0,function*(){if(n.instance.status==="not-ready"&&(yield n.instance.whenReady),n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status==="not-created"||n.instance.status==="not-ready")throw new Error;if(typeof e.chainSpec!="string")throw new Error("Chain specification must be a string");let s=[];if(e.potentialRelayChains)for(let w of e.potentialRelayChains){let y=n.chainIds.get(w);y!==void 0&&s.push(y)}let c=e.jsonRpcMaxPendingRequests===void 0?1/0:e.jsonRpcMaxPendingRequests;if(c=Math.floor(c),c<=0||isNaN(c))throw new I("Invalid value for `jsonRpcMaxPendingRequests`");c>4294967295&&(c=4294967295);let i=e.jsonRpcMaxSubscriptions===void 0?1/0:e.jsonRpcMaxSubscriptions;if(i=Math.floor(i),i<0||isNaN(i))throw new I("Invalid value for `jsonRpcMaxSubscriptions`");if(i>4294967295&&(i=4294967295),e.databaseContent!==void 0&&typeof e.databaseContent!="string")throw new I("`databaseContent` is not a string");let f=new Promise(w=>n.addChainIdAllocations.push(w));n.instance.instance.addChain(e.chainSpec,e.databaseContent||"",s,!!e.disableJsonRpc,c,i);let l=yield f;if(!l.success)throw new I(l.error);let h=l.chainId;n.chains.set(h,{jsonRpcResponsesPromises:new Array});let m={sendJsonRpc:w=>{if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;if(!n.chains.has(h))throw new x;if(e.disableJsonRpc)throw new R;let y=n.instance.instance.request(w,h);switch(y){case 0:break;case 1:throw new k;default:throw new Error("Internal error: unknown json_rpc_send error code: "+y)}},jsonRpcResponses:{next:()=>T(this,void 0,void 0,function*(){for(;;){if(!n.chains.has(h))return{done:!0,value:void 0};if(e.disableJsonRpc)throw new R;if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;let w=n.instance.instance.peekJsonRpcResponse(h);if(w)return{done:!1,value:w};yield new Promise(y=>{n.chains.get(h).jsonRpcResponsesPromises.push(y)})}}),[Symbol.asyncIterator](){return this}},nextJsonRpcResponse:()=>T(this,void 0,void 0,function*(){let w=yield m.jsonRpcResponses.next();if(w.done)throw new x;return w.value}),remove:()=>{if(n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;if(!n.chains.has(h))throw new x;console.assert(n.chainIds.has(m)),n.chainIds.delete(m);for(let w of n.chains.get(h).jsonRpcResponsesPromises)w();n.chains.delete(h),n.instance.instance.removeChain(h)}};return n.chainIds.set(m,h),m}),terminate:()=>T(this,void 0,void 0,function*(){if(n.instance.status==="not-ready"&&(yield n.instance.whenReady),n.instance.status==="destroyed")throw n.instance.error;if(n.instance.status!=="ready")throw new Error;n.instance.instance.shutdownExecutor(),yield new Promise(e=>n.onExecutorShutdownOrWasmPanic=e),n.instance.status==="ready"&&(n.instance={status:"destroyed",error:new x}),n.connections.forEach(e=>e.reset()),n.connections.clear();for(let e of n.addChainIdAllocations)e({success:!1,error:"Client.terminate() has been called"});n.addChainIdAllocations=[],n.addChainResults.forEach(e=>{e({success:!1,error:"Client.terminate() has been called"})}),n.addChainResults.clear();for(let e of Array.from(n.chains.values())){for(let s of e.jsonRpcResponsesPromises)s();e.jsonRpcResponsesPromises=[]}n.chains.clear()})}}var L=function(r,a,d,o){function p(n){return n instanceof d?n:new d(function(u){u(n)})}return new(d||(d=Promise))(function(n,u){function t(c){try{s(o.next(c))}catch(i){u(i)}}function e(c){try{s(o.throw(c))}catch(i){u(i)}}function s(c){c.done?n(c.value):p(c.value).then(t,e)}s((o=o.apply(r,a||[])).next())})};function N(r){if(r.forbidTcp=!0,typeof isSecureContext=="boolean"&&isSecureContext&&typeof location!==void 0){let a=location.toString();a.indexOf("localhost")!==-1&&a.indexOf("127.0.0.1")!==-1&&a.indexOf("::1")!==-1&&(r.forbidNonLocalWs=!0)}return P(r,r.bytecode,{performanceNow:()=>performance.now(),getRandomValues:a=>{let d=globalThis.crypto;if(!d)throw new Error("randomness not available");if(a.buffer instanceof ArrayBuffer)d.getRandomValues(a);else{let o=new Uint8Array(a.length);d.getRandomValues(o),a.set(o)}},connect:a=>D(a)})}function D(r){if(r.address.ty==="websocket"){let a;try{a=new WebSocket(r.address.url)}catch(p){a=p instanceof Error?p.toString():"Exception thrown by new WebSocket"}let d={quenedUnreportedBytes:0,nextTimeout:10},o=()=>{if(!(a instanceof WebSocket)||a.readyState!=1)return;let p=a.bufferedAmount,n=d.quenedUnreportedBytes-p;n<0&&(n=0),d.quenedUnreportedBytes-=n,d.quenedUnreportedBytes!=0&&(setTimeout(o,d.nextTimeout),d.nextTimeout*=2,d.nextTimeout>500&&(d.nextTimeout=500)),n!=0&&r.onWritableBytes(n)};return a instanceof WebSocket?(a.binaryType="arraybuffer",a.onopen=()=>{r.onWritableBytes(1024*1024)},a.onclose=p=>{let n="Error code "+p.code+(p.reason?": "+p.reason:"");r.onConnectionReset(n)},a.onmessage=p=>{r.onMessage(new Uint8Array(p.data))}):setTimeout(()=>{a&&!(a instanceof WebSocket)&&(r.onConnectionReset(a),a=null)},1),{reset:()=>{a instanceof WebSocket&&(a.onopen=null,a.onclose=null,a.onmessage=null,a.onerror=null,a.readyState==WebSocket.OPEN&&a.close()),a=null},send:p=>{d.quenedUnreportedBytes==0&&(d.nextTimeout=10,setTimeout(o,10));for(let n of p)d.quenedUnreportedBytes+=n.length;a.send(new Blob(p))},closeSend:()=>{throw new Error("Wrong connection type")},openOutSubstream:()=>{throw new Error("Wrong connection type")}}}else if(r.address.ty==="webrtc"){let{targetPort:a,ipVersion:d,targetIp:o,remoteTlsCertificateSha256:p}=r.address,n={pc:void 0,dataChannels:new Map,nextStreamId:0,isFirstOutSubstream:!0},u=()=>{if(!n.pc){console.assert(n.dataChannels.size===0,"substreams exist while pc is undef"),n.pc=null;return}n.pc.onconnectionstatechange=null,n.pc.onnegotiationneeded=null,n.pc.ondatachannel=null;for(let e of Array.from(n.dataChannels.values()))e.channel.onopen=null,e.channel.onerror=null,e.channel.onclose=null,e.channel.onbufferedamountlow=null,e.channel.onmessage=null;n.dataChannels.clear(),n.pc.close()},t=(e,s)=>{let c=n.nextStreamId;n.nextStreamId+=1,e.binaryType="arraybuffer";let i={value:!1};e.onopen=()=>{console.assert(!i.value,"substream opened twice"),i.value=!0,r.onStreamOpened(c,s),r.onWritableBytes(65536,c)},e.onerror=e.onclose=f=>{let l=f instanceof RTCErrorEvent?f.error.toString():"RTCDataChannel closed";i.value?(e.onopen=null,e.onerror=null,e.onclose=null,e.onbufferedamountlow=null,e.onmessage=null,n.dataChannels.delete(c),r.onStreamReset(c,l)):(u(),r.onConnectionReset("data channel failed to open: "+l))},e.onbufferedamountlow=()=>{let f=n.dataChannels.get(c),l=f.bufferedBytes;f.bufferedBytes=0,r.onWritableBytes(l,c)},e.onmessage=f=>{r.onMessage(new Uint8Array(f.data),c)},n.dataChannels.set(c,{channel:e,bufferedBytes:0})};return RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:"SHA-256"}).then(e=>L(this,void 0,void 0,function*(){if(n.pc===null)return;if((o=="localhost"||o=="127.0.0.1"||o=="::1")&&navigator.userAgent.indexOf("Firefox")!==-1){u(),r.onConnectionReset("Firefox can't connect to a localhost WebRTC server");return}n.pc=new RTCPeerConnection({certificates:[e]});let s;if(e.getFingerprints){for(let{algorithm:i,value:f}of e.getFingerprints())if(i==="sha-256"){s=f;break}}else{let f=(yield n.pc.createOffer()).sdp.match(/a(\s*)=(\s*)fingerprint:(\s*)(sha|SHA)-256(\s*)(([a-fA-F0-9]{2}(:)*){32})/);f&&(s=f[6])}if(s===void 0){r.onConnectionReset("Failed to obtain the browser certificate fingerprint");return}let c=new Uint8Array(32);c.set(s.split(":").map(i=>parseInt(i,16)),0),n.pc.onconnectionstatechange=i=>{(n.pc.connectionState=="closed"||n.pc.connectionState=="disconnected"||n.pc.connectionState=="failed")&&(u(),r.onConnectionReset("WebRTC state transitioned to "+n.pc.connectionState))},n.pc.onnegotiationneeded=i=>L(this,void 0,void 0,function*(){var f;let l=(yield n.pc.createOffer()).sdp;l.match(/^m=application(\s+)(\d+)(\s+)UDP\/DTLS\/SCTP(\s+)webrtc-datachannel$/m)===null&&console.error("Local offer doesn't contain UDP data channel. WebRTC connections will likely fail. Please report this issue.");let h=(f=l.match(/^a=ice-pwd:(.+)$/m))===null||f===void 0?void 0:f.at(1);h===void 0&&console.error("Failed to set ufrag to pwd. WebRTC connections will likely fail. Please report this issue.");let m="libp2p+webrtc+v1/"+h;l=l.replace(/^a=ice-ufrag.*$/m,"a=ice-ufrag:"+m),l=l.replace(/^a=ice-pwd.*$/m,"a=ice-pwd:"+m),yield n.pc.setLocalDescription({type:"offer",sdp:l});let w=Array.from(p).map(v=>("0"+v.toString(16)).slice(-2).toUpperCase()).join(":"),y=`v=0
|
|
4
|
-
o=- 0 0 IN IP`+d+" "+o+`
|
|
5
|
-
s=-
|
|
6
|
-
t=0 0
|
|
7
|
-
a=ice-lite
|
|
8
|
-
m=application `+String(a)+` UDP/DTLS/SCTP webrtc-datachannel
|
|
9
|
-
c=IN IP`+d+" "+o+`
|
|
10
|
-
a=mid:0
|
|
11
|
-
a=ice-options:ice2
|
|
12
|
-
a=ice-ufrag:`+m+`
|
|
13
|
-
a=ice-pwd:`+m+`
|
|
14
|
-
a=fingerprint:sha-256 `+w+`
|
|
15
|
-
a=setup:passive
|
|
16
|
-
a=sctp-port:5000
|
|
17
|
-
a=max-message-size:16384
|
|
18
|
-
a=candidate:1 1 UDP 1 `+o+" "+String(a)+` typ host
|
|
19
|
-
`;yield n.pc.setRemoteDescription({type:"answer",sdp:y})}),n.pc.ondatachannel=({channel:i})=>{t(i,"inbound")},r.onMultistreamHandshakeInfo({handshake:"webrtc",localTlsCertificateSha256:c})})),{reset:e=>{if(e===void 0)u();else{let s=n.dataChannels.get(e);s.channel.onopen=null,s.channel.onerror=null,s.channel.onclose=null,s.channel.onbufferedamountlow=null,s.channel.onmessage=null,s.channel.close(),n.dataChannels.delete(e)}},send:(e,s)=>{let c=n.dataChannels.get(s);for(let i of e)c.bufferedBytes+=i.length;c.channel.send(new Blob(e))},closeSend:()=>{throw new Error("Wrong connection type")},openOutSubstream:()=>{let e=n.isFirstOutSubstream?{negotiated:!0,id:0}:{};n.isFirstOutSubstream=!1,t(n.pc.createDataChannel("",e),"outbound")}}}else throw new Error}var X=(r,a={})=>{let d=new Promise(n=>{r.onmessage=u=>n(u.data)}),{port1:o,port2:p}=new MessageChannel;return r.postMessage(o,[o]),N({bytecode:d,portToWorker:p,...a})};export{X as startFromWorker};
|
|
2
|
+
export*from"@polkadot-api/smoldot/from-worker";
|