@pkhex-everywhere/engine 0.18.3 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @pkhex-everywhere/engine
2
2
 
3
+ ## 0.19.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2e5cafa: Unbound and Radical Red bags list the Key Items pocket, and key items can be added, changed and removed. Unbound's Mega Cuff and Radical Red's TM Case, Exp. Share, Silph Scope and Lift Key go in Key Items, not Items.
8
+
9
+ ## 0.19.0
10
+
11
+ ### Minor Changes
12
+
13
+ - f8f6791: Add `transfer.convert`, `transfer.details` and `transfer.export`. A transfer offer takes `arrivals`: each places an offered Pokémon as given bytes plus a patch, instead of running the usual conversion. `EditablePokemon` gains `evolutionFamily` and `ExportedPokemon` gains `generation`. Remove kept copies: `KeptCopy`, `TransferOffer.keptCopies`, `OfferedPokemon.keepsCopy`, `TransferredPokemon.keptCopy`, `identityKey` and the `restored` change reason.
14
+
3
15
  ## 0.18.3
4
16
 
5
17
  ### Patch Changes
@@ -4,7 +4,7 @@
4
4
  var e=!1;const t=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),o=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),n=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),r=Symbol.for("wasm promise_control");function i(e,t){let o=null;const n=new Promise((function(n,r){o={isDone:!1,promise:null,resolve:t=>{o.isDone||(o.isDone=!0,n(t),e&&e())},reject:e=>{o.isDone||(o.isDone=!0,r(e),t&&t())}}}));o.promise=n;const i=n;return i[r]=o,{promise:i,promise_control:o}}function s(e){return e[r]}function a(e){e&&function(e){return void 0!==e[r]}(e)||Be(!1,"Promise is not controllable")}const l="__mono_message__",c=["debug","log","trace","warn","info","error"],d="MONO_WASM: ";let u,f,m,g,p,h;function w(e){g=e}function b(e){if(Pe.diagnosticTracing){const t="function"==typeof e?e():e;console.debug(d+t)}}function y(e,...t){console.info(d+e,...t)}function v(e,...t){console.info(e,...t)}function E(e,...t){console.warn(d+e,...t)}function _(e,...t){if(t&&t.length>0&&t[0]&&"object"==typeof t[0]){if(t[0].silent)return;if(t[0].toString)return void console.error(d+e,t[0].toString())}console.error(d+e,...t)}function x(e,t,o){return function(...n){try{let r=n[0];if(void 0===r)r="undefined";else if(null===r)r="null";else if("function"==typeof r)r=r.toString();else if("string"!=typeof r)try{r=JSON.stringify(r)}catch(e){r=r.toString()}t(o?JSON.stringify({method:e,payload:r,arguments:n.slice(1)}):[e+r,...n.slice(1)])}catch(e){m.error(`proxyConsole failed: ${e}`)}}}function j(e,t,o){f=t,g=e,m={...t};const n=`${o}/console`.replace("https://","wss://").replace("http://","ws://");u=new WebSocket(n),u.addEventListener("error",A),u.addEventListener("close",S),function(){for(const e of c)f[e]=x(`console.${e}`,T,!0)}()}function R(e){let t=30;const o=()=>{u?0==u.bufferedAmount||0==t?(e&&v(e),function(){for(const e of c)f[e]=x(`console.${e}`,m.log,!1)}(),u.removeEventListener("error",A),u.removeEventListener("close",S),u.close(1e3,e),u=void 0):(t--,globalThis.setTimeout(o,100)):e&&m&&m.log(e)};o()}function T(e){u&&u.readyState===WebSocket.OPEN?u.send(e):m.log(e)}function A(e){m.error(`[${g}] proxy console websocket error: ${e}`,e)}function S(e){m.debug(`[${g}] proxy console websocket closed: ${e}`,e)}function D(){Pe.preferredIcuAsset=O(Pe.config);let e="invariant"==Pe.config.globalizationMode;if(!e)if(Pe.preferredIcuAsset)Pe.diagnosticTracing&&b("ICU data archive(s) available, disabling invariant mode");else{if("custom"===Pe.config.globalizationMode||"all"===Pe.config.globalizationMode||"sharded"===Pe.config.globalizationMode){const e="invariant globalization mode is inactive and no ICU data archives are available";throw _(`ERROR: ${e}`),new Error(e)}Pe.diagnosticTracing&&b("ICU data archive(s) not available, using invariant globalization mode"),e=!0,Pe.preferredIcuAsset=null}const t="DOTNET_SYSTEM_GLOBALIZATION_INVARIANT",o=Pe.config.environmentVariables;if(void 0===o[t]&&e&&(o[t]="1"),void 0===o.TZ)try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone||null;e&&(o.TZ=e)}catch(e){y("failed to detect timezone, will fallback to UTC")}}function O(e){var t;if((null===(t=e.resources)||void 0===t?void 0:t.icu)&&"invariant"!=e.globalizationMode){const t=e.applicationCulture||(ke?globalThis.navigator&&globalThis.navigator.languages&&globalThis.navigator.languages[0]:Intl.DateTimeFormat().resolvedOptions().locale),o=e.resources.icu;let n=null;if("custom"===e.globalizationMode){if(o.length>=1)return o[0].name}else t&&"all"!==e.globalizationMode?"sharded"===e.globalizationMode&&(n=function(e){const t=e.split("-")[0];return"en"===t||["fr","fr-FR","it","it-IT","de","de-DE","es","es-ES"].includes(e)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(t)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(t)):n="icudt.dat";if(n)for(let e=0;e<o.length;e++){const t=o[e];if(t.virtualPath===n)return t.name}}return e.globalizationMode="invariant",null}(new Date).valueOf();const C=class{constructor(e){this.url=e}toString(){return this.url}};async function k(e,t){try{const o="function"==typeof globalThis.fetch;if(Se){const n=e.startsWith("file://");if(!n&&o)return globalThis.fetch(e,t||{credentials:"same-origin"});p||(h=Ne.require("url"),p=Ne.require("fs")),n&&(e=h.fileURLToPath(e));const r=await p.promises.readFile(e);return{ok:!0,headers:{length:0,get:()=>null},url:e,arrayBuffer:()=>r,json:()=>JSON.parse(r),text:()=>{throw new Error("NotImplementedException")}}}if(o)return globalThis.fetch(e,t||{credentials:"same-origin"});if("function"==typeof read)return{ok:!0,url:e,headers:{length:0,get:()=>null},arrayBuffer:()=>new Uint8Array(read(e,"binary")),json:()=>JSON.parse(read(e,"utf8")),text:()=>read(e,"utf8")}}catch(t){return{ok:!1,url:e,status:500,headers:{length:0,get:()=>null},statusText:"ERR28: "+t,arrayBuffer:()=>{throw t},json:()=>{throw t},text:()=>{throw t}}}throw new Error("No fetch implementation available")}function I(e){return"string"!=typeof e&&Be(!1,"url must be a string"),!M(e)&&0!==e.indexOf("./")&&0!==e.indexOf("../")&&globalThis.URL&&globalThis.document&&globalThis.document.baseURI&&(e=new URL(e,globalThis.document.baseURI).toString()),e}const U=/^[a-zA-Z][a-zA-Z\d+\-.]*?:\/\//,P=/[a-zA-Z]:[\\/]/;function M(e){return Se||Ie?e.startsWith("/")||e.startsWith("\\")||-1!==e.indexOf("///")||P.test(e):U.test(e)}let L,N=0;const $=[],z=[],W=new Map,F={"js-module-threads":!0,"js-module-runtime":!0,"js-module-dotnet":!0,"js-module-native":!0,"js-module-diagnostics":!0},B={...F,"js-module-library-initializer":!0},V={...F,dotnetwasm:!0,heap:!0,manifest:!0},q={...B,manifest:!0},H={...B,dotnetwasm:!0},J={dotnetwasm:!0,symbols:!0},Z={...B,dotnetwasm:!0,symbols:!0},Q={symbols:!0};function G(e){return!("icu"==e.behavior&&e.name!=Pe.preferredIcuAsset)}function K(e,t,o){null!=t||(t=[]),Be(1==t.length,`Expect to have one ${o} asset in resources`);const n=t[0];return n.behavior=o,X(n),e.push(n),n}function X(e){V[e.behavior]&&W.set(e.behavior,e)}function Y(e){Be(V[e],`Unknown single asset behavior ${e}`);const t=W.get(e);if(t&&!t.resolvedUrl)if(t.resolvedUrl=Pe.locateFile(t.name),F[t.behavior]){const e=ge(t);e?("string"!=typeof e&&Be(!1,"loadBootResource response for 'dotnetjs' type should be a URL string"),t.resolvedUrl=e):t.resolvedUrl=ce(t.resolvedUrl,t.behavior)}else if("dotnetwasm"!==t.behavior)throw new Error(`Unknown single asset behavior ${e}`);return t}function ee(e){const t=Y(e);return Be(t,`Single asset for ${e} not found`),t}let te=!1;async function oe(){if(!te){te=!0,Pe.diagnosticTracing&&b("mono_download_assets");try{const e=[],t=[],o=(e,t)=>{!Z[e.behavior]&&G(e)&&Pe.expected_instantiated_assets_count++,!H[e.behavior]&&G(e)&&(Pe.expected_downloaded_assets_count++,t.push(se(e)))};for(const t of $)o(t,e);for(const e of z)o(e,t);Pe.allDownloadsQueued.promise_control.resolve(),Promise.all([...e,...t]).then((()=>{Pe.allDownloadsFinished.promise_control.resolve()})).catch((e=>{throw Pe.err("Error in mono_download_assets: "+e),Xe(1,e),e})),await Pe.runtimeModuleLoaded.promise;const n=async e=>{const t=await e;if(t.buffer){if(!Z[t.behavior]){t.buffer&&"object"==typeof t.buffer||Be(!1,"asset buffer must be array-like or buffer-like or promise of these"),"string"!=typeof t.resolvedUrl&&Be(!1,"resolvedUrl must be string");const e=t.resolvedUrl,o=await t.buffer,n=new Uint8Array(o);pe(t),await Ue.beforeOnRuntimeInitialized.promise,Ue.instantiate_asset(t,e,n)}}else J[t.behavior]?("symbols"===t.behavior&&(await Ue.instantiate_symbols_asset(t),pe(t)),J[t.behavior]&&++Pe.actual_downloaded_assets_count):(t.isOptional||Be(!1,"Expected asset to have the downloaded buffer"),!H[t.behavior]&&G(t)&&Pe.expected_downloaded_assets_count--,!Z[t.behavior]&&G(t)&&Pe.expected_instantiated_assets_count--)},r=[],i=[];for(const t of e)r.push(n(t));for(const e of t)i.push(n(e));Promise.all(r).then((()=>{Ce||Ue.coreAssetsInMemory.promise_control.resolve()})).catch((e=>{throw Pe.err("Error in mono_download_assets: "+e),Xe(1,e),e})),Promise.all(i).then((async()=>{Ce||(await Ue.coreAssetsInMemory.promise,Ue.allAssetsInMemory.promise_control.resolve())})).catch((e=>{throw Pe.err("Error in mono_download_assets: "+e),Xe(1,e),e}))}catch(e){throw Pe.err("Error in mono_download_assets: "+e),e}}}let ne=!1;function re(){if(ne)return;ne=!0;const e=Pe.config,t=[];if(e.assets)for(const t of e.assets)"object"!=typeof t&&Be(!1,`asset must be object, it was ${typeof t} : ${t}`),"string"!=typeof t.behavior&&Be(!1,"asset behavior must be known string"),"string"!=typeof t.name&&Be(!1,"asset name must be string"),t.resolvedUrl&&"string"!=typeof t.resolvedUrl&&Be(!1,"asset resolvedUrl could be string"),t.hash&&"string"!=typeof t.hash&&Be(!1,"asset resolvedUrl could be string"),t.pendingDownload&&"object"!=typeof t.pendingDownload&&Be(!1,"asset pendingDownload could be object"),t.isCore?$.push(t):z.push(t),X(t);else if(e.resources){const o=e.resources;o.wasmNative||Be(!1,"resources.wasmNative must be defined"),o.jsModuleNative||Be(!1,"resources.jsModuleNative must be defined"),o.jsModuleRuntime||Be(!1,"resources.jsModuleRuntime must be defined"),K(z,o.wasmNative,"dotnetwasm"),K(t,o.jsModuleNative,"js-module-native"),K(t,o.jsModuleRuntime,"js-module-runtime"),o.jsModuleDiagnostics&&K(t,o.jsModuleDiagnostics,"js-module-diagnostics");const n=(e,t,o)=>{const n=e;n.behavior=t,o?(n.isCore=!0,$.push(n)):z.push(n)};if(o.coreAssembly)for(let e=0;e<o.coreAssembly.length;e++)n(o.coreAssembly[e],"assembly",!0);if(o.assembly)for(let e=0;e<o.assembly.length;e++)n(o.assembly[e],"assembly",!o.coreAssembly);if(0!=e.debugLevel&&Pe.isDebuggingSupported()){if(o.corePdb)for(let e=0;e<o.corePdb.length;e++)n(o.corePdb[e],"pdb",!0);if(o.pdb)for(let e=0;e<o.pdb.length;e++)n(o.pdb[e],"pdb",!o.corePdb)}if(e.loadAllSatelliteResources&&o.satelliteResources)for(const e in o.satelliteResources)for(let t=0;t<o.satelliteResources[e].length;t++){const r=o.satelliteResources[e][t];r.culture=e,n(r,"resource",!o.coreAssembly)}if(o.coreVfs)for(let e=0;e<o.coreVfs.length;e++)n(o.coreVfs[e],"vfs",!0);if(o.vfs)for(let e=0;e<o.vfs.length;e++)n(o.vfs[e],"vfs",!o.coreVfs);const r=O(e);if(r&&o.icu)for(let e=0;e<o.icu.length;e++){const t=o.icu[e];t.name===r&&n(t,"icu",!1)}if(o.wasmSymbols)for(let e=0;e<o.wasmSymbols.length;e++)n(o.wasmSymbols[e],"symbols",!1)}if(e.appsettings)for(let t=0;t<e.appsettings.length;t++){const o=e.appsettings[t],n=he(o);"appsettings.json"!==n&&n!==`appsettings.${e.applicationEnvironment}.json`||z.push({name:o,behavior:"vfs",cache:"no-cache",useCredentials:!0})}e.assets=[...$,...z,...t]}async function ie(e){const t=await se(e);return await t.pendingDownloadInternal.response,t.buffer}async function se(e){try{return await ae(e)}catch(t){if(!Pe.enableDownloadRetry)throw t;if(Ie||Se)throw t;if(e.pendingDownload&&e.pendingDownloadInternal==e.pendingDownload)throw t;if(e.resolvedUrl&&-1!=e.resolvedUrl.indexOf("file://"))throw t;if(t&&404==t.status)throw t;e.pendingDownloadInternal=void 0,await Pe.allDownloadsQueued.promise;try{return Pe.diagnosticTracing&&b(`Retrying download '${e.name}'`),await ae(e)}catch(t){return e.pendingDownloadInternal=void 0,await new Promise((e=>globalThis.setTimeout(e,100))),Pe.diagnosticTracing&&b(`Retrying download (2) '${e.name}' after delay`),await ae(e)}}}async function ae(e){for(;L;)await L.promise;try{++N,N==Pe.maxParallelDownloads&&(Pe.diagnosticTracing&&b("Throttling further parallel downloads"),L=i());const t=await async function(e){if(e.pendingDownload&&(e.pendingDownloadInternal=e.pendingDownload),e.pendingDownloadInternal&&e.pendingDownloadInternal.response)return e.pendingDownloadInternal.response;if(e.buffer){const t=await e.buffer;return e.resolvedUrl||(e.resolvedUrl="undefined://"+e.name),e.pendingDownloadInternal={url:e.resolvedUrl,name:e.name,response:Promise.resolve({ok:!0,arrayBuffer:()=>t,json:()=>JSON.parse(new TextDecoder("utf-8").decode(t)),text:()=>{throw new Error("NotImplementedException")},headers:{get:()=>{}}})},e.pendingDownloadInternal.response}const t=e.loadRemote&&Pe.config.remoteSources?Pe.config.remoteSources:[""];let o;for(let n of t){n=n.trim(),"./"===n&&(n="");const t=le(e,n);e.name===t?Pe.diagnosticTracing&&b(`Attempting to download '${t}'`):Pe.diagnosticTracing&&b(`Attempting to download '${t}' for ${e.name}`);try{e.resolvedUrl=t;const n=fe(e);if(e.pendingDownloadInternal=n,o=await n.response,!o||!o.ok)continue;return o}catch(e){o||(o={ok:!1,url:t,status:0,statusText:""+e});continue}}const n=e.isOptional||e.name.match(/\.pdb$/)&&Pe.config.ignorePdbLoadErrors;if(o||Be(!1,`Response undefined ${e.name}`),!n){const t=new Error(`download '${o.url}' for ${e.name} failed ${o.status} ${o.statusText}`);throw t.status=o.status,t}y(`optional download '${o.url}' for ${e.name} failed ${o.status} ${o.statusText}`)}(e);return t?(J[e.behavior]||(e.buffer=await t.arrayBuffer(),++Pe.actual_downloaded_assets_count),e):e}finally{if(--N,L&&N==Pe.maxParallelDownloads-1){Pe.diagnosticTracing&&b("Resuming more parallel downloads");const e=L;L=void 0,e.promise_control.resolve()}}}function le(e,t){let o;return null==t&&Be(!1,`sourcePrefix must be provided for ${e.name}`),e.resolvedUrl?o=e.resolvedUrl:(o=""===t?"assembly"===e.behavior||"pdb"===e.behavior?e.name:"resource"===e.behavior&&e.culture&&""!==e.culture?`${e.culture}/${e.name}`:e.name:t+e.name,o=ce(Pe.locateFile(o),e.behavior)),o&&"string"==typeof o||Be(!1,"attemptUrl need to be path or url string"),o}function ce(e,t){return Pe.modulesUniqueQuery&&q[t]&&(e+=Pe.modulesUniqueQuery),e}let de=0;const ue=new Set;function fe(e){try{e.resolvedUrl||Be(!1,"Request's resolvedUrl must be set");const t=function(e){let t=e.resolvedUrl;if(Pe.loadBootResource){const o=ge(e);if(o instanceof Promise)return o;"string"==typeof o&&(t=o)}const o={};return e.cache?o.cache=e.cache:Pe.config.disableNoCacheFetch||(o.cache="no-cache"),e.useCredentials?o.credentials="include":!Pe.config.disableIntegrityCheck&&e.hash&&(o.integrity=e.hash),Pe.fetch_like(t,o)}(e),o={name:e.name,url:e.resolvedUrl,response:t};return ue.add(e.name),o.response.then((()=>{"assembly"==e.behavior&&Pe.loadedAssemblies.push(e.name),de++,Pe.onDownloadResourceProgress&&Pe.onDownloadResourceProgress(de,ue.size)})),o}catch(t){const o={ok:!1,url:e.resolvedUrl,status:500,statusText:"ERR29: "+t,arrayBuffer:()=>{throw t},json:()=>{throw t}};return{name:e.name,url:e.resolvedUrl,response:Promise.resolve(o)}}}const me={resource:"assembly",assembly:"assembly",pdb:"pdb",icu:"globalization",vfs:"configuration",manifest:"manifest",dotnetwasm:"dotnetwasm","js-module-dotnet":"dotnetjs","js-module-native":"dotnetjs","js-module-runtime":"dotnetjs","js-module-threads":"dotnetjs"};function ge(e){var t;if(Pe.loadBootResource){const o=null!==(t=e.hash)&&void 0!==t?t:"",n=e.resolvedUrl,r=me[e.behavior];if(r){const t=Pe.loadBootResource(r,e.name,n,o,e.behavior);return"string"==typeof t?I(t):t}}}function pe(e){e.pendingDownloadInternal=null,e.pendingDownload=null,e.buffer=null,e.moduleExports=null}function he(e){let t=e.lastIndexOf("/");return t>=0&&t++,e.substring(t)}async function we(e){e&&await Promise.all((null!=e?e:[]).map((e=>async function(e){try{const t=e.name;if(!e.moduleExports){const o=ce(Pe.locateFile(t),"js-module-library-initializer");Pe.diagnosticTracing&&b(`Attempting to import '${o}' for ${e}`),e.moduleExports=await import(/*! webpackIgnore: true */o)}Pe.libraryInitializers.push({scriptName:t,exports:e.moduleExports})}catch(t){E(`Failed to import library initializer '${e}': ${t}`)}}(e))))}async function be(e,t){if(!Pe.libraryInitializers)return;const o=[];for(let n=0;n<Pe.libraryInitializers.length;n++){const r=Pe.libraryInitializers[n];r.exports[e]&&o.push(ye(r.scriptName,e,(()=>r.exports[e](...t))))}await Promise.all(o)}async function ye(e,t,o){try{await o()}catch(o){throw E(`Failed to invoke '${t}' on library initializer '${e}': ${o}`),Xe(1,o),o}}function ve(e,t){if(e===t)return e;const o={...t};return void 0!==o.assets&&o.assets!==e.assets&&(o.assets=[...e.assets||[],...o.assets||[]]),void 0!==o.resources&&(o.resources=_e(e.resources||{assembly:[],jsModuleNative:[],jsModuleRuntime:[],wasmNative:[]},o.resources)),void 0!==o.environmentVariables&&(o.environmentVariables={...e.environmentVariables||{},...o.environmentVariables||{}}),void 0!==o.runtimeOptions&&o.runtimeOptions!==e.runtimeOptions&&(o.runtimeOptions=[...e.runtimeOptions||[],...o.runtimeOptions||[]]),Object.assign(e,o)}function Ee(e,t){if(e===t)return e;const o={...t};return o.config&&(e.config||(e.config={}),o.config=ve(e.config,o.config)),Object.assign(e,o)}function _e(e,t){if(e===t)return e;const o={...t};return void 0!==o.coreAssembly&&(o.coreAssembly=[...e.coreAssembly||[],...o.coreAssembly||[]]),void 0!==o.assembly&&(o.assembly=[...e.assembly||[],...o.assembly||[]]),void 0!==o.lazyAssembly&&(o.lazyAssembly=[...e.lazyAssembly||[],...o.lazyAssembly||[]]),void 0!==o.corePdb&&(o.corePdb=[...e.corePdb||[],...o.corePdb||[]]),void 0!==o.pdb&&(o.pdb=[...e.pdb||[],...o.pdb||[]]),void 0!==o.jsModuleWorker&&(o.jsModuleWorker=[...e.jsModuleWorker||[],...o.jsModuleWorker||[]]),void 0!==o.jsModuleNative&&(o.jsModuleNative=[...e.jsModuleNative||[],...o.jsModuleNative||[]]),void 0!==o.jsModuleDiagnostics&&(o.jsModuleDiagnostics=[...e.jsModuleDiagnostics||[],...o.jsModuleDiagnostics||[]]),void 0!==o.jsModuleRuntime&&(o.jsModuleRuntime=[...e.jsModuleRuntime||[],...o.jsModuleRuntime||[]]),void 0!==o.wasmSymbols&&(o.wasmSymbols=[...e.wasmSymbols||[],...o.wasmSymbols||[]]),void 0!==o.wasmNative&&(o.wasmNative=[...e.wasmNative||[],...o.wasmNative||[]]),void 0!==o.icu&&(o.icu=[...e.icu||[],...o.icu||[]]),void 0!==o.satelliteResources&&(o.satelliteResources=function(e,t){if(e===t)return e;for(const o in t)e[o]=[...e[o]||[],...t[o]||[]];return e}(e.satelliteResources||{},o.satelliteResources||{})),void 0!==o.modulesAfterConfigLoaded&&(o.modulesAfterConfigLoaded=[...e.modulesAfterConfigLoaded||[],...o.modulesAfterConfigLoaded||[]]),void 0!==o.modulesAfterRuntimeReady&&(o.modulesAfterRuntimeReady=[...e.modulesAfterRuntimeReady||[],...o.modulesAfterRuntimeReady||[]]),void 0!==o.extensions&&(o.extensions={...e.extensions||{},...o.extensions||{}}),void 0!==o.vfs&&(o.vfs=[...e.vfs||[],...o.vfs||[]]),Object.assign(e,o)}function xe(){const e=Pe.config;if(e.environmentVariables=e.environmentVariables||{},e.runtimeOptions=e.runtimeOptions||[],e.resources=e.resources||{assembly:[],jsModuleNative:[],jsModuleWorker:[],jsModuleRuntime:[],wasmNative:[],vfs:[],satelliteResources:{}},e.assets){Pe.diagnosticTracing&&b("config.assets is deprecated, use config.resources instead");for(const t of e.assets){const o={};switch(t.behavior){case"assembly":o.assembly=[t];break;case"pdb":o.pdb=[t];break;case"resource":o.satelliteResources={},o.satelliteResources[t.culture]=[t];break;case"icu":o.icu=[t];break;case"symbols":o.wasmSymbols=[t];break;case"vfs":o.vfs=[t];break;case"dotnetwasm":o.wasmNative=[t];break;case"js-module-threads":o.jsModuleWorker=[t];break;case"js-module-runtime":o.jsModuleRuntime=[t];break;case"js-module-native":o.jsModuleNative=[t];break;case"js-module-diagnostics":o.jsModuleDiagnostics=[t];break;case"js-module-dotnet":break;default:throw new Error(`Unexpected behavior ${t.behavior} of asset ${t.name}`)}_e(e.resources,o)}}e.debugLevel,e.applicationEnvironment||(e.applicationEnvironment="Production"),e.applicationCulture&&(e.environmentVariables.LANG=`${e.applicationCulture}.UTF-8`),Ue.diagnosticTracing=Pe.diagnosticTracing=!!e.diagnosticTracing,Ue.waitForDebugger=e.waitForDebugger,Pe.maxParallelDownloads=e.maxParallelDownloads||Pe.maxParallelDownloads,Pe.enableDownloadRetry=void 0!==e.enableDownloadRetry?e.enableDownloadRetry:Pe.enableDownloadRetry}let je=!1;async function Re(e){var t;if(je)return void await Pe.afterConfigLoaded.promise;let o;try{if(e.configSrc||Pe.config&&0!==Object.keys(Pe.config).length&&(Pe.config.assets||Pe.config.resources)||(e.configSrc="dotnet.boot.js"),o=e.configSrc,je=!0,o&&(Pe.diagnosticTracing&&b("mono_wasm_load_config"),await async function(e){const t=e.configSrc,o=Pe.locateFile(t);let n=null;void 0!==Pe.loadBootResource&&(n=Pe.loadBootResource("manifest",t,o,"","manifest"));let r,i=null;if(n)if("string"==typeof n)n.includes(".json")?(i=await s(I(n)),r=await Ae(i)):r=(await import(I(n))).config;else{const e=await n;"function"==typeof e.json?(i=e,r=await Ae(i)):r=e.config}else o.includes(".json")?(i=await s(ce(o,"manifest")),r=await Ae(i)):r=(await import(ce(o,"manifest"))).config;function s(e){return Pe.fetch_like(e,{method:"GET",credentials:"include",cache:"no-cache"})}Pe.config.applicationEnvironment&&(r.applicationEnvironment=Pe.config.applicationEnvironment),ve(Pe.config,r)}(e)),xe(),await we(null===(t=Pe.config.resources)||void 0===t?void 0:t.modulesAfterConfigLoaded),await be("onRuntimeConfigLoaded",[Pe.config]),e.onConfigLoaded)try{await e.onConfigLoaded(Pe.config,Le),xe()}catch(e){throw _("onConfigLoaded() failed",e),e}xe(),Pe.afterConfigLoaded.promise_control.resolve(Pe.config)}catch(t){const n=`Failed to load config file ${o} ${t} ${null==t?void 0:t.stack}`;throw Pe.config=e.config=Object.assign(Pe.config,{message:n,error:t,isError:!0}),Xe(1,new Error(n)),t}}function Te(){return!!globalThis.navigator&&(Pe.isChromium||Pe.isFirefox)}async function Ae(e){const t=Pe.config,o=await e.json();t.applicationEnvironment||o.applicationEnvironment||(o.applicationEnvironment=e.headers.get("Blazor-Environment")||e.headers.get("DotNet-Environment")||void 0),o.environmentVariables||(o.environmentVariables={});const n=e.headers.get("DOTNET-MODIFIABLE-ASSEMBLIES");n&&(o.environmentVariables.DOTNET_MODIFIABLE_ASSEMBLIES=n);const r=e.headers.get("ASPNETCORE-BROWSER-TOOLS");return r&&(o.environmentVariables.__ASPNETCORE_BROWSER_TOOLS=r),o}"function"!=typeof importScripts||globalThis.onmessage||(globalThis.dotnetSidecar=!0);const Se="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,De="function"==typeof importScripts,Oe=De&&"undefined"!=typeof dotnetSidecar,Ce=De&&!Oe,ke="object"==typeof window||De&&!Se,Ie=!ke&&!Se;let Ue={},Pe={},Me={},Le={},Ne={},$e=!1;const ze={},We={config:ze},Fe={mono:{},binding:{},internal:Ne,module:We,loaderHelpers:Pe,runtimeHelpers:Ue,diagnosticHelpers:Me,api:Le};function Be(e,t){if(e)return;const o="Assert failed: "+("function"==typeof t?t():t),n=new Error(o);_(o,n),Ue.nativeAbort(n)}function Ve(){return void 0!==Pe.exitCode}function qe(){return Ue.runtimeReady&&!Ve()}function He(){Ve()&&Be(!1,`.NET runtime already exited with ${Pe.exitCode} ${Pe.exitReason}. You can use runtime.runMain() which doesn't exit the runtime.`),Ue.runtimeReady||Be(!1,".NET runtime didn't start yet. Please call dotnet.create() first.")}function Je(){ke&&(globalThis.addEventListener("unhandledrejection",et),globalThis.addEventListener("error",tt))}let Ze,Qe;function Ge(e){Qe&&Qe(e),Xe(e,Pe.exitReason)}function Ke(e){Ze&&Ze(e||Pe.exitReason),Xe(1,e||Pe.exitReason)}function Xe(t,o){var n,r;const i=o&&"object"==typeof o;t=i&&"number"==typeof o.status?o.status:void 0===t?-1:t;const s=i&&"string"==typeof o.message?o.message:""+o;(o=i?o:Ue.ExitStatus?function(e,t){const o=new Ue.ExitStatus(e);return o.message=t,o.toString=()=>t,o}(t,s):new Error("Exit with code "+t+" "+s)).status=t,o.message||(o.message=s);const a=""+(o.stack||(new Error).stack);try{Object.defineProperty(o,"stack",{get:()=>a})}catch(e){}const l=!!o.silent;if(o.silent=!0,Ve())Pe.diagnosticTracing&&b("mono_exit called after exit");else{try{We.onAbort==Ke&&(We.onAbort=Ze),We.onExit==Ge&&(We.onExit=Qe),ke&&(globalThis.removeEventListener("unhandledrejection",et),globalThis.removeEventListener("error",tt)),Ue.runtimeReady?(Ue.jiterpreter_dump_stats&&Ue.jiterpreter_dump_stats(!1),0===t&&(null===(n=Pe.config)||void 0===n?void 0:n.interopCleanupOnExit)&&Ue.forceDisposeProxies(!0,!0),e&&0!==t&&(null===(r=Pe.config)||void 0===r||r.dumpThreadsOnNonZeroExit)):(Pe.diagnosticTracing&&b(`abort_startup, reason: ${o}`),function(e){Pe.allDownloadsQueued.promise_control.reject(e),Pe.allDownloadsFinished.promise_control.reject(e),Pe.afterConfigLoaded.promise_control.reject(e),Pe.wasmCompilePromise.promise_control.reject(e),Pe.runtimeModuleLoaded.promise_control.reject(e),Ue.dotnetReady&&(Ue.dotnetReady.promise_control.reject(e),Ue.afterInstantiateWasm.promise_control.reject(e),Ue.beforePreInit.promise_control.reject(e),Ue.afterPreInit.promise_control.reject(e),Ue.afterPreRun.promise_control.reject(e),Ue.beforeOnRuntimeInitialized.promise_control.reject(e),Ue.afterOnRuntimeInitialized.promise_control.reject(e),Ue.afterPostRun.promise_control.reject(e))}(o))}catch(e){E("mono_exit A failed",e)}try{l||(function(e,t){if(0!==e&&t){const e=Ue.ExitStatus&&t instanceof Ue.ExitStatus?b:_;"string"==typeof t?e(t):(void 0===t.stack&&(t.stack=(new Error).stack+""),t.message?e(Ue.stringify_as_error_with_stack?Ue.stringify_as_error_with_stack(t.message+"\n"+t.stack):t.message+"\n"+t.stack):e(JSON.stringify(t)))}!Ce&&Pe.config&&(Pe.config.logExitCode?Pe.config.forwardConsoleLogsToWS?R("WASM EXIT "+e):v("WASM EXIT "+e):Pe.config.forwardConsoleLogsToWS&&R())}(t,o),function(e){if(ke&&!Ce&&Pe.config&&Pe.config.appendElementOnExit&&document){const t=document.createElement("label");t.id="tests_done",0!==e&&(t.style.background="red"),t.innerHTML=""+e,document.body.appendChild(t)}}(t))}catch(e){E("mono_exit B failed",e)}Pe.exitCode=t,Pe.exitReason||(Pe.exitReason=o),!Ce&&Ue.runtimeReady&&We.runtimeKeepalivePop()}if(Pe.config&&Pe.config.asyncFlushOnExit&&0===t)throw(async()=>{try{await async function(){try{const e=await import(/*! webpackIgnore: true */"process"),t=e=>new Promise(((t,o)=>{e.on("error",o),e.end("","utf8",t)})),o=t(e.stderr),n=t(e.stdout);let r;const i=new Promise((e=>{r=setTimeout((()=>e("timeout")),1e3)}));await Promise.race([Promise.all([n,o]),i]),clearTimeout(r)}catch(e){_(`flushing std* streams failed: ${e}`)}}()}finally{Ye(t,o)}})(),o;Ye(t,o)}function Ye(e,t){if(Ue.runtimeReady&&Ue.nativeExit)try{Ue.nativeExit(e)}catch(e){!Ue.ExitStatus||e instanceof Ue.ExitStatus||E("set_exit_code_and_quit_now failed: "+e.toString())}if(0!==e||!ke)throw Se&&Ne.process?Ne.process.exit(e):Ue.quit&&Ue.quit(e,t),t}function et(e){ot(e,e.reason,"rejection")}function tt(e){ot(e,e.error,"error")}function ot(e,t,o){e.preventDefault();try{t||(t=new Error("Unhandled "+o)),void 0===t.stack&&(t.stack=(new Error).stack),t.stack=t.stack+"",t.silent||(_("Unhandled error:",t),Xe(1,t))}catch(e){}}!function(e){if($e)throw new Error("Loader module already loaded");$e=!0,Ue=e.runtimeHelpers,Pe=e.loaderHelpers,Me=e.diagnosticHelpers,Le=e.api,Ne=e.internal,Object.assign(Le,{INTERNAL:Ne,invokeLibraryInitializers:be}),Object.assign(e.module,{config:ve(ze,{environmentVariables:{}})});const r={mono_wasm_bindings_is_ready:!1,config:e.module.config,diagnosticTracing:!1,nativeAbort:e=>{throw e||new Error("abort")},nativeExit:e=>{throw new Error("exit:"+e)}},l={gitHash:"95017c711e6afc1085133d440e42b4bd78155701",config:e.module.config,diagnosticTracing:!1,maxParallelDownloads:16,enableDownloadRetry:!0,_loaded_files:[],loadedFiles:[],loadedAssemblies:[],libraryInitializers:[],workerNextNumber:1,actual_downloaded_assets_count:0,actual_instantiated_assets_count:0,expected_downloaded_assets_count:0,expected_instantiated_assets_count:0,afterConfigLoaded:i(),allDownloadsQueued:i(),allDownloadsFinished:i(),wasmCompilePromise:i(),runtimeModuleLoaded:i(),loadingWorkers:i(),is_exited:Ve,is_runtime_running:qe,assert_runtime_running:He,mono_exit:Xe,createPromiseController:i,getPromiseController:s,assertIsControllablePromise:a,mono_download_assets:oe,resolve_single_asset_path:ee,setup_proxy_console:j,set_thread_prefix:w,installUnhandledErrorHandler:Je,retrieve_asset_download:ie,invokeLibraryInitializers:be,isDebuggingSupported:Te,exceptions:t,simd:n,relaxedSimd:o};Object.assign(Ue,r),Object.assign(Pe,l)}(Fe);let nt,rt,it,st=!1,at=!1;async function lt(e){if(!at){if(at=!0,ke&&Pe.config.forwardConsoleLogsToWS&&void 0!==globalThis.WebSocket&&j("main",globalThis.console,globalThis.location.origin),We||Be(!1,"Null moduleConfig"),Pe.config||Be(!1,"Null moduleConfig.config"),"function"==typeof e){const t=e(Fe.api);if(t.ready)throw new Error("Module.ready couldn't be redefined.");Object.assign(We,t),Ee(We,t)}else{if("object"!=typeof e)throw new Error("Can't use moduleFactory callback of createDotnetRuntime function.");Ee(We,e)}await async function(e){if(Se){const e=await import(/*! webpackIgnore: true */"process"),t=14;if(e.versions.node.split(".")[0]<t)throw new Error(`NodeJS at '${e.execPath}' has too low version '${e.versions.node}', please use at least ${t}. See also https://aka.ms/dotnet-wasm-features`)}const t=/*! webpackIgnore: true */import.meta.url,o=t.indexOf("?");var n;if(o>0&&(Pe.modulesUniqueQuery=t.substring(o)),Pe.scriptUrl=t.replace(/\\/g,"/").replace(/[?#].*/,""),Pe.scriptDirectory=(n=Pe.scriptUrl).slice(0,n.lastIndexOf("/"))+"/",Pe.locateFile=e=>"URL"in globalThis&&globalThis.URL!==C?new URL(e,Pe.scriptDirectory).toString():M(e)?e:Pe.scriptDirectory+e,Pe.fetch_like=k,Pe.out=console.log,Pe.err=console.error,Pe.onDownloadResourceProgress=e.onDownloadResourceProgress,ke&&globalThis.navigator){const e=globalThis.navigator,t=e.userAgentData&&e.userAgentData.brands;t&&t.length>0?Pe.isChromium=t.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):e.userAgent&&(Pe.isChromium=e.userAgent.includes("Chrome"),Pe.isFirefox=e.userAgent.includes("Firefox"))}Ne.require=Se?await import(/*! webpackIgnore: true */"module").then((e=>e.createRequire(/*! webpackIgnore: true */import.meta.url))):Promise.resolve((()=>{throw new Error("require not supported")})),void 0===globalThis.URL&&(globalThis.URL=C)}(We)}}async function ct(e){return await lt(e),Ze=We.onAbort,Qe=We.onExit,We.onAbort=Ke,We.onExit=Ge,We.ENVIRONMENT_IS_PTHREAD?async function(){(function(){const e=new MessageChannel,t=e.port1,o=e.port2;t.addEventListener("message",(e=>{var n,r;n=JSON.parse(e.data.config),r=JSON.parse(e.data.monoThreadInfo),st?Pe.diagnosticTracing&&b("mono config already received"):(ve(Pe.config,n),Ue.monoThreadInfo=r,xe(),Pe.diagnosticTracing&&b("mono config received"),st=!0,Pe.afterConfigLoaded.promise_control.resolve(Pe.config),ke&&n.forwardConsoleLogsToWS&&void 0!==globalThis.WebSocket&&Pe.setup_proxy_console("worker-idle",console,globalThis.location.origin)),t.close(),o.close()}),{once:!0}),t.start(),self.postMessage({[l]:{monoCmd:"preload",port:o}},[o])})(),await Pe.afterConfigLoaded.promise,function(){const e=Pe.config;e.assets||Be(!1,"config.assets must be defined");for(const t of e.assets)X(t),Q[t.behavior]&&z.push(t)}(),setTimeout((async()=>{try{await oe()}catch(e){Xe(1,e)}}),0);const e=dt(),t=await Promise.all(e);return await ut(t),We}():async function(){var e;await Re(We),re();const t=dt();(async function(){try{const e=ee("dotnetwasm");await se(e),e&&e.pendingDownloadInternal&&e.pendingDownloadInternal.response||Be(!1,"Can't load dotnet.native.wasm");const t=await e.pendingDownloadInternal.response,o=t.headers&&t.headers.get?t.headers.get("Content-Type"):void 0;let n;if("function"==typeof WebAssembly.compileStreaming&&"application/wasm"===o)n=await WebAssembly.compileStreaming(t);else{ke&&"application/wasm"!==o&&E('WebAssembly resource does not have the expected content type "application/wasm", so falling back to slower ArrayBuffer instantiation.');const e=await t.arrayBuffer();Pe.diagnosticTracing&&b("instantiate_wasm_module buffered"),n=Ie?await Promise.resolve(new WebAssembly.Module(e)):await WebAssembly.compile(e)}e.pendingDownloadInternal=null,e.pendingDownload=null,e.buffer=null,e.moduleExports=null,Pe.wasmCompilePromise.promise_control.resolve(n)}catch(e){Pe.wasmCompilePromise.promise_control.reject(e)}})(),setTimeout((async()=>{try{D(),await oe()}catch(e){Xe(1,e)}}),0);const o=await Promise.all(t);return await ut(o),await Ue.dotnetReady.promise,await we(null===(e=Pe.config.resources)||void 0===e?void 0:e.modulesAfterRuntimeReady),await be("onRuntimeReady",[Fe.api]),Le}()}function dt(){const e=ee("js-module-runtime"),t=ee("js-module-native");if(nt&&rt)return[nt,rt,it];"object"==typeof e.moduleExports?nt=e.moduleExports:(Pe.diagnosticTracing&&b(`Attempting to import '${e.resolvedUrl}' for ${e.name}`),nt=import(/*! webpackIgnore: true */e.resolvedUrl)),"object"==typeof t.moduleExports?rt=t.moduleExports:(Pe.diagnosticTracing&&b(`Attempting to import '${t.resolvedUrl}' for ${t.name}`),rt=import(/*! webpackIgnore: true */t.resolvedUrl));const o=Y("js-module-diagnostics");return o&&("object"==typeof o.moduleExports?it=o.moduleExports:(Pe.diagnosticTracing&&b(`Attempting to import '${o.resolvedUrl}' for ${o.name}`),it=import(/*! webpackIgnore: true */o.resolvedUrl))),[nt,rt,it]}async function ut(e){const{initializeExports:t,initializeReplacements:o,configureRuntimeStartup:n,configureEmscriptenStartup:r,configureWorkerStartup:i,setRuntimeGlobals:s,passEmscriptenInternals:a}=e[0],{default:l}=e[1],c=e[2];s(Fe),t(Fe),c&&c.setRuntimeGlobals(Fe),await n(We),Pe.runtimeModuleLoaded.promise_control.resolve(),l((e=>(Object.assign(We,{ready:e.ready,__dotnet_runtime:{initializeReplacements:o,configureEmscriptenStartup:r,configureWorkerStartup:i,passEmscriptenInternals:a}}),We))).catch((e=>{if(e.message&&e.message.toLowerCase().includes("out of memory"))throw new Error(".NET runtime has failed to start, because too much memory was requested. Please decrease the memory by adjusting EmccMaximumHeapSize. See also https://aka.ms/dotnet-wasm-features");throw e}))}const ft=new class{withModuleConfig(e){try{return Ee(We,e),this}catch(e){throw Xe(1,e),e}}withOnConfigLoaded(e){try{return Ee(We,{onConfigLoaded:e}),this}catch(e){throw Xe(1,e),e}}withConsoleForwarding(){try{return ve(ze,{forwardConsoleLogsToWS:!0}),this}catch(e){throw Xe(1,e),e}}withExitOnUnhandledError(){try{return ve(ze,{exitOnUnhandledError:!0}),Je(),this}catch(e){throw Xe(1,e),e}}withAsyncFlushOnExit(){try{return ve(ze,{asyncFlushOnExit:!0}),this}catch(e){throw Xe(1,e),e}}withExitCodeLogging(){try{return ve(ze,{logExitCode:!0}),this}catch(e){throw Xe(1,e),e}}withElementOnExit(){try{return ve(ze,{appendElementOnExit:!0}),this}catch(e){throw Xe(1,e),e}}withInteropCleanupOnExit(){try{return ve(ze,{interopCleanupOnExit:!0}),this}catch(e){throw Xe(1,e),e}}withDumpThreadsOnNonZeroExit(){try{return ve(ze,{dumpThreadsOnNonZeroExit:!0}),this}catch(e){throw Xe(1,e),e}}withWaitingForDebugger(e){try{return ve(ze,{waitForDebugger:e}),this}catch(e){throw Xe(1,e),e}}withInterpreterPgo(e,t){try{return ve(ze,{interpreterPgo:e,interpreterPgoSaveDelay:t}),ze.runtimeOptions?ze.runtimeOptions.push("--interp-pgo-recording"):ze.runtimeOptions=["--interp-pgo-recording"],this}catch(e){throw Xe(1,e),e}}withConfig(e){try{return ve(ze,e),this}catch(e){throw Xe(1,e),e}}withConfigSrc(e){try{return e&&"string"==typeof e||Be(!1,"must be file path or URL"),Ee(We,{configSrc:e}),this}catch(e){throw Xe(1,e),e}}withVirtualWorkingDirectory(e){try{return e&&"string"==typeof e||Be(!1,"must be directory path"),ve(ze,{virtualWorkingDirectory:e}),this}catch(e){throw Xe(1,e),e}}withEnvironmentVariable(e,t){try{const o={};return o[e]=t,ve(ze,{environmentVariables:o}),this}catch(e){throw Xe(1,e),e}}withEnvironmentVariables(e){try{return e&&"object"==typeof e||Be(!1,"must be dictionary object"),ve(ze,{environmentVariables:e}),this}catch(e){throw Xe(1,e),e}}withDiagnosticTracing(e){try{return"boolean"!=typeof e&&Be(!1,"must be boolean"),ve(ze,{diagnosticTracing:e}),this}catch(e){throw Xe(1,e),e}}withDebugging(e){try{return null!=e&&"number"==typeof e||Be(!1,"must be number"),ve(ze,{debugLevel:e}),this}catch(e){throw Xe(1,e),e}}withApplicationArguments(...e){try{return e&&Array.isArray(e)||Be(!1,"must be array of strings"),ve(ze,{applicationArguments:e}),this}catch(e){throw Xe(1,e),e}}withRuntimeOptions(e){try{return e&&Array.isArray(e)||Be(!1,"must be array of strings"),ze.runtimeOptions?ze.runtimeOptions.push(...e):ze.runtimeOptions=e,this}catch(e){throw Xe(1,e),e}}withMainAssembly(e){try{return ve(ze,{mainAssemblyName:e}),this}catch(e){throw Xe(1,e),e}}withApplicationArgumentsFromQuery(){try{if(!globalThis.window)throw new Error("Missing window to the query parameters from");if(void 0===globalThis.URLSearchParams)throw new Error("URLSearchParams is supported");const e=new URLSearchParams(globalThis.window.location.search).getAll("arg");return this.withApplicationArguments(...e)}catch(e){throw Xe(1,e),e}}withApplicationEnvironment(e){try{return ve(ze,{applicationEnvironment:e}),this}catch(e){throw Xe(1,e),e}}withApplicationCulture(e){try{return ve(ze,{applicationCulture:e}),this}catch(e){throw Xe(1,e),e}}withResourceLoader(e){try{return Pe.loadBootResource=e,this}catch(e){throw Xe(1,e),e}}async download(){try{await async function(){lt(We),await Re(We),re(),D(),oe(),await Pe.allDownloadsFinished.promise}()}catch(e){throw Xe(1,e),e}}async create(){try{return this.instance||(this.instance=await async function(){return await ct(We),Fe.api}()),this.instance}catch(e){throw Xe(1,e),e}}async run(){try{return We.config||Be(!1,"Null moduleConfig.config"),this.instance||await this.create(),this.instance.runMainAndExit()}catch(e){throw Xe(1,e),e}}},mt=Xe,gt=ct;Ie||"function"==typeof globalThis.URL||Be(!1,"This browser/engine doesn't support URL API. Please use a modern version. See also https://aka.ms/dotnet-wasm-features"),"function"!=typeof globalThis.BigInt64Array&&Be(!1,"This browser/engine doesn't support BigInt64Array API. Please use a modern version. See also https://aka.ms/dotnet-wasm-features"),ft.withConfig(/*json-start*/{
5
5
  "mainAssemblyName": "PKHeX.Everywhere.Engine.Host",
6
6
  "resources": {
7
- "hash": "sha256-1NFDv+Kdw6EzDaVNTmUZ5YCrvIcpQOD2v686NnxdGxM=",
7
+ "hash": "sha256-5lQbHshdhORk5wzhGkoEA2BQ/iAU9/7wZ3NPGEcJIUM=",
8
8
  "jsModuleNative": [
9
9
  {
10
10
  "name": "dotnet.native.b6l13xorvf.js"
@@ -71,50 +71,50 @@ var e=!1;const t=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,
71
71
  },
72
72
  {
73
73
  "virtualPath": "PKHeX.Core.AutoMod.wasm",
74
- "name": "PKHeX.Core.AutoMod.jymtm3a52l.wasm",
75
- "hash": "sha256-hUQzQ3hy+zuanDk/QDsZyYJmzBOmP9hMpcO1tslA6xk=",
74
+ "name": "PKHeX.Core.AutoMod.q4j5wb72bn.wasm",
75
+ "hash": "sha256-5vM1J4t/Lvj7Z/UjimE6bU+u9Q39ryj4UlxVeKGN9QU=",
76
76
  "cache": "force-cache"
77
77
  },
78
78
  {
79
79
  "virtualPath": "PKHeX.Core.wasm",
80
- "name": "PKHeX.Core.o5xu4i7aw3.wasm",
81
- "hash": "sha256-XP+/R6+7vKh6is1o20WtEfFRRWi64ehHFPmPSYwax3w=",
80
+ "name": "PKHeX.Core.t37br1ag1k.wasm",
81
+ "hash": "sha256-R8iNLr9lkk7PF6xAQhg5kvj4jpUfH/P6+/LMUBKWMuM=",
82
82
  "cache": "force-cache"
83
83
  },
84
84
  {
85
85
  "virtualPath": "PKHeX.Everywhere.Engine.Host.wasm",
86
- "name": "PKHeX.Everywhere.Engine.Host.vexxdrw0vm.wasm",
87
- "hash": "sha256-Z6DNP+FtOW9RosONqejMfns5WnZ4SwL1y51b5Ywpt9U=",
86
+ "name": "PKHeX.Everywhere.Engine.Host.puyckuabco.wasm",
87
+ "hash": "sha256-cWfowrWTXccgxTun22ji5lDD2DHLmf3JfFqO8OMHNkg=",
88
88
  "cache": "force-cache"
89
89
  },
90
90
  {
91
91
  "virtualPath": "PKHeX.Everywhere.Engine.PlugIns.wasm",
92
- "name": "PKHeX.Everywhere.Engine.PlugIns.f26bjsbdax.wasm",
93
- "hash": "sha256-d8YVRcUnc9VnVA3nJnjIX+947vHonU4cXjr/mWQTs+M=",
92
+ "name": "PKHeX.Everywhere.Engine.PlugIns.8l2uyrfkw3.wasm",
93
+ "hash": "sha256-ZPnouJbjDI+OwNh1AlcTe+rmd+8ppDEdFhxVBKhoE2g=",
94
94
  "cache": "force-cache"
95
95
  },
96
96
  {
97
97
  "virtualPath": "PKHeX.Everywhere.Engine.wasm",
98
- "name": "PKHeX.Everywhere.Engine.a1cmm9oha5.wasm",
99
- "hash": "sha256-kr+yAIUWhWyX/TCIN3o2sY0ssIseEVS3CHvWfZDh9pw=",
98
+ "name": "PKHeX.Everywhere.Engine.9olx2dnw7s.wasm",
99
+ "hash": "sha256-+fEuAI7TfJ17irjSifO8FZ8a/+rgZ9xToT7Fz+pffMg=",
100
100
  "cache": "force-cache"
101
101
  },
102
102
  {
103
103
  "virtualPath": "PKHeX.Everywhere.PlugIns.wasm",
104
- "name": "PKHeX.Everywhere.PlugIns.frjbtid2ks.wasm",
105
- "hash": "sha256-y00j7sSzKAg7v42Twd/b0R6L1Ldf38TDyfJqTsletyI=",
104
+ "name": "PKHeX.Everywhere.PlugIns.1xfglq14db.wasm",
105
+ "hash": "sha256-a16Uy+dtR9GpCkasEmZuh2HKe3O9uVp/oZIQ5cqLeAc=",
106
106
  "cache": "force-cache"
107
107
  },
108
108
  {
109
109
  "virtualPath": "PKHeX.Everywhere.RomHacks.wasm",
110
- "name": "PKHeX.Everywhere.RomHacks.x9h85ty4jv.wasm",
111
- "hash": "sha256-deKSOSpDCjEq8mxZiEh/ADn9+GBMav+AQxEZe1d14BM=",
110
+ "name": "PKHeX.Everywhere.RomHacks.92i6474f3n.wasm",
111
+ "hash": "sha256-8aDWSgUNqQp6IF87PPAbHWgkx5Yw/9isKuoSFQvH3+E=",
112
112
  "cache": "force-cache"
113
113
  },
114
114
  {
115
115
  "virtualPath": "PKHeX.Facade.wasm",
116
- "name": "PKHeX.Facade.fw0kpa06u6.wasm",
117
- "hash": "sha256-cR2bFCHijXK7LYJnscrGqG5p3LtlLuEWuaTvUOFzSzg=",
116
+ "name": "PKHeX.Facade.9khxruj70m.wasm",
117
+ "hash": "sha256-1wU7RzW41o7Vlei9hn8z12uUG+0xtfsJyrJGLv1Ed3M=",
118
118
  "cache": "force-cache"
119
119
  },
120
120
  {
@@ -1,6 +1,6 @@
1
- import type { ActionPlacement, AddFromFileOptions, AddedPokemon, Badge, Binary, BoxEntry, CatalogNames, CatalogNamesRequest, Choice, DeclaredPage, EditablePokemon, EncounterRow, EncounterVersions, ExportedPokemon, ExportedSave, FilePreview, FormatEntry, GameProgress, InstalledPlugIn, ItemHandle, LoadedSave, PlugInAction, PlugInDetails, PlugInFailure, PlugInOutcome, PlugInSetting, PlugInState, PokemonHandle, PokemonId, PokemonOptions, PokemonPatch, PokemonSummary, Pouch, PublishedVersion, SaveEvents, SaveSummary, SaveVersion, SpeciesEntry, TrainerCard, TrainerGender, TransferOffer, TransferPreview, TransferResult, TransferSummary, VersionEntry } from './types';
1
+ import type { ActionPlacement, AddFromFileOptions, AddedPokemon, Badge, Binary, BoxEntry, CatalogNames, CatalogNamesRequest, Choice, ConvertedPokemon, DeclaredPage, EditablePokemon, EncounterRow, EncounterVersions, ExportedPokemon, ExportedSave, FilePreview, FormatEntry, GameProgress, InstalledPlugIn, ItemHandle, LoadedSave, PlugInAction, PlugInDetails, PlugInFailure, PlugInOutcome, PlugInSetting, PlugInState, PokemonFile, PokemonHandle, PokemonId, PokemonOptions, PokemonPatch, PokemonSummary, Pouch, PublishedVersion, SaveEvents, SaveSummary, SaveVersion, SpeciesEntry, TrainerCard, TrainerGender, TransferOffer, TransferPreview, TransferResult, TransferSave, TransferSummary, VersionEntry } from './types';
2
2
  export type Invoke = <T>(call: CallName, args: unknown[]) => Promise<T>;
3
- export declare const queries: readonly ['box.get', 'box.list', 'box.previewFile', 'box.showdown', 'catalog.names', 'encounters.search', 'encounters.versions', 'events.flag', 'events.get', 'game.balls', 'game.blankVersions', 'game.formats', 'game.get', 'game.heldItems', 'game.languages', 'game.moves', 'game.natures', 'game.originGames', 'game.progress', 'game.types', 'game.version', 'inventory.get', 'party.get', 'party.showdown', 'plugins.actions', 'plugins.details', 'plugins.failures', 'plugins.installed', 'plugins.isSupported', 'plugins.pageModule', 'plugins.pages', 'plugins.setting', 'plugins.state', 'pokemon.details', 'pokemon.export', 'pokemon.get', 'pokemon.options', 'pokemon.read', 'pokemon.showdown', 'species.list', 'trainer.badges', 'trainer.get', 'transfer.get', 'transfer.partnerBoxes', 'transfer.preview'];
3
+ export declare const queries: readonly ['box.get', 'box.list', 'box.previewFile', 'box.showdown', 'catalog.names', 'encounters.search', 'encounters.versions', 'events.flag', 'events.get', 'game.balls', 'game.blankVersions', 'game.formats', 'game.get', 'game.heldItems', 'game.languages', 'game.moves', 'game.natures', 'game.originGames', 'game.progress', 'game.types', 'game.version', 'inventory.get', 'party.get', 'party.showdown', 'plugins.actions', 'plugins.details', 'plugins.failures', 'plugins.installed', 'plugins.isSupported', 'plugins.pageModule', 'plugins.pages', 'plugins.setting', 'plugins.state', 'pokemon.details', 'pokemon.export', 'pokemon.get', 'pokemon.options', 'pokemon.read', 'pokemon.showdown', 'species.list', 'trainer.badges', 'trainer.get', 'transfer.convert', 'transfer.details', 'transfer.export', 'transfer.get', 'transfer.partnerBoxes', 'transfer.preview'];
4
4
  export declare const commands: readonly ['box.addEncounter', 'box.addFromFile', 'events.giveTickets', 'events.setFlag', 'events.setWork', 'game.close', 'game.enableFormat', 'game.export', 'game.file', 'game.load', 'game.loadBlank', 'inventory.setItem', 'plugins.dismissFailure', 'plugins.newestCompatible', 'plugins.register', 'plugins.run', 'plugins.setEnabled', 'plugins.setHookEnabled', 'plugins.unregister', 'plugins.updateSetting', 'pokemon.addToBox', 'pokemon.clone', 'pokemon.commit', 'pokemon.edit', 'pokemon.setLevel', 'pokemon.update', 'trainer.setBadges', 'trainer.setBattlePoints', 'trainer.setGender', 'trainer.setMoney', 'trainer.setName', 'transfer.close', 'transfer.commit', 'transfer.open'];
5
5
  export type QueryName = (typeof queries)[number];
6
6
  export type CommandName = (typeof commands)[number];
@@ -169,8 +169,18 @@ export interface EngineClient {
169
169
  transfer: {
170
170
  /** Closes the open transfer, dropping the partner save. Closing with no transfer open does nothing. */
171
171
  close(): Promise<void>;
172
- /** Moves the offered Pokémon: each leaves its slot and lands in the first empty box slots of the other save. Fails with `transfer-refused`, writing nothing, when `transfer.preview()` refuses any of them. Requires a loaded save; throws `no-save` otherwise. */
172
+ /** Moves the offered Pokémon: each leaves its slot and lands in the first empty box slots of the other save. Fails with `transfer-refused`, writing nothing, when `transfer.preview()` refuses any of them, and as `transfer.preview()` does on an arrival. Requires a loaded save; throws `no-save` otherwise. */
173
173
  commit(offer: TransferOffer): Promise<TransferResult>;
174
+ /**
175
+ * Converts a Pokémon file to `to`'s format the way a transfer would: by the official route when there is one, unofficially otherwise. The same file always gives the same bytes. Nothing is written. Fails with `unparseable`, `not-in-game` and `conversion-failed` as `box.previewFile` does, and with `no-transfer` when no transfer is open. Requires a loaded save; throws `no-save` otherwise.
176
+ *
177
+ * @param to The save to convert the Pokémon to.
178
+ */
179
+ convert(file: PokemonFile, to: TransferSave): Promise<ConvertedPokemon>;
180
+ /** `pokemon.details` for a slot in either save of the open transfer. Requires a loaded save; throws `no-save` otherwise. */
181
+ details(at: PokemonHandle, save: TransferSave): Promise<EditablePokemon>;
182
+ /** `pokemon.export` for a slot in either save of the open transfer. Requires a loaded save; throws `no-save` otherwise. */
183
+ export(at: PokemonHandle, save: TransferSave): Promise<ExportedPokemon>;
174
184
  /** Reads the open transfer's partner, routes and room, or null when no transfer is open or no save is loaded. */
175
185
  get(): Promise<TransferSummary | null>;
176
186
  /**
@@ -183,7 +193,7 @@ export interface EngineClient {
183
193
  open(data: Binary, fileName?: string | null, formatId?: string | null): Promise<TransferSummary>;
184
194
  /** Lists the partner's party, then its boxed Pokémon in box and slot order. Handles point into the partner save. */
185
195
  partnerBoxes(): Promise<PokemonSummary[]>;
186
- /** Shows what moving the offered Pokémon would change, and which ones can't move. Nothing is written. A handle without a Pokémon fails with `not-found`, and the draft with `draft-not-allowed`. Requires a loaded save; throws `no-save` otherwise. */
196
+ /** Shows what moving the offered Pokémon would change, and which ones can't move. Nothing is written. A handle without a Pokémon fails with `not-found`, and the draft with `draft-not-allowed`. An arrival for a Pokémon the offer doesn't have fails with `not-found`, bytes that aren't a Pokémon of the destination's format with `unparseable`, and a patch the way `pokemon.update` fails. Requires a loaded save; throws `no-save` otherwise. */
187
197
  preview(offer: TransferOffer): Promise<TransferPreview>;
188
198
  };
189
199
  }
@@ -81,6 +81,13 @@ export interface Choice {
81
81
  id: number;
82
82
  name: string;
83
83
  }
84
+ /** A Pokémon file converted to a save's format by `transfer.convert`. */
85
+ export interface ConvertedPokemon {
86
+ /** The converted Pokémon, in the bytes `pokemon.export` writes. */
87
+ bytes: Uint8Array<ArrayBuffer>;
88
+ /** Its details, with `legality` judged in the save it was converted to. */
89
+ pokemon: EditablePokemon;
90
+ }
84
91
  /** A page an enabled plug-in declares, as listed by `plugins.pages`. */
85
92
  export interface DeclaredPage {
86
93
  /** The plug-in's id, its assembly name. */
@@ -97,6 +104,8 @@ export interface EditablePokemon {
97
104
  species: number | null;
98
105
  /** The species as the save stores it, before any conversion: the game's internal index in Gen 1 to 3, Gen 9 and ROM hacks, and the National Pokédex number elsewhere. Use it to index the game's own tables, such as its sprites. */
99
106
  speciesIndex: number;
107
+ /** National Pokédex number of the first species in its evolution family: 1 for Bulbasaur, Ivysaur and Venusaur. */
108
+ evolutionFamily: number;
100
109
  /** Neither PKHeX nor the save knows the species, such as a ROM hack's egg slot. */
101
110
  isUnknown: boolean;
102
111
  /** When false, show the fields read-only: `pokemon.update()` fails with `unknown-species`. */
@@ -231,6 +240,8 @@ export interface ExportedPokemon {
231
240
  bytes: Uint8Array<ArrayBuffer>;
232
241
  /** Suggested file name, with the extension of the format, such as `.pk9`. */
233
242
  fileName: string;
243
+ /** The generation of the save's format, so the file can be passed to `transfer.convert`. */
244
+ generation: number;
234
245
  }
235
246
  /** The save file written by `game.export`, ready to download. */
236
247
  export interface ExportedSave {
@@ -356,15 +367,6 @@ export interface ItemHandle {
356
367
  /** The item's id in the save's own item list, as `OwnedItem.id` and `AddableItem.id` give it. */
357
368
  itemId: number;
358
369
  }
359
- /** A Pokémon as it was before a transfer to an older game, to restore what that game dropped. Store it and pass it in `keptCopies` when the Pokémon moves to a newer game again. */
360
- export interface KeptCopy {
361
- /** The Pokémon's `identityKey`. */
362
- identityKey: string;
363
- /** The generation of the game it left. */
364
- generation: number;
365
- /** The Pokémon as it was in that game, in the bytes `pokemon.export` writes. */
366
- bytes: Uint8Array<ArrayBuffer>;
367
- }
368
370
  /** The result of PKHeX's legality check on a Pokémon. */
369
371
  export interface Legality {
370
372
  /** True when PKHeX finds nothing illegal. */
@@ -402,14 +404,12 @@ export interface OfferedPokemon {
402
404
  from: PokemonSummary;
403
405
  /** The Pokémon as it will be in the other save. Its handle is the box slot it will land in. */
404
406
  arrives: PokemonSummary;
405
- /** The fields the move changes, in the order of `TransferField`. A move can show up once per move removed. */
407
+ /** The fields the move changes, in the order of `TransferField`. A move can show up once per move removed. For a Pokémon with an arrival, the Pokémon as it is against the arrival, with the route's reasons. */
406
408
  changes: TransferChange[];
407
409
  /** What the move changes in either save. */
408
410
  saveChanges: TransferSaveChange[];
409
411
  /** PKHeX's legality check of the Pokémon as it arrives, judged in the destination game. */
410
412
  legality: Legality;
411
- /** `transfer.commit` returns a kept copy of this Pokémon. */
412
- keepsCopy: boolean;
413
413
  }
414
414
  /** An item the trainer holds in a pouch. */
415
415
  export interface OwnedItem {
@@ -590,6 +590,13 @@ export interface PokemonChanged {
590
590
  }
591
591
  /** A Pokémon field a save can lock, named as in `PokemonPatch`. */
592
592
  export type PokemonField = 'gender' | 'nature' | 'ability' | 'metLocation';
593
+ /** A Pokémon file, such as `pokemon.export` writes. */
594
+ export interface PokemonFile {
595
+ /** The Pokémon, decrypted or encrypted, at party or box size. */
596
+ bytes: Binary;
597
+ /** The generation of the game it comes from, which tells formats of the same size apart. */
598
+ generation: number;
599
+ }
593
600
  /** A Pokémon's form. */
594
601
  export interface PokemonForm {
595
602
  /** Form index within the species' forms. 0 is the default form. */
@@ -718,8 +725,6 @@ export interface PokemonPreview {
718
725
  isEgg: boolean;
719
726
  /** Type ids, named by `game.types()`. One entry for a single-type Pokémon. */
720
727
  types: number[];
721
- /** The same for this Pokémon in every game it moves to: its PID, trainer ID and secret ID. Null in Gen 1 and 2. */
722
- identityKey: string | null;
723
728
  }
724
729
  /** Fires when an edited or cloned Pokémon is written to the save: by `pokemon.commit` back to its slot, or by `pokemon.addToBox` to the first empty box slot. */
725
730
  export interface PokemonSaved {
@@ -753,8 +758,6 @@ export interface PokemonSummary {
753
758
  isEgg: boolean;
754
759
  /** Type ids, named by `game.types()`. One entry for a single-type Pokémon. */
755
760
  types: number[];
756
- /** The same for this Pokémon in every game it moves to: its PID, trainer ID and secret ID. Null in Gen 1 and 2. */
757
- identityKey: string | null;
758
761
  }
759
762
  /** One bag pouch in the save, returned by `inventory.get`. */
760
763
  export interface Pouch {
@@ -894,6 +897,15 @@ export interface TrainerCard {
894
897
  }
895
898
  /** The trainer's gender, as `trainer.get` returns it and `trainer.setGender` takes it. */
896
899
  export type TrainerGender = 'male' | 'female';
900
+ /** An offered Pokémon that arrives as `bytes`, already in the destination's format, with `patch` applied as `pokemon.update` applies it, instead of the usual conversion. */
901
+ export interface TransferArrival {
902
+ /** The offered Pokémon, as in `send` or `receive`. When both offer it, the arrival is for the one sent. */
903
+ at: PokemonHandle;
904
+ /** The Pokémon in the destination's format, such as `transfer.convert` returns. */
905
+ bytes: Binary;
906
+ /** The fields to change on the arrival. */
907
+ patch: PokemonPatch;
908
+ }
897
909
  /** A field a transfer changes. */
898
910
  export interface TransferChange {
899
911
  field: TransferField;
@@ -904,7 +916,7 @@ export interface TransferChange {
904
916
  reason: TransferChangeReason;
905
917
  }
906
918
  /** Why a transfer changes a field. */
907
- export type TransferChangeReason = 'hmRemoved' | 'itemRemapped' | 'itemRemoved' | 'link' | 'timeCapsule' | 'palPark' | 'pokeTransfer' | 'received' | 'tradeEvolution' | 'itemUsed' | 'formReverted' | 'notInGame' | 'unofficial' | 'restored';
919
+ export type TransferChangeReason = 'hmRemoved' | 'itemRemapped' | 'itemRemoved' | 'link' | 'timeCapsule' | 'palPark' | 'pokeTransfer' | 'received' | 'tradeEvolution' | 'itemUsed' | 'formReverted' | 'notInGame' | 'unofficial';
908
920
  /** Which way a Pokémon moves: `send` from the loaded save to the partner, `receive` from the partner to the loaded save. */
909
921
  export type TransferDirection = 'send' | 'receive';
910
922
  /** A field of a Pokémon that a transfer can change. */
@@ -915,8 +927,8 @@ export interface TransferOffer {
915
927
  send: PokemonHandle[];
916
928
  /** Pokémon to move from the partner to the loaded save. */
917
929
  receive: PokemonHandle[];
918
- /** Copies `transfer.commit` returned from earlier transfers to older games. A copy restores what an older game dropped from the offered Pokémon with its `identityKey`. Copies that apply to none are ignored. */
919
- keptCopies?: KeptCopy[] | null;
930
+ /** Offered Pokémon that arrive as given instead of by the usual conversion. */
931
+ arrivals?: TransferArrival[] | null;
920
932
  }
921
933
  /** What `transfer.commit` would do with an offer, returned by `transfer.preview`. */
922
934
  export interface TransferPreview {
@@ -952,6 +964,8 @@ export interface TransferRoutes {
952
964
  /** From the partner to the loaded save. */
953
965
  receive: TransferRoute | null;
954
966
  }
967
+ /** Which save of the open transfer: `mine`, the loaded one, or `partner`. */
968
+ export type TransferSave = 'mine' | 'partner';
955
969
  /** A change a transfer makes to a save. */
956
970
  export interface TransferSaveChange {
957
971
  kind: TransferSaveChangeKind;
@@ -976,8 +990,6 @@ export interface TransferredPokemon {
976
990
  id: PokemonId;
977
991
  /** The box slot it landed in: in the partner for `send`, in the loaded save for `receive`. */
978
992
  at: PokemonHandle;
979
- /** The Pokémon as it was before it moved to an older game. Null when it didn't. Store it to pass in a later transfer's `keptCopies`. */
980
- keptCopy: KeptCopy | null;
981
993
  }
982
994
  /** A game version with its display name. */
983
995
  export interface VersionEntry {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as createEngine, n as topics, o as wasmHost, r as EngineError } from "./topics-DL1u1AGF.js";
1
+ import { a as createEngine, n as topics, o as wasmHost, r as EngineError } from "./topics-gdmkaB1O.js";
2
2
  //#region src/generated/errors.ts
3
3
  var errorCodes = [
4
4
  "no-save",
package/dist/internal.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as call, s as affects, t as queryTopics } from "./topics-DL1u1AGF.js";
1
+ import { i as call, s as affects, t as queryTopics } from "./topics-gdmkaB1O.js";
2
2
  export { affects, call, queryTopics };
@@ -144,11 +144,10 @@ function createClient(invoke) {
144
144
  },
145
145
  transfer: {
146
146
  close: () => invoke("transfer.close", []),
147
- commit: async (offer) => withBytes(await invoke("transfer.commit", [await withBase64(offer, ["keptCopies.bytes"])]), [
148
- "save.bytes",
149
- "partner.bytes",
150
- "arrived.keptCopy.bytes"
151
- ]),
147
+ commit: async (offer) => withBytes(await invoke("transfer.commit", [await withBase64(offer, ["arrivals.bytes"])]), ["save.bytes", "partner.bytes"]),
148
+ convert: async (file, to) => withBytes(await invoke("transfer.convert", [await withBase64(file, ["bytes"]), to]), ["bytes"]),
149
+ details: (at, save) => invoke("transfer.details", [at, save]),
150
+ export: async (at, save) => withBytes(await invoke("transfer.export", [at, save]), ["bytes"]),
152
151
  get: () => invoke("transfer.get", []),
153
152
  open: async (data, fileName, formatId) => invoke("transfer.open", [
154
153
  await toBase64(data),
@@ -156,7 +155,7 @@ function createClient(invoke) {
156
155
  formatId
157
156
  ]),
158
157
  partnerBoxes: () => invoke("transfer.partnerBoxes", []),
159
- preview: async (offer) => invoke("transfer.preview", [await withBase64(offer, ["keptCopies.bytes"])])
158
+ preview: async (offer) => invoke("transfer.preview", [await withBase64(offer, ["arrivals.bytes"])])
160
159
  }
161
160
  };
162
161
  }
@@ -167,7 +166,7 @@ var overlaps = (a, b) => covers(a, b) || covers(b, a);
167
166
  var affects = (changed, read) => changed.some((c) => read.some((r) => overlaps(c, r)));
168
167
  //#endregion
169
168
  //#region package.json
170
- var version = "0.18.3";
169
+ var version = "0.19.1";
171
170
  //#endregion
172
171
  //#region src/crypto.ts
173
172
  var modes = {
@@ -481,6 +480,17 @@ var queryTopics = {
481
480
  "species.list": ["game"],
482
481
  "trainer.badges": ["trainer", "events"],
483
482
  "trainer.get": ["trainer"],
483
+ "transfer.convert": ["transfer", "trainer"],
484
+ "transfer.details": [
485
+ "transfer",
486
+ "party",
487
+ "box"
488
+ ],
489
+ "transfer.export": [
490
+ "transfer",
491
+ "party",
492
+ "box"
493
+ ],
484
494
  "transfer.get": ["transfer", "box"],
485
495
  "transfer.partnerBoxes": ["transfer"],
486
496
  "transfer.preview": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pkhex-everywhere/engine",
3
- "version": "0.18.3",
3
+ "version": "0.19.1",
4
4
  "description": "PKHeX in the browser: load, read and edit Pokémon save files.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "homepage": "https://docs.pkhex-everywhere.fyi/docs/",