sliccy 6.178.2 → 6.179.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/.vite/manifest.json +191 -182
- package/dist/ui/assets/SKILL-B26KJxxL.js +1 -0
- package/dist/ui/assets/__vite-browser-external-CVereMU8.js +1 -0
- package/dist/ui/assets/account-store-Bbb4tBjB.js +2 -0
- package/dist/ui/assets/account-store-DORXRt2J.js +1 -0
- package/dist/ui/assets/{adobe-BHZ-TF7E.js → adobe-CcJb_1io.js} +1 -1
- package/dist/ui/assets/{adobe-Cqd5wrqM.js → adobe-Dxc6H5uX.js} +1 -1
- package/dist/ui/assets/{agent-panels-DXCdmUkc.js → agent-panels-DukhfWpj.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-B29ulBpN.js → almost-bash-shell-headless-2tBN0e_f.js} +231 -231
- package/dist/ui/assets/{apply-layout-BiYaZGTe.js → apply-layout-CnYIzvao.js} +1 -1
- package/dist/ui/assets/{apps-BYK0eeEc.js → apps-6FOwbeg0.js} +1 -1
- package/dist/ui/assets/{azure-openai-DwxTKwka.js → azure-openai-Bcul1Ufv.js} +1 -1
- package/dist/ui/assets/{azure-openai-BgA0OxNa.js → azure-openai-NsEky3Bh.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-CeXHlroV.js → backend-hostfs-BJv18aU0.js} +1 -1
- package/dist/ui/assets/bedrock-camp-BQ02i7Bk.js +1 -0
- package/dist/ui/assets/bedrock-camp-CMYc0nQP.js +1 -0
- package/dist/ui/assets/bedrock-camp-extra-models-B0WH9IRx.js +1 -0
- package/dist/ui/assets/bedrock-camp-extra-models-WTCIjj5a.js +1 -0
- package/dist/ui/assets/{bunny-probe-Dk-taSwq.js → bunny-probe-DwyMiB71.js} +1 -1
- package/dist/ui/assets/{bunny-run-CmnXF3U5.js → bunny-run-COGwXgvg.js} +1 -1
- package/dist/ui/assets/{cdp-wm8vfA8s.js → cdp-Ck5NGIgv.js} +4 -4
- package/dist/ui/assets/{cerebras-wuHzITPY.js → cerebras-B2ofXAjg.js} +1 -1
- package/dist/ui/assets/{cerebras-BPlfZv3L.js → cerebras-DzROLFaR.js} +1 -1
- package/dist/ui/assets/{composer-speech-DI9SI2lY.js → composer-speech-ArgvCsJw.js} +1 -1
- package/dist/ui/assets/{connect-surface-zTa8OfFh.js → connect-surface-DVI8l1Gj.js} +1 -1
- package/dist/ui/assets/{directed-approval-DmDgVpiX.js → directed-approval-D5B0YPqE.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-42E6KJDv.js → ensure-speech-assets-Bt69TLMK.js} +1 -1
- package/dist/ui/assets/{fast-path-DiV4YcEb.js → fast-path-CG_eXz0M.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-C97kBlYw.js → frozen-archive-writer-DRM5RlgX.js} +1 -1
- package/dist/ui/assets/{fs-DmgjBIs9.js → fs-Bdm5h1uM.js} +1 -1
- package/dist/ui/assets/{fs-BKmepe3Q.js → fs-Ce8P6WrG.js} +2 -2
- package/dist/ui/assets/{gelatiere-store-D1l9WE1j.js → gelatiere-store-BZg-43KO.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-jlm5b-JJ.js → gelatiere-unit-BX9sZFKS.js} +1 -1
- package/dist/ui/assets/{github-C8jjATg2.js → github-8zos8s_U.js} +2 -2
- package/dist/ui/assets/{github-BB3M-XW1.js → github-CCjvDIfP.js} +1 -1
- package/dist/ui/assets/{github-auth-CkC7qTEg.js → github-auth-A-2czSUQ.js} +1 -1
- package/dist/ui/assets/{github-copilot-DuwasHAz.js → github-copilot-BptMXI0N.js} +1 -1
- package/dist/ui/assets/{github-copilot-D7QRCTDD.js → github-copilot-CKr_YmDA.js} +1 -1
- package/dist/ui/assets/{github-install-DT3Wys59.js → github-install-fthN4iEm.js} +1 -1
- package/dist/ui/assets/{github-zip-CX3GXBmW.js → github-zip-DwYtMYDx.js} +1 -1
- package/dist/ui/assets/{hear-pJ--prvx.js → hear-4csSE4tf.js} +1 -1
- package/dist/ui/assets/{help-gOzjZhgS.js → help-CW93-CFs.js} +1 -1
- package/dist/ui/assets/{installer-DeqzzcvC.js → installer-DMXLmwMy.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-QT2JnICz.js → js-realm-worker-C2CFKG9d.js} +9 -9
- package/dist/ui/assets/{jsh-executor-BBZWMBxV.js → jsh-executor-sKhz-2wo.js} +3 -3
- package/dist/ui/assets/{kernel-worker-B23YxkDH.js → kernel-worker-DPGsdtHG.js} +11 -11
- package/dist/ui/assets/{lick-ws-bridge-CpcUjLS6.js → lick-ws-bridge-QLNp37XL.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DsoQWD5s.js → lick-ws-bridge-sNe1yusQ.js} +1 -1
- package/dist/ui/assets/{live-session-curation-BWfx-Nu1.js → live-session-curation-BeMkfXGh.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-BSNfthJ2.js → live-session-snapshot-Bm0Bb5YU.js} +1 -1
- package/dist/ui/assets/{local-llm-vzP-uq7M.js → local-llm-BP0eQCgl.js} +1 -1
- package/dist/ui/assets/{local-llm-DGFPI_4T.js → local-llm-DY70xAff.js} +1 -1
- package/dist/ui/assets/main-B0cbvPwD.js +22 -0
- package/dist/ui/assets/{main-cherry-Bbjw_90k.js → main-cherry-Cs8W2ySf.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-BufuSUCj.js → memory-curation-seam-BHFcRLuu.js} +1 -1
- package/dist/ui/assets/{memory-health-DdSqq7yP.js → memory-health-JgHshbO8.js} +1 -1
- package/dist/ui/assets/memory-v2-flag-DZrdHcA-.js +1 -0
- package/dist/ui/assets/{memory-write-execute-BygymnF0.js → memory-write-execute-Bw7kTO2u.js} +1 -1
- package/dist/ui/assets/{mount-DlogHA7u.js → mount-B70Cfm-W.js} +3 -3
- package/dist/ui/assets/{mount-_sTSuvKx.js → mount-CT7VaoKY.js} +1 -1
- package/dist/ui/assets/new-session-Crr2-msq.js +2 -0
- package/dist/ui/assets/oauth-bootstrap-CZzvOYOg.js +2 -0
- package/dist/ui/assets/{onboarding-orchestrator-CbnB67nZ.js → onboarding-orchestrator-CXxroXfS.js} +1 -1
- package/dist/ui/assets/{openai-codex-SI0nWQNS.js → openai-codex-Bv9btlww.js} +1 -1
- package/dist/ui/assets/{openai-codex-BtwVt-12.js → openai-codex-DCsbLgXd.js} +1 -1
- package/dist/ui/assets/{openrouter-BFlMjaCH.js → openrouter-CnnttWgn.js} +1 -1
- package/dist/ui/assets/{openrouter-BruOnSfT.js → openrouter-Crgs_QCq.js} +1 -1
- package/dist/ui/assets/{openrouter-free-B2pceWVg.js → openrouter-free-CgIoPuxn.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DPQDCfqQ.js → openrouter-free-DRkmaxB3.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BLskezr8.js → openrouter-oauth-CxTickkD.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-C4kwBIwS.js → openrouter-oauth-pI7Aub_Z.js} +1 -1
- package/dist/ui/assets/{opfs-mount-8s9WP18b.js → opfs-mount-mco_YXZ2.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-DlWD1u2Q.js +2 -0
- package/dist/ui/assets/{panelize-shell-Dg_58ImI.js → panelize-shell-C6AGU1O_.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-C9GYKunH.js → pi-edit-execution-yVaqL9lZ.js} +1 -1
- package/dist/ui/assets/{provider-DEcfbBkM.js → provider-BLg5uchT.js} +1 -1
- package/dist/ui/assets/{provider-B_fhkXn7.js → provider-DGvW9aTF.js} +2 -2
- package/dist/ui/assets/{provider-settings-BLtjMrT0.js → provider-settings-CeFsisH4.js} +1 -1
- package/dist/ui/assets/provider-store-access-BaHh7m4I.js +1 -0
- package/dist/ui/assets/provider-store-access-CnoMGfWY.js +1 -0
- package/dist/ui/assets/providers-2pihfuXe.js +2 -0
- package/dist/ui/assets/providers-BNhTu4Az.js +1 -0
- package/dist/ui/assets/py-live-vfs-DaPSes0l.js +168 -0
- package/dist/ui/assets/py-live-vfs-Dx9cFlfE.js +168 -0
- package/dist/ui/assets/{py-realm-worker-A1ICPvEl.js → py-realm-worker-CYwLJW9I.js} +3 -3
- package/dist/ui/assets/{pyodide-DGH4V3SQ.js → pyodide-DKNrUBio.js} +2 -2
- package/dist/ui/assets/{quick-llm-B8uh7EVu.js → quick-llm-DcsNLbYv.js} +1 -1
- package/dist/ui/assets/realm-inprocess-BgV7BI1t.js +30 -0
- package/dist/ui/assets/{recovery-screen-M8szzZB2.js → recovery-screen-xvnzvjnh.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-6ygd42Fb.js → remote-terminal-view-C_QEoDZe.js} +1 -1
- package/dist/ui/assets/require-guards-Du29-pl4.js +252 -0
- package/dist/ui/assets/{restore-Qq5h6a38.js → restore-90cAJcB-.js} +1 -1
- package/dist/ui/assets/{run-C0wVagJ5.js → run-BjdOwTMK.js} +2 -2
- package/dist/ui/assets/{run-DK8nktud.js → run-BoSrXXY1.js} +2 -2
- package/dist/ui/assets/{run-CPDsfLJJ.js → run-Bx5g1SW-.js} +2 -2
- package/dist/ui/assets/{run-C3rYy-Lu.js → run-C-9fbuPf.js} +1 -1
- package/dist/ui/assets/{run-dNFrBZDI.js → run-CTYkZrli.js} +1 -1
- package/dist/ui/assets/{run-DUzzkV29.js → run-DMneLV98.js} +3 -3
- package/dist/ui/assets/{run--H9dud5r.js → run-Di77_0CW.js} +2 -2
- package/dist/ui/assets/{run-Bk0pGJJa.js → run-R7EnlHqn.js} +1 -1
- package/dist/ui/assets/{run-_QNErIec.js → run-u5sZdtZc.js} +2 -2
- package/dist/ui/assets/{session-command-memory-CAl1-crq.js → session-command-memory-BIW04ime.js} +2 -2
- package/dist/ui/assets/{session-jsonl-B-4fihPX.js → session-jsonl-BT6N86_D.js} +1 -1
- package/dist/ui/assets/{session-jsonl-lB9-7rZS.js → session-jsonl-DRpBHMbZ.js} +1 -1
- package/dist/ui/assets/{session-search-index-Bn4FhmPW.js → session-search-index-CRSNfFPt.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-opNg3JWs.js → setup-feature-flags-remote-DLPlEBtl.js} +1 -1
- package/dist/ui/assets/{signed-fetch-YC2zrriw.js → signed-fetch-Cv-pIQgJ.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-Bak0vwwf.js → silent-renew-backoff-BL0l9czs.js} +1 -1
- package/dist/ui/assets/slicc-version-wzJMaTOt.js +1 -0
- package/dist/ui/assets/{snapshot-features-BqGUjBWl.js → snapshot-features-DN8885R6.js} +1 -1
- package/dist/ui/assets/{snapshot-6br_5p-f.js → snapshot-h1IyuVIH.js} +1 -1
- package/dist/ui/assets/{soundscape-DRViCPly.js → soundscape-qJ4gJF6y.js} +1 -1
- package/dist/ui/assets/{speak-DRv_vLqY.js → speak-CUSuBAiN.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-DeJrE3Hq.js → sprinkle-manager-CK0KfQ0E.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-DYUy10CO.js → sprinkle-renderer-C0-nYSNx.js} +1 -1
- package/dist/ui/assets/{src-CmTUvI8R.js → src-BfoZU01X.js} +74 -74
- package/dist/ui/assets/{ssh-D1zj1EXl.js → ssh-D9CT02gL.js} +1 -1
- package/dist/ui/assets/{state-BpyjzTIG.js → state-DCSstoTF.js} +1 -1
- package/dist/ui/assets/{store-DQkIRnav.js → store-COcJ0rh9.js} +1 -1
- package/dist/ui/assets/{store-DwUewAuZ.js → store-DrLyzt3v.js} +1 -1
- package/dist/ui/assets/{sudo-DIegVBwT.js → sudo-BLsv33L7.js} +1 -1
- package/dist/ui/assets/{supervisor-gHbk5m7z.js → supervisor-DC1z_etC.js} +1 -1
- package/dist/ui/assets/{sync-dialog-CH4PBcVu.js → sync-dialog-B9Na5xYc.js} +1 -1
- package/dist/ui/assets/sync-exec-xhr-bridge-BjD_IfJF.js +1 -0
- package/dist/ui/assets/sync-sab-wire-CkrsRVrw.js +1 -0
- package/dist/ui/assets/tab-8LaHojfd.js +1 -0
- package/dist/ui/assets/{transformers-env-9M9En1_O.js → transformers-env-DbQSH9Ln.js} +1 -1
- package/dist/ui/assets/{tray-leader-Bd293BI8.js → tray-leader-DyfRH9_x.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-wLd1uBMu.js → tray-leave-runtime-BRVkq1j8.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-C35X7Jht.js → tray-sidecar-BdSKCDRU.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-Tp8fDJAG.js → upgrade-detection-DOttGbYy.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-Cr0VVPGj.js → upskill-lick-skip-4EAgxZBZ.js} +1 -1
- package/dist/ui/assets/{voice-reply-wJfABSIn.js → voice-reply-BMbj-krb.js} +1 -1
- package/dist/ui/assets/wc-attach-BYh78RZQ.js +13 -0
- package/dist/ui/assets/{wc-browser-BJemxWhg.js → wc-browser-D_SlpGFj.js} +1 -1
- package/dist/ui/assets/{wc-computers-Cr14YnOg.js → wc-computers-DguwFFgg.js} +1 -1
- package/dist/ui/assets/{wc-detached-DQ_ZTSZ-.js → wc-detached-BwCNIFnT.js} +1 -1
- package/dist/ui/assets/{wc-extension-C8pgLDqO.js → wc-extension-B3EwzUfS.js} +2 -2
- package/dist/ui/assets/wc-follower-CmPddVGO.js +17 -0
- package/dist/ui/assets/{wc-follower-oauth-BU-XAftl.js → wc-follower-oauth-D9PaxsNc.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-BiyouLW3.js → wc-gelatiere-BIfd8LAx.js} +1 -1
- package/dist/ui/assets/{wc-live-CaopRwn0.js → wc-live-Dq-_FAPU.js} +6 -6
- package/dist/ui/assets/wc-nav-hfv762PR.js +2 -0
- package/dist/ui/assets/{wc-onboarding-FjrDOv_u.js → wc-onboarding-BAO8Xa0p.js} +2 -2
- package/dist/ui/assets/{wc-permissions-C63-jLbY.js → wc-permissions-BWZQsa4a.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-Bdbmjijc.js → wc-placeholder-BJLM84yS.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-C9iCWgBV.js → wc-secret-request-DMdnDVOi.js} +1 -1
- package/dist/ui/assets/{wc-settings-1ZJgN4Wk.js → wc-settings-Cwj7tYnH.js} +3 -3
- package/dist/ui/assets/{wc-shell-CrMn8BW0.js → wc-shell-Cn2tEDM7.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-JXEU24sg.js → wc-shortcut-config-C5cwDbE-.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-CBaPR_V8.js → wc-sprinkles-Bme5XF35.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-eyG-SwVe.js → wc-transcript-export-D5m4sap2.js} +2 -2
- package/dist/ui/assets/{wc-tray-dSLNIDh9.js → wc-tray-kqJoJtNf.js} +4 -4
- package/dist/ui/assets/welcome-detection-CQJa6RP3.js +1 -0
- package/dist/ui/assets/whisper-session-DhEBOCZj.js +2 -0
- package/dist/ui/assets/{xai-grok-C2oyJ5tt.js → xai-grok-DVO4KVhh.js} +1 -1
- package/dist/ui/assets/{xai-grok-G4GFCgrM.js → xai-grok-UADpK8FU.js} +1 -1
- package/dist/ui/index.html +4 -3
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +4 -3
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-CJrjPuRt.js +0 -1
- package/dist/ui/assets/__vite-browser-external-C7Grxh8D.js +0 -1
- package/dist/ui/assets/account-store-LwLxI7v1.js +0 -1
- package/dist/ui/assets/account-store-SI8RQbm0.js +0 -2
- package/dist/ui/assets/bedrock-camp-D-jmLdEX.js +0 -1
- package/dist/ui/assets/bedrock-camp-DmVFQWfL.js +0 -1
- package/dist/ui/assets/main-DFTTAllP.js +0 -22
- package/dist/ui/assets/memory-v2-flag-uChv9nwr.js +0 -1
- package/dist/ui/assets/new-session-C914zfKa.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-B7cPXMSk.js +0 -2
- package/dist/ui/assets/panel-rpc-handlers-BuMdGle_.js +0 -2
- package/dist/ui/assets/provider-store-access-C0w1Xcs2.js +0 -1
- package/dist/ui/assets/provider-store-access-YjQKD2es.js +0 -1
- package/dist/ui/assets/providers-B0rCH1pp.js +0 -1
- package/dist/ui/assets/providers-B9p2VR5L.js +0 -2
- package/dist/ui/assets/realm-inprocess-qhbZWW6z.js +0 -30
- package/dist/ui/assets/slicc-version-D1Js64gw.js +0 -1
- package/dist/ui/assets/sync-sab-wire-CN1_ni9J.js +0 -252
- package/dist/ui/assets/tab-0xwFvGm5.js +0 -1
- package/dist/ui/assets/wc-attach-CtVWDKPk.js +0 -13
- package/dist/ui/assets/wc-follower-nosCeVKN.js +0 -17
- package/dist/ui/assets/wc-nav-Wn2qDNiX.js +0 -2
- package/dist/ui/assets/welcome-detection-DuFRP38Z.js +0 -1
- package/dist/ui/assets/whisper-session-DrDhzSqp.js +0 -2
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
const e={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},t=4095;function n(t,n){if(n?.errno!==void 0&&n instanceof t.ErrnoError)return n;let r=n?.code,i=typeof r==`string`?e[r]??29:29;return new t.ErrnoError(i)}function r(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function i(e){let n=e.isSymbolicLink?40960:e.isDirectory?16384:32768,r=e.isDirectory||e.isSymbolicLink?511:438;return n|((e.mode??r)&t||r)}function a(e){if(e!=null)return e instanceof Date?e.getTime():e}function o(e,t){let a=e=>e.mount.opts.bridge;function o(t){try{return t()}catch(t){throw n(e,t)}}function s(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function c(n,r,a){let o=e.createNode(n,r,i(a),0);return o.node_ops=t.node,o.stream_ops=t.stream,o.live=s(a),o}function l(e){if(!e.live.stat){let t=o(()=>a(e).lstat(r(e)));e.live.stat=t,e.mode=i(t)}return e.live.stat}function u(e,t){let n=r(e);return n===`/`?`/${t}`:`${n}/${t}`}function d(e){let t=e.live;if(t.loaded)return;let n=o(()=>a(e).readFile(r(e)));t.data=n,t.len=n.length,t.loaded=!0}function f(e,t){let n=e.live,r=n.data??new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function p(e){let t=e.live;if(!t.dirty||!t.data)return;let n=t.data.slice(0,t.len);o(()=>a(e).writeFile(r(e),n)),t.dirty=!1,t.stat=void 0}function m(e,t){let n=e.live;if(n.openCount>0){t>0?d(e):n.loaded=!0;let r=f(e,t);t>n.len&&r.fill(0,n.len,t),n.len=t,n.dirty=!0;return}let i=r(e),s=new Uint8Array(t);if(t>0){let n=o(()=>a(e).readFile(i));s.set(n.subarray(0,Math.min(t,n.length)))}o(()=>a(e).writeFile(i,s)),n.stat=void 0}return{Fs:e,bridgeOf:a,call:o,makeNode:c,statOf:l,childPath:u,ensureLoaded:d,ensureCapacity:f,flushNode:p,truncate:m}}function s(n){let{Fs:i,bridgeOf:o,call:s,makeNode:c,statOf:l,childPath:u,flushNode:d,truncate:f}=n;return{getattr(e){let t=l(e),n=e.live,r=i.isDir(e.mode)?4096:n.loaded?n.len:t.size,a=new Date(t.mtimeMs??0);return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:r,atime:a,mtime:a,ctime:a,blksize:4096,blocks:Math.ceil(r/4096)}},setattr(e,n){let c=r(e);if(n.mode!==void 0&&n.mode!==null){let r=n.mode&t;r!==(e.mode&t)&&(s(()=>o(e).chmod(c,r)),e.mode=e.mode&-4096|r)}n.size!==void 0&&n.size!==null&&i.isFile(e.mode)&&f(e,n.size);let l=a(n.mtime)??n.timestamp;if(l!==void 0){let t=a(n.atime)??l;d(e),s(()=>o(e).utimes(c,t,l))}e.live.stat=void 0},lookup(e,t){let n=s(()=>o(e).lstat(u(e,t)));return c(e,t,n)},mknod(t,n,r){let a=u(t,n);if(i.isDir(r))s(()=>o(t).mkdir(a));else if(i.isFile(r))s(()=>o(t).writeFile(a,new Uint8Array));else throw new i.ErrnoError(e.EPERM);let l=c(t,n,{isFile:i.isFile(r),isDirectory:i.isDir(r),isSymbolicLink:!1,size:0,mode:r,mtimeMs:Date.now()});return l.live.stat=void 0,l},rename(e,t,n){let a=r(e),c=u(t,n);d(e),s(()=>o(e).rename(a,c));try{let r=i.lookupNode?.(t,n);r&&r!==e&&i.hashRemoveNode?.(r)}catch{}e.name=n,e.live.stat=void 0},unlink(e,t){s(()=>o(e).unlink(u(e,t)))},rmdir(e,t){s(()=>o(e).rmdir(u(e,t)))},readdir(e){return[`.`,`..`,...s(()=>o(e).readdir(r(e)))]},symlink(e,t,n){let r=u(e,t);return s(()=>o(e).symlink(n,r)),c(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:n.length})},readlink(t){if(!i.isLink(t.mode))throw new i.ErrnoError(e.EINVAL);return s(()=>o(t).readlink(r(t)))}}}function c(t){let{Fs:n,statOf:r,ensureLoaded:i,ensureCapacity:a,flushNode:o}=t;return{open(e){n.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let t=e.node;if(!n.isFile(t.mode))return;let r=t.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(t)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(t,r,a,o,s){let c=t.node;if(n.isDir(c.mode))throw new n.ErrnoError(e.EISDIR);i(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(r.buffer,r.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(t,r,o,s,c){let l=t.node;if(n.isDir(l.mode))throw new n.ErrnoError(e.EISDIR);if(s<=0)return 0;i(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(r.buffer,r.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(t,i,a){let o=i;if(a===1)o+=t.position;else if(a===2&&n.isFile(t.node.mode)){let e=t.node.live;o+=e.loaded?e.len:r(t.node).size}if(o<0)throw new n.ErrnoError(e.EINVAL);return o},fsync(e){o(e.node)}}}function l(t){let n=new Set,r={},i=o(t,r),a=s(i),l=c(i);return r.node=a,r.stream=l,{mounts:n,node_ops:a,stream_ops:l,mount(r){let a=i.call(()=>r.opts.bridge.stat(r.opts.root));if(!a.isDirectory)throw new t.ErrnoError(e.ENOTDIR);let o=i.makeNode(null,`/`,a);return n.add(r),o}}}function u(e,t){return!!t&&e.mounts.has(t.mount)}function d(e,t){for(let i of e.nameTable??[])for(let a=i;a;a=a.name_next??null)if(!(!u(t,a)||!a.live.dirty||!a.live.data))try{let e=a.live.data.slice(0,a.live.len);a.mount.opts.bridge.writeFile(r(a),e),a.live.dirty=!1}catch(t){throw n(e,t)}}function f(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!u(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function p(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function m(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||!(typeof t.command==`string`||p(t.command)))return null;let n=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0;return{command:t.command,...typeof t.cwd==`string`?{cwd:t.cwd}:{},...n?{env:n}:{},...typeof t.input==`string`?{input:t.input}:{},...typeof t.timeoutMs==`number`?{timeoutMs:t.timeoutMs}:{}}}function h(e){return{run(t){let n=m(t);if(!n)return JSON.stringify({error:`EINVAL`,message:`malformed request`});let r;e.beforeExec();try{r=e.exec.run(n.command,{...n.input===void 0?{}:{input:n.input},...n.cwd===void 0?{}:{cwd:n.cwd},...n.env===void 0?{}:{env:n.env},...n.timeoutMs===void 0?{}:{timeout:n.timeoutMs}})}catch(e){let t=e?.code;r={error:typeof t==`string`?t:`EIO`,message:e instanceof Error?e.message:String(e)}}finally{e.afterExec()}return JSON.stringify(r)}}}const g=String.raw`
|
|
2
|
+
def __slicc_install_subprocess():
|
|
3
|
+
import errno, io, itertools, json, os, subprocess, sys
|
|
4
|
+
import _slicc_proc
|
|
5
|
+
|
|
6
|
+
PIPE, STDOUT, DEVNULL = subprocess.PIPE, subprocess.STDOUT, subprocess.DEVNULL
|
|
7
|
+
pids = itertools.count(1000)
|
|
8
|
+
|
|
9
|
+
def to_str(a):
|
|
10
|
+
a = os.fspath(a)
|
|
11
|
+
return a.decode('utf-8', 'surrogateescape') if isinstance(a, bytes) else a
|
|
12
|
+
|
|
13
|
+
class _StdinPipe(io.BytesIO):
|
|
14
|
+
def __init__(self, proc):
|
|
15
|
+
super().__init__()
|
|
16
|
+
self._proc = proc
|
|
17
|
+
def close(self):
|
|
18
|
+
if not self.closed:
|
|
19
|
+
data = self.getvalue()
|
|
20
|
+
super().close()
|
|
21
|
+
self._proc._start(data)
|
|
22
|
+
|
|
23
|
+
class SliccPopen:
|
|
24
|
+
def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None,
|
|
25
|
+
stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None,
|
|
26
|
+
env=None, universal_newlines=None, startupinfo=None, creationflags=0,
|
|
27
|
+
restore_signals=True, start_new_session=False, pass_fds=(), *,
|
|
28
|
+
user=None, group=None, extra_groups=None, encoding=None, errors=None,
|
|
29
|
+
text=None, umask=-1, pipesize=-1, process_group=None):
|
|
30
|
+
self.args = args
|
|
31
|
+
self.pid = next(pids)
|
|
32
|
+
self.returncode = None
|
|
33
|
+
self.text_mode = bool(text or universal_newlines or encoding or errors)
|
|
34
|
+
self._encoding = encoding or 'utf-8'
|
|
35
|
+
self._errors = errors or 'strict'
|
|
36
|
+
if shell:
|
|
37
|
+
command = to_str(args if isinstance(args, (str, bytes)) else args[0])
|
|
38
|
+
else:
|
|
39
|
+
argv = [args] if isinstance(args, (str, bytes, os.PathLike)) else list(args)
|
|
40
|
+
command = [to_str(a) for a in argv]
|
|
41
|
+
if executable is not None:
|
|
42
|
+
command[0] = to_str(executable)
|
|
43
|
+
self._shell = bool(shell)
|
|
44
|
+
self._command = command
|
|
45
|
+
self._cwd = to_str(cwd) if cwd is not None else os.getcwd()
|
|
46
|
+
self._env = {to_str(k): to_str(v) for k, v in (os.environ if env is None else env).items()}
|
|
47
|
+
self._stdout_to, self._stderr_to = stdout, stderr
|
|
48
|
+
self.stdout = self.stderr = None
|
|
49
|
+
self._out = self._err = b''
|
|
50
|
+
self.stdin = None
|
|
51
|
+
if stdin == PIPE:
|
|
52
|
+
self.stdin = _StdinPipe(self)
|
|
53
|
+
if self.text_mode:
|
|
54
|
+
self.stdin = io.TextIOWrapper(self.stdin, encoding=self._encoding,
|
|
55
|
+
errors=self._errors, write_through=True)
|
|
56
|
+
return
|
|
57
|
+
data = None
|
|
58
|
+
if stdin not in (None, DEVNULL):
|
|
59
|
+
data = os.read(stdin, 1 << 30) if isinstance(stdin, int) else stdin.read()
|
|
60
|
+
if isinstance(data, str):
|
|
61
|
+
data = data.encode(self._encoding, self._errors)
|
|
62
|
+
self._start(data)
|
|
63
|
+
|
|
64
|
+
def _start(self, data, timeout=None):
|
|
65
|
+
if self.returncode is not None:
|
|
66
|
+
return
|
|
67
|
+
req = {'command': self._command, 'cwd': self._cwd, 'env': self._env}
|
|
68
|
+
if data:
|
|
69
|
+
req['input'] = data.decode('utf-8', 'surrogateescape')
|
|
70
|
+
if timeout is not None:
|
|
71
|
+
req['timeoutMs'] = int(timeout * 1000)
|
|
72
|
+
reply = json.loads(_slicc_proc.run(json.dumps(req)))
|
|
73
|
+
if 'error' in reply:
|
|
74
|
+
code = getattr(errno, reply['error'], errno.EIO)
|
|
75
|
+
raise OSError(code, reply.get('message') or os.strerror(code))
|
|
76
|
+
out = reply['stdout'].encode('utf-8', 'surrogateescape')
|
|
77
|
+
err = reply['stderr'].encode('utf-8', 'surrogateescape')
|
|
78
|
+
code = reply['exitCode']
|
|
79
|
+
if (not self._shell and code == 127 and b'command not found' in err):
|
|
80
|
+
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), self._command[0])
|
|
81
|
+
if self._stderr_to == STDOUT:
|
|
82
|
+
out, err = out + err, b''
|
|
83
|
+
self._out = self._route(out, self._stdout_to, sys.stdout)
|
|
84
|
+
self._err = self._route(err, self._stderr_to, sys.stderr)
|
|
85
|
+
if self._stdout_to == PIPE:
|
|
86
|
+
self.stdout = self._pipe(self._out)
|
|
87
|
+
if self._stderr_to == PIPE:
|
|
88
|
+
self.stderr = self._pipe(self._err)
|
|
89
|
+
self.returncode = code
|
|
90
|
+
|
|
91
|
+
def _route(self, data, target, inherit):
|
|
92
|
+
if target == PIPE:
|
|
93
|
+
return data
|
|
94
|
+
if target is None:
|
|
95
|
+
if data:
|
|
96
|
+
inherit.write(data.decode('utf-8', 'replace'))
|
|
97
|
+
inherit.flush()
|
|
98
|
+
elif target not in (DEVNULL, STDOUT):
|
|
99
|
+
if isinstance(target, int):
|
|
100
|
+
os.write(target, data)
|
|
101
|
+
elif isinstance(target, io.TextIOBase):
|
|
102
|
+
target.write(data.decode('utf-8', 'replace'))
|
|
103
|
+
else:
|
|
104
|
+
target.write(data)
|
|
105
|
+
return b''
|
|
106
|
+
|
|
107
|
+
def _pipe(self, data):
|
|
108
|
+
if self.text_mode:
|
|
109
|
+
return io.StringIO(data.decode(self._encoding, self._errors))
|
|
110
|
+
return io.BytesIO(data)
|
|
111
|
+
|
|
112
|
+
def communicate(self, input=None, timeout=None):
|
|
113
|
+
if self.returncode is None:
|
|
114
|
+
if isinstance(input, str):
|
|
115
|
+
input = input.encode(self._encoding, self._errors)
|
|
116
|
+
if self.stdin is not None and not self.stdin.closed:
|
|
117
|
+
raw = self.stdin.buffer if isinstance(self.stdin, io.TextIOWrapper) else self.stdin
|
|
118
|
+
if input:
|
|
119
|
+
raw.write(input)
|
|
120
|
+
input = raw.getvalue()
|
|
121
|
+
io.BytesIO.close(raw)
|
|
122
|
+
self._start(input, timeout)
|
|
123
|
+
out = self.stdout.read() if self.stdout is not None else None
|
|
124
|
+
err = self.stderr.read() if self.stderr is not None else None
|
|
125
|
+
return out, err
|
|
126
|
+
|
|
127
|
+
def wait(self, timeout=None):
|
|
128
|
+
if self.returncode is None:
|
|
129
|
+
self.communicate(timeout=timeout)
|
|
130
|
+
return self.returncode
|
|
131
|
+
|
|
132
|
+
def poll(self):
|
|
133
|
+
# Never starts work, like CPython: a child still waiting for its
|
|
134
|
+
# stdin=PIPE input has not run yet, so it is "still running".
|
|
135
|
+
# A started child always ran to completion.
|
|
136
|
+
return self.returncode
|
|
137
|
+
|
|
138
|
+
def send_signal(self, sig):
|
|
139
|
+
pass
|
|
140
|
+
|
|
141
|
+
def terminate(self):
|
|
142
|
+
pass
|
|
143
|
+
|
|
144
|
+
def kill(self):
|
|
145
|
+
pass
|
|
146
|
+
|
|
147
|
+
def __enter__(self):
|
|
148
|
+
return self
|
|
149
|
+
|
|
150
|
+
def __exit__(self, *exc):
|
|
151
|
+
for f in (self.stdout, self.stderr, self.stdin):
|
|
152
|
+
if f is not None and not f.closed:
|
|
153
|
+
f.close()
|
|
154
|
+
self.wait()
|
|
155
|
+
|
|
156
|
+
def __repr__(self):
|
|
157
|
+
return f'<SliccPopen: returncode: {self.returncode} args: {self.args!r}>'
|
|
158
|
+
|
|
159
|
+
def system(command):
|
|
160
|
+
code = SliccPopen(command, shell=True).wait()
|
|
161
|
+
return (code & 0xff) << 8
|
|
162
|
+
|
|
163
|
+
subprocess.Popen = SliccPopen
|
|
164
|
+
os.system = system
|
|
165
|
+
|
|
166
|
+
__slicc_install_subprocess()
|
|
167
|
+
del __slicc_install_subprocess
|
|
168
|
+
`;function _(e,t){e.registerJsModule(`_slicc_proc`,h(t)),e.runPython(g)}const v=5e3;function y(e,t){return Object.assign(Error(`${e}: ${t}`),{code:e})}function b(e){let t=S(e);if(C(t))return new Uint8Array(t.response);if(t.status>=200&&t.status<300)throw y(`EIO`,e.label);w(t,e.label)}function x(e){let t=b(e);try{return JSON.parse(new TextDecoder().decode(t))}catch{throw y(`EIO`,e.label)}}function S(e){let t=new XMLHttpRequest;try{t.open(e.method,e.url,!1),t.responseType=`arraybuffer`,t.timeout=e.timeoutMs,t.setRequestHeader(`x-slicc-fs-token`,e.token),e.body?t.send(new Uint8Array(e.body)):t.send()}catch{throw y(`EIO`,e.label)}return t}function C(e){return e.status>=200&&e.status<300&&e.getResponseHeader(`x-slicc-fs`)===`1`}function w(e,t){throw y(e.getResponseHeader(`x-slicc-fs`)===`1`&&e.getResponseHeader(`x-slicc-fs-errno`)||`EIO`,t)}function T(e){let t=e;return!t||typeof t.isFile!=`boolean`||typeof t.isDirectory!=`boolean`||typeof t.size!=`number`?null:{isFile:t.isFile,isDirectory:t.isDirectory,isSymbolicLink:t.isSymbolicLink,size:t.size,...typeof t.mode==`number`?{mode:t.mode}:{},...typeof t.mtimeMs==`number`?{mtimeMs:t.mtimeMs}:{}}}function E(e,t){return y(e,`sync-fs bridge, '${t}'`)}function D(e,t){let n=`/__slicc/fs-sync`+(e.startsWith(`/`)?e:`/${e}`).split(`/`).map(encodeURIComponent).join(`/`);return t?`${n}?op=${t}`:n}function O(e,t={}){let n=t.timeoutMs??3e4;function r(t,r,i,a){return{method:t,url:D(r,a),token:e,...i?{body:i}:{},timeoutMs:n,label:`sync-fs bridge, '${r}'`}}return{readFile(e){return b(r(`GET`,e))},writeFile(e,t){b(r(`POST`,e,t))},stat(e){let t=T(x(r(`GET`,e,void 0,`stat`)));if(!t)throw E(`EIO`,e);return t},lstat(e){let t=T(x(r(`GET`,e,void 0,`lstat`)));if(!t)throw E(`EIO`,e);return t},readdir(e){let t=x(r(`GET`,e,void 0,`readdir`));if(!Array.isArray(t)||!t.every(e=>typeof e==`string`))throw E(`EIO`,e);return t},exists(e){let t=x(r(`GET`,e,void 0,`exists`));if(typeof t!=`boolean`)throw E(`EIO`,e);return t},mkdir(e){b(r(`POST`,e,void 0,`mkdir`))},rm(e){b(r(`POST`,e,void 0,`rm`))},rename(e,t){b(r(`POST`,e,k({arg2:t}),`rename`))},unlink(e){b(r(`POST`,e,k({}),`unlink`))},rmdir(e){b(r(`POST`,e,k({}),`rmdir`))},symlink(e,t){b(r(`POST`,t,k({arg2:e}),`symlink`))},readlink(e){let t=x(r(`GET`,e,void 0,`readlink`));if(typeof t!=`string`)throw E(`EIO`,e);return t},chmod(e,t){b(r(`POST`,e,k({mode:t}),`chmod`))},utimes(e,t,n){b(r(`POST`,e,k({atimeMs:t,mtimeMs:n}),`utimes`))}}}function k(e){return new TextEncoder().encode(JSON.stringify(e))}const A=`exec`;function j(e,t){return Math.min(typeof e!=`number`||!Number.isFinite(e)||e<=0?t:e,6e5)}new TextEncoder;const M=new TextDecoder;function N(e,t){switch(e){case 1:return{ok:!0,kind:`bytes`,bytes:t};case 3:return{ok:!0,kind:`void`};case 2:try{return{ok:!0,kind:`json`,json:JSON.parse(M.decode(t))}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed json payload`}}case 4:try{let e=JSON.parse(M.decode(t)),n=typeof e.errno==`string`&&/^E[A-Z]+$/.test(e.errno)?e.errno:`EIO`;return{ok:!1,errno:n,message:String(e.message??n)}}catch{return{ok:!1,errno:`EIO`,message:`sync-sab: malformed errno payload`}}default:return{ok:!1,errno:`EIO`,message:`sync-sab: unknown status ${e}`}}}function P(e){if(e.byteLength<4160)throw Error(`sync-sab: buffer too small (${e.byteLength} < 4160)`);return{header:new Int32Array(e,0,16),window:new Uint8Array(e,64)}}function F(e,t,n={}){let{header:r,window:i}=P(e),a=n.wait??((e,t,n,r)=>Atomics.wait(e,t,n,r)),o=n.now??(()=>performance.now()),s=0;function c(e,t,n){for(;;){let i=t-o();if(i<=0)throw y(`ETIMEDOUT`,n);if(a(r,0,1,i),Atomics.load(r,0)===2&&Atomics.load(r,1)===e)return;Atomics.load(r,0)===2&&Atomics.store(r,0,1)}}return{call(e,n,a){let l=++s,u=o()+n,d=null,f=0,p=0;try{for(;;){Atomics.store(r,0,1);let n=p===0?{type:`sync-sab-req`,id:l,req:e}:{type:`sync-sab-next`,id:l,offset:p};try{t.postMessage(n)}catch{throw y(`EIO`,a)}c(l,u,a);let o=Atomics.load(r,3),s=Atomics.load(r,4);if(Atomics.load(r,5)!==p||s<0||o<0||p+s>o)throw y(`EIO`,a);if(d===null&&(f=Atomics.load(r,2),d=new Uint8Array(o)),d.set(i.subarray(0,s),p),p+=s,p>=o)break;if(s===0)throw y(`EIO`,a)}}finally{Atomics.store(r,0,0)}return N(f,d)}}}function I(e,t){return y(e,`sync-sab bridge, '${t}'`)}function L(e,t={}){let n=t.timeoutMs??25e3;function r(t,r){let i=e.call(t,n,`sync-sab bridge, '${r}'`);if(!i.ok)throw I(i.errno,r);return i}function i(e,t){let n=r(e,t);if(n.ok&&n.kind===`bytes`)return n.bytes;throw I(`EIO`,t)}function a(e,t){let n=r(e,t);if(n.ok&&n.kind===`json`)return n.json;throw I(`EIO`,t)}return{readFile:e=>i({op:`read`,path:e},e),writeFile:(e,t)=>{r({op:`write`,path:e,body:t},e)},stat:e=>{let t=T(a({op:`stat`,path:e},e));if(!t)throw I(`EIO`,e);return t},lstat:e=>{let t=T(a({op:`lstat`,path:e},e));if(!t)throw I(`EIO`,e);return t},readdir:e=>{let t=a({op:`readdir`,path:e},e);if(!Array.isArray(t)||!t.every(e=>typeof e==`string`))throw I(`EIO`,e);return t},exists:e=>{let t=a({op:`exists`,path:e},e);if(typeof t!=`boolean`)throw I(`EIO`,e);return t},mkdir:e=>{r({op:`mkdir`,path:e},e)},rm:e=>{r({op:`rm`,path:e},e)},rename:(e,t)=>{r({op:`rename`,path:e,arg2:t},e)},unlink:e=>{r({op:`unlink`,path:e},e)},rmdir:e=>{r({op:`rmdir`,path:e},e)},symlink:(e,t)=>{r({op:`symlink`,path:t,arg2:e},t)},readlink:e=>{let t=a({op:`readlink`,path:e},e);if(typeof t!=`string`)throw I(`EIO`,e);return t},chmod:(e,t)=>{r({op:`chmod`,path:e,mode:t},e)},utimes:(e,t,n)=>{r({op:`utimes`,path:e,atimeMs:t,mtimeMs:n},e)}}}function R(e){return(t,n,r)=>{let i=e.call({...t,channel:A},n+v,r);if(!i.ok)throw y(i.errno,r);let a=i.kind===`json`?i.json:null;if(!a||typeof a.stdout!=`string`||typeof a.stderr!=`string`||typeof a.exitCode!=`number`)throw y(`EIO`,r);return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}}function z(e,t){if(!(!e.syncSab||typeof Atomics>`u`||typeof Atomics.wait!=`function`))return F(e.syncSab,t)}function B(e,t){return t?L(t):e.syncFsToken?O(e.syncFsToken):void 0}function V(e){return(t,n,r)=>{let i=x({method:`POST`,url:`/__slicc/exec-sync`,token:e,body:new TextEncoder().encode(JSON.stringify({...t,channel:A})),timeoutMs:n+v,label:r});if(!i||typeof i.stdout!=`string`||typeof i.stderr!=`string`||typeof i.exitCode!=`number`)throw y(`EIO`,r);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}}}function H(e,t){let n=e.getMutations();for(let e of n.deleted)t.rm(e);for(let e of n.created)e.isDirectory?t.mkdir(e.path):t.writeFile(e.path,e.content);for(let e of n.modified)t.writeFile(e.path,e.content);e.resetBaseline()}function U(e,t={}){let n=t.timeoutMs??12e4,{syncFs:r,fsBridge:i}=t,a=t.transport??V(e);return{run(e,t={}){let o=r?.wasUsed()===!0&&i!==void 0;o&&H(r,i);let s=`sync-exec bridge, '${Array.isArray(e)?e.join(` `):e}'`,c=j(t.timeout,n),l={command:e,...t.args===void 0?{}:{args:t.args},...t.input===void 0?{}:{stdin:t.input},...t.cwd===void 0?{}:{cwd:t.cwd},...t.env===void 0?{}:{env:t.env},timeoutMs:c};try{return a(l,c,s)}finally{o&&r.invalidate()}}}}function W(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function G(e,t,n,r){if(t.env?.SLICC_PY_FS===`opfs`)return;let i=z(t,n),a=B(t,i);if(!a||!t.syncFsToken)return;let o=e.FS,s=o.filesystems.SLICC_LIVE_FS??l(o);o.filesystems.SLICC_LIVE_FS=s;let c=[];for(let e of W(t.pyodideMountDirs??[t.cwd,`/tmp`]))if(e!==`/`)try{o.mkdirTree(e),o.mount(s,{root:e,bridge:a},e),c.push(e)}catch(t){r(`live VFS mount of ${e} failed: ${t instanceof Error?t.message:String(t)}`)}return c.length===0?void 0:(_(e,{exec:U(t.syncFsToken,{...i?{transport:R(i)}:{}}),beforeExec:()=>d(o,s),afterExec:()=>f(o,s)}),{plugin:s,mounted:c,flush:()=>d(o,s)})}export{G as mountPyLiveVfs};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./sync-exec-xhr-bridge-BjD_IfJF.js";const i={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},a=4095;function o(e,t){if(t?.errno!==void 0&&t instanceof e.ErrnoError)return t;let n=t?.code,r=typeof n==`string`?i[n]??29:29;return new e.ErrnoError(r)}function s(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function c(e){let t=e.isSymbolicLink?40960:e.isDirectory?16384:32768,n=e.isDirectory||e.isSymbolicLink?511:438;return t|((e.mode??n)&a||n)}function l(e){if(e!=null)return e instanceof Date?e.getTime():e}function u(e,t){let n=e=>e.mount.opts.bridge;function r(t){try{return t()}catch(t){throw o(e,t)}}function i(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function a(n,r,a){let o=e.createNode(n,r,c(a),0);return o.node_ops=t.node,o.stream_ops=t.stream,o.live=i(a),o}function l(e){if(!e.live.stat){let t=r(()=>n(e).lstat(s(e)));e.live.stat=t,e.mode=c(t)}return e.live.stat}function u(e,t){let n=s(e);return n===`/`?`/${t}`:`${n}/${t}`}function d(e){let t=e.live;if(t.loaded)return;let i=r(()=>n(e).readFile(s(e)));t.data=i,t.len=i.length,t.loaded=!0}function f(e,t){let n=e.live,r=n.data??new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function p(e){let t=e.live;if(!t.dirty||!t.data)return;let i=t.data.slice(0,t.len);r(()=>n(e).writeFile(s(e),i)),t.dirty=!1,t.stat=void 0}function m(e,t){let i=e.live;if(i.openCount>0){t>0?d(e):i.loaded=!0;let n=f(e,t);t>i.len&&n.fill(0,i.len,t),i.len=t,i.dirty=!0;return}let a=s(e),o=new Uint8Array(t);if(t>0){let i=r(()=>n(e).readFile(a));o.set(i.subarray(0,Math.min(t,i.length)))}r(()=>n(e).writeFile(a,o)),i.stat=void 0}return{Fs:e,bridgeOf:n,call:r,makeNode:a,statOf:l,childPath:u,ensureLoaded:d,ensureCapacity:f,flushNode:p,truncate:m}}function d(e){let{Fs:t,bridgeOf:n,call:r,makeNode:o,statOf:c,childPath:u,flushNode:d,truncate:f}=e;return{getattr(e){let n=c(e),r=e.live,i=t.isDir(e.mode)?4096:r.loaded?r.len:n.size,a=new Date(n.mtimeMs??0);return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:i,atime:a,mtime:a,ctime:a,blksize:4096,blocks:Math.ceil(i/4096)}},setattr(e,i){let o=s(e);if(i.mode!==void 0&&i.mode!==null){let t=i.mode&a;t!==(e.mode&a)&&(r(()=>n(e).chmod(o,t)),e.mode=e.mode&-4096|t)}i.size!==void 0&&i.size!==null&&t.isFile(e.mode)&&f(e,i.size);let c=l(i.mtime)??i.timestamp;if(c!==void 0){let t=l(i.atime)??c;d(e),r(()=>n(e).utimes(o,t,c))}e.live.stat=void 0},lookup(e,t){let i=r(()=>n(e).lstat(u(e,t)));return o(e,t,i)},mknod(e,a,s){let c=u(e,a);if(t.isDir(s))r(()=>n(e).mkdir(c));else if(t.isFile(s))r(()=>n(e).writeFile(c,new Uint8Array));else throw new t.ErrnoError(i.EPERM);let l=o(e,a,{isFile:t.isFile(s),isDirectory:t.isDir(s),isSymbolicLink:!1,size:0,mode:s,mtimeMs:Date.now()});return l.live.stat=void 0,l},rename(e,i,a){let o=s(e),c=u(i,a);d(e),r(()=>n(e).rename(o,c));try{let n=t.lookupNode?.(i,a);n&&n!==e&&t.hashRemoveNode?.(n)}catch{}e.name=a,e.live.stat=void 0},unlink(e,t){r(()=>n(e).unlink(u(e,t)))},rmdir(e,t){r(()=>n(e).rmdir(u(e,t)))},readdir(e){return[`.`,`..`,...r(()=>n(e).readdir(s(e)))]},symlink(e,t,i){let a=u(e,t);return r(()=>n(e).symlink(i,a)),o(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:i.length})},readlink(e){if(!t.isLink(e.mode))throw new t.ErrnoError(i.EINVAL);return r(()=>n(e).readlink(s(e)))}}}function f(e){let{Fs:t,statOf:n,ensureLoaded:r,ensureCapacity:a,flushNode:o}=e;return{open(e){t.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let n=e.node;if(!t.isFile(n.mode))return;let r=n.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(n)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(e,n,a,o,s){let c=e.node;if(t.isDir(c.mode))throw new t.ErrnoError(i.EISDIR);r(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(n.buffer,n.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(e,n,o,s,c){let l=e.node;if(t.isDir(l.mode))throw new t.ErrnoError(i.EISDIR);if(s<=0)return 0;r(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(n.buffer,n.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(e,r,a){let o=r;if(a===1)o+=e.position;else if(a===2&&t.isFile(e.node.mode)){let t=e.node.live;o+=t.loaded?t.len:n(e.node).size}if(o<0)throw new t.ErrnoError(i.EINVAL);return o},fsync(e){o(e.node)}}}function p(e){let t=new Set,n={},r=u(e,n),a=d(r),o=f(r);return n.node=a,n.stream=o,{mounts:t,node_ops:a,stream_ops:o,mount(n){let a=r.call(()=>n.opts.bridge.stat(n.opts.root));if(!a.isDirectory)throw new e.ErrnoError(i.ENOTDIR);let o=r.makeNode(null,`/`,a);return t.add(n),o}}}function m(e,t){return!!t&&e.mounts.has(t.mount)}function h(e,t){for(let n of e.nameTable??[])for(let r=n;r;r=r.name_next??null)if(!(!m(t,r)||!r.live.dirty||!r.live.data))try{let e=r.live.data.slice(0,r.live.len);r.mount.opts.bridge.writeFile(s(r),e),r.live.dirty=!1}catch(t){throw o(e,t)}}function g(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!m(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function _(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function v(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||!(typeof t.command==`string`||_(t.command)))return null;let n=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0;return{command:t.command,...typeof t.cwd==`string`?{cwd:t.cwd}:{},...n?{env:n}:{},...typeof t.input==`string`?{input:t.input}:{},...typeof t.timeoutMs==`number`?{timeoutMs:t.timeoutMs}:{}}}function y(e){return{run(t){let n=v(t);if(!n)return JSON.stringify({error:`EINVAL`,message:`malformed request`});let r;e.beforeExec();try{r=e.exec.run(n.command,{...n.input===void 0?{}:{input:n.input},...n.cwd===void 0?{}:{cwd:n.cwd},...n.env===void 0?{}:{env:n.env},...n.timeoutMs===void 0?{}:{timeout:n.timeoutMs}})}catch(e){let t=e?.code;r={error:typeof t==`string`?t:`EIO`,message:e instanceof Error?e.message:String(e)}}finally{e.afterExec()}return JSON.stringify(r)}}}const b=String.raw`
|
|
2
|
+
def __slicc_install_subprocess():
|
|
3
|
+
import errno, io, itertools, json, os, subprocess, sys
|
|
4
|
+
import _slicc_proc
|
|
5
|
+
|
|
6
|
+
PIPE, STDOUT, DEVNULL = subprocess.PIPE, subprocess.STDOUT, subprocess.DEVNULL
|
|
7
|
+
pids = itertools.count(1000)
|
|
8
|
+
|
|
9
|
+
def to_str(a):
|
|
10
|
+
a = os.fspath(a)
|
|
11
|
+
return a.decode('utf-8', 'surrogateescape') if isinstance(a, bytes) else a
|
|
12
|
+
|
|
13
|
+
class _StdinPipe(io.BytesIO):
|
|
14
|
+
def __init__(self, proc):
|
|
15
|
+
super().__init__()
|
|
16
|
+
self._proc = proc
|
|
17
|
+
def close(self):
|
|
18
|
+
if not self.closed:
|
|
19
|
+
data = self.getvalue()
|
|
20
|
+
super().close()
|
|
21
|
+
self._proc._start(data)
|
|
22
|
+
|
|
23
|
+
class SliccPopen:
|
|
24
|
+
def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None,
|
|
25
|
+
stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None,
|
|
26
|
+
env=None, universal_newlines=None, startupinfo=None, creationflags=0,
|
|
27
|
+
restore_signals=True, start_new_session=False, pass_fds=(), *,
|
|
28
|
+
user=None, group=None, extra_groups=None, encoding=None, errors=None,
|
|
29
|
+
text=None, umask=-1, pipesize=-1, process_group=None):
|
|
30
|
+
self.args = args
|
|
31
|
+
self.pid = next(pids)
|
|
32
|
+
self.returncode = None
|
|
33
|
+
self.text_mode = bool(text or universal_newlines or encoding or errors)
|
|
34
|
+
self._encoding = encoding or 'utf-8'
|
|
35
|
+
self._errors = errors or 'strict'
|
|
36
|
+
if shell:
|
|
37
|
+
command = to_str(args if isinstance(args, (str, bytes)) else args[0])
|
|
38
|
+
else:
|
|
39
|
+
argv = [args] if isinstance(args, (str, bytes, os.PathLike)) else list(args)
|
|
40
|
+
command = [to_str(a) for a in argv]
|
|
41
|
+
if executable is not None:
|
|
42
|
+
command[0] = to_str(executable)
|
|
43
|
+
self._shell = bool(shell)
|
|
44
|
+
self._command = command
|
|
45
|
+
self._cwd = to_str(cwd) if cwd is not None else os.getcwd()
|
|
46
|
+
self._env = {to_str(k): to_str(v) for k, v in (os.environ if env is None else env).items()}
|
|
47
|
+
self._stdout_to, self._stderr_to = stdout, stderr
|
|
48
|
+
self.stdout = self.stderr = None
|
|
49
|
+
self._out = self._err = b''
|
|
50
|
+
self.stdin = None
|
|
51
|
+
if stdin == PIPE:
|
|
52
|
+
self.stdin = _StdinPipe(self)
|
|
53
|
+
if self.text_mode:
|
|
54
|
+
self.stdin = io.TextIOWrapper(self.stdin, encoding=self._encoding,
|
|
55
|
+
errors=self._errors, write_through=True)
|
|
56
|
+
return
|
|
57
|
+
data = None
|
|
58
|
+
if stdin not in (None, DEVNULL):
|
|
59
|
+
data = os.read(stdin, 1 << 30) if isinstance(stdin, int) else stdin.read()
|
|
60
|
+
if isinstance(data, str):
|
|
61
|
+
data = data.encode(self._encoding, self._errors)
|
|
62
|
+
self._start(data)
|
|
63
|
+
|
|
64
|
+
def _start(self, data, timeout=None):
|
|
65
|
+
if self.returncode is not None:
|
|
66
|
+
return
|
|
67
|
+
req = {'command': self._command, 'cwd': self._cwd, 'env': self._env}
|
|
68
|
+
if data:
|
|
69
|
+
req['input'] = data.decode('utf-8', 'surrogateescape')
|
|
70
|
+
if timeout is not None:
|
|
71
|
+
req['timeoutMs'] = int(timeout * 1000)
|
|
72
|
+
reply = json.loads(_slicc_proc.run(json.dumps(req)))
|
|
73
|
+
if 'error' in reply:
|
|
74
|
+
code = getattr(errno, reply['error'], errno.EIO)
|
|
75
|
+
raise OSError(code, reply.get('message') or os.strerror(code))
|
|
76
|
+
out = reply['stdout'].encode('utf-8', 'surrogateescape')
|
|
77
|
+
err = reply['stderr'].encode('utf-8', 'surrogateescape')
|
|
78
|
+
code = reply['exitCode']
|
|
79
|
+
if (not self._shell and code == 127 and b'command not found' in err):
|
|
80
|
+
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), self._command[0])
|
|
81
|
+
if self._stderr_to == STDOUT:
|
|
82
|
+
out, err = out + err, b''
|
|
83
|
+
self._out = self._route(out, self._stdout_to, sys.stdout)
|
|
84
|
+
self._err = self._route(err, self._stderr_to, sys.stderr)
|
|
85
|
+
if self._stdout_to == PIPE:
|
|
86
|
+
self.stdout = self._pipe(self._out)
|
|
87
|
+
if self._stderr_to == PIPE:
|
|
88
|
+
self.stderr = self._pipe(self._err)
|
|
89
|
+
self.returncode = code
|
|
90
|
+
|
|
91
|
+
def _route(self, data, target, inherit):
|
|
92
|
+
if target == PIPE:
|
|
93
|
+
return data
|
|
94
|
+
if target is None:
|
|
95
|
+
if data:
|
|
96
|
+
inherit.write(data.decode('utf-8', 'replace'))
|
|
97
|
+
inherit.flush()
|
|
98
|
+
elif target not in (DEVNULL, STDOUT):
|
|
99
|
+
if isinstance(target, int):
|
|
100
|
+
os.write(target, data)
|
|
101
|
+
elif isinstance(target, io.TextIOBase):
|
|
102
|
+
target.write(data.decode('utf-8', 'replace'))
|
|
103
|
+
else:
|
|
104
|
+
target.write(data)
|
|
105
|
+
return b''
|
|
106
|
+
|
|
107
|
+
def _pipe(self, data):
|
|
108
|
+
if self.text_mode:
|
|
109
|
+
return io.StringIO(data.decode(self._encoding, self._errors))
|
|
110
|
+
return io.BytesIO(data)
|
|
111
|
+
|
|
112
|
+
def communicate(self, input=None, timeout=None):
|
|
113
|
+
if self.returncode is None:
|
|
114
|
+
if isinstance(input, str):
|
|
115
|
+
input = input.encode(self._encoding, self._errors)
|
|
116
|
+
if self.stdin is not None and not self.stdin.closed:
|
|
117
|
+
raw = self.stdin.buffer if isinstance(self.stdin, io.TextIOWrapper) else self.stdin
|
|
118
|
+
if input:
|
|
119
|
+
raw.write(input)
|
|
120
|
+
input = raw.getvalue()
|
|
121
|
+
io.BytesIO.close(raw)
|
|
122
|
+
self._start(input, timeout)
|
|
123
|
+
out = self.stdout.read() if self.stdout is not None else None
|
|
124
|
+
err = self.stderr.read() if self.stderr is not None else None
|
|
125
|
+
return out, err
|
|
126
|
+
|
|
127
|
+
def wait(self, timeout=None):
|
|
128
|
+
if self.returncode is None:
|
|
129
|
+
self.communicate(timeout=timeout)
|
|
130
|
+
return self.returncode
|
|
131
|
+
|
|
132
|
+
def poll(self):
|
|
133
|
+
# Never starts work, like CPython: a child still waiting for its
|
|
134
|
+
# stdin=PIPE input has not run yet, so it is "still running".
|
|
135
|
+
# A started child always ran to completion.
|
|
136
|
+
return self.returncode
|
|
137
|
+
|
|
138
|
+
def send_signal(self, sig):
|
|
139
|
+
pass
|
|
140
|
+
|
|
141
|
+
def terminate(self):
|
|
142
|
+
pass
|
|
143
|
+
|
|
144
|
+
def kill(self):
|
|
145
|
+
pass
|
|
146
|
+
|
|
147
|
+
def __enter__(self):
|
|
148
|
+
return self
|
|
149
|
+
|
|
150
|
+
def __exit__(self, *exc):
|
|
151
|
+
for f in (self.stdout, self.stderr, self.stdin):
|
|
152
|
+
if f is not None and not f.closed:
|
|
153
|
+
f.close()
|
|
154
|
+
self.wait()
|
|
155
|
+
|
|
156
|
+
def __repr__(self):
|
|
157
|
+
return f'<SliccPopen: returncode: {self.returncode} args: {self.args!r}>'
|
|
158
|
+
|
|
159
|
+
def system(command):
|
|
160
|
+
code = SliccPopen(command, shell=True).wait()
|
|
161
|
+
return (code & 0xff) << 8
|
|
162
|
+
|
|
163
|
+
subprocess.Popen = SliccPopen
|
|
164
|
+
os.system = system
|
|
165
|
+
|
|
166
|
+
__slicc_install_subprocess()
|
|
167
|
+
del __slicc_install_subprocess
|
|
168
|
+
`;function x(e,t){e.registerJsModule(`_slicc_proc`,y(t)),e.runPython(b)}function S(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function C(i,a,o,s){if(a.env?.SLICC_PY_FS===`opfs`)return;let c=n(a,o),l=t(a,c);if(!l||!a.syncFsToken)return;let u=i.FS,d=u.filesystems.SLICC_LIVE_FS??p(u);u.filesystems.SLICC_LIVE_FS=d;let f=[];for(let e of S(a.pyodideMountDirs??[a.cwd,`/tmp`]))if(e!==`/`)try{u.mkdirTree(e),u.mount(d,{root:e,bridge:l},e),f.push(e)}catch(t){s(`live VFS mount of ${e} failed: ${t instanceof Error?t.message:String(t)}`)}return f.length===0?void 0:(x(i,{exec:r(a.syncFsToken,{...c?{transport:e(c)}:{}}),beforeExec:()=>h(u,d),afterExec:()=>g(u,d)}),{plugin:d,mounted:f,flush:()=>h(u,d)})}export{C as mountPyLiveVfs};
|
|
@@ -219,9 +219,9 @@ import _slicc_fs_js as _bridge
|
|
|
219
219
|
_build_slicc_module(_bridge)
|
|
220
220
|
del _build_slicc_module
|
|
221
221
|
del _bridge
|
|
222
|
-
`)}const ut=ze(`pyodide`,`314.0.6`),dt=`https://cdn.jsdelivr.net/pyodide/v${ut}/full/`,ft=`pyodide is not installed in node_modules: run \`ipk add pyodide@${ut}\` (no network fallback)`,Z={asmJs:`pyodide.asm.mjs`,asmWasm:`pyodide.asm.wasm`,stdlibZip:`python_stdlib.zip`,lockJson:`pyodide-lock.json`};async function pt(e,t){try{let[n,r,i,a]=await Promise.all([e.call(`vfs`,`readFile`,[`${t}/${Z.asmJs}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.asmWasm}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.stdlibZip}`]),e.call(`vfs`,`readFile`,[`${t}/${Z.lockJson}`])]);return{asmJsSource:n,asmWasmBytes:r instanceof Uint8Array?r:new Uint8Array(r),stdlibBytes:i instanceof Uint8Array?i:new Uint8Array(i),lockJsonString:a}}catch{return null}}function mt(e,t){let n=e+Z.asmWasm,r=globalThis.fetch,i=!0,a=(e,i)=>(typeof e==`string`?e:e instanceof URL?e.href:e.url)===n?Promise.resolve(new Response(t,{headers:{"Content-Type":`application/wasm`}})):r(e,i);return globalThis.fetch=a,{restore:()=>{i&&(i=!1,globalThis.fetch===a&&(globalThis.fetch=r))}}}async function ht(e,t,n){let r=await pt(n,t);if(!r)throw Error(ft);let i=URL.createObjectURL(new Blob([r.asmJsSource],{type:`text/javascript`})),a=URL.createObjectURL(new Blob([r.stdlibBytes],{type:`application/zip`})),o=`slicc-pyodide://local/${crypto.randomUUID()}/`,s=mt(o,r.asmWasmBytes);try{let t=await import(i);return await e.loadPyodide({indexURL:o,lockFileContents:r.lockJsonString,stdLibURL:a,createPyodideModule:t.default,packageBaseUrl:Re(`/workspace/python_wheels/`)})}finally{s.restore(),URL.revokeObjectURL(i),URL.revokeObjectURL(a)}}async function gt(e,t,n=()=>import(`./pyodide-
|
|
222
|
+
`)}const ut=ze(`pyodide`,`314.0.6`),dt=`https://cdn.jsdelivr.net/pyodide/v${ut}/full/`,ft=`pyodide is not installed in node_modules: run \`ipk add pyodide@${ut}\` (no network fallback)`,Z={asmJs:`pyodide.asm.mjs`,asmWasm:`pyodide.asm.wasm`,stdlibZip:`python_stdlib.zip`,lockJson:`pyodide-lock.json`};async function pt(e,t){try{let[n,r,i,a]=await Promise.all([e.call(`vfs`,`readFile`,[`${t}/${Z.asmJs}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.asmWasm}`]),e.call(`vfs`,`readFileBinary`,[`${t}/${Z.stdlibZip}`]),e.call(`vfs`,`readFile`,[`${t}/${Z.lockJson}`])]);return{asmJsSource:n,asmWasmBytes:r instanceof Uint8Array?r:new Uint8Array(r),stdlibBytes:i instanceof Uint8Array?i:new Uint8Array(i),lockJsonString:a}}catch{return null}}function mt(e,t){let n=e+Z.asmWasm,r=globalThis.fetch,i=!0,a=(e,i)=>(typeof e==`string`?e:e instanceof URL?e.href:e.url)===n?Promise.resolve(new Response(t,{headers:{"Content-Type":`application/wasm`}})):r(e,i);return globalThis.fetch=a,{restore:()=>{i&&(i=!1,globalThis.fetch===a&&(globalThis.fetch=r))}}}async function ht(e,t,n){let r=await pt(n,t);if(!r)throw Error(ft);let i=URL.createObjectURL(new Blob([r.asmJsSource],{type:`text/javascript`})),a=URL.createObjectURL(new Blob([r.stdlibBytes],{type:`application/zip`})),o=`slicc-pyodide://local/${crypto.randomUUID()}/`,s=mt(o,r.asmWasmBytes);try{let t=await import(i);return await e.loadPyodide({indexURL:o,lockFileContents:r.lockJsonString,stdLibURL:a,createPyodideModule:t.default,packageBaseUrl:Re(`/workspace/python_wheels/`)})}finally{s.restore(),URL.revokeObjectURL(i),URL.revokeObjectURL(a)}}async function gt(e,t,n=()=>import(`./pyodide-DKNrUBio.js`)){let r=[],i=[],a=new st(t),o;try{let t=await n();o=e.pyodideAssetRoot?await ht(t,e.pyodideAssetRoot,a):await t.loadPyodide({indexURL:e.pyodideIndexURL})}catch(e){a.dispose();let n={type:`realm-error`,message:`loadPyodide: ${e instanceof Error?e.message:String(e)}`};t.postMessage(n);return}let s=e=>{i.push(`Warning: ${e}\n`)},c=[],l,u;try{await _t(o,a,s,vt(e.pyodideAssetRoot));let{mountPyLiveVfs:n}=await import(`./py-live-vfs-DaPSes0l.js`);l=n(o,e,t,s),l||(c=await Ot(o,e,s),await kt(o,e,s)),await Et(o,a,e,s),await At(o,a,s);try{o.FS.chdir(e.cwd)}catch{}jt(o,e,r,i),u=await Pt(o,i),l?Nt(l,s):await Ft(c,e,a,s)}catch(e){a.dispose();let n={type:`realm-error`,message:`${e instanceof Error?e.message:String(e)}${i.length?`\n${i.join(``)}`:``}`};t.postMessage(n);return}a.dispose();let d={type:`realm-done`,stdout:r.join(``),stderr:i.join(``),exitCode:u};t.postMessage(d)}const Q=`/workspace/python_wheels`;async function _t(e,t,n,r){await xt(t,n,r);try{await e.loadPackage([`micropip`])}catch(e){n(`micropip preload failed: ${$(e)}`)}}function vt(e){return e?`${e}/${Z.lockJson}`:`/workspace/node_modules/pyodide/pyodide-lock.json`}const yt=1e4,bt=new WeakMap;function xt(e,t,n){let r=bt.get(e);if(r)return r;let i=St(e,t,n);return bt.set(e,i),i}async function St(e,t,n){let r;try{if(!await e.call(`vfs`,`exists`,[n]))return;let t=await e.call(`vfs`,`readFile`,[n]),i=JSON.parse(t);for(let[e,t]of Object.entries(i.packages??{}))if(t?.file_name&&x(t.name??e)===`micropip`){r=t;break}}catch(e){t(`micropip wheel staging skipped: ${$(e)}`);return}if(!r?.file_name||!r.sha256)return;let i=`${Q}/${r.file_name}`;try{if(await e.call(`vfs`,`exists`,[i]))return;let t=await ee(Ct(e),{url:`${dt}${r.file_name}`,sha256:r.sha256,label:`micropip wheel`,timeoutMs:yt});await e.call(`vfs`,`mkdir`,[Q]),await e.call(`vfs`,`writeFileBinary`,[i,t])}catch(e){t(`micropip wheel staging failed: ${$(e)}`)}}function Ct(e){return async(t,n)=>{let r={method:n?.method??`GET`,...n?.headers?{headers:n.headers}:{},...n?.body===void 0?{}:{body:n.body}},i=await wt(e.call(`fetch`,`request`,[t,r]),n?.timeoutMs??yt,t);return{status:i.status,statusText:i.statusText,headers:i.headers,body:i.body instanceof Uint8Array?i.body:new Uint8Array(i.body),url:i.url}}}function wt(e,t,n){let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(`request to ${n} timed out after ${t}ms`)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))}function Tt(e){return{exists:t=>e.call(`vfs`,`exists`,[t]),readFile:t=>e.call(`vfs`,`readFile`,[t])}}async function Et(e,t,n,r){let i=Tt(t),a;try{a=await S(i,n.cwd)}catch(e){r(`manifest discovery failed: ${$(e)}`);return}if(a===null)return;let o,s;try{let[e,t]=await Promise.all([ae(i,a),oe(i,a)]);o=e.dependencies,s=t}catch(e){r(`manifest read failed: ${$(e)}`);return}let c=new Map;for(let e of s)c.set(x(e.name),e);for(let t of o){let{name:n}=te(t);if(!n)continue;let i=c.get(x(n));if(!i){r(`no integrity pin for \`${n}\`; run \`di sync\` to repair`);continue}await Dt(e,i,r)}}async function Dt(e,t,n){switch(t.source){case`pyodide-cdn`:try{await e.loadPackage([t.name])}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;case`pypi`:try{let n=`${Q}/${t.fileName}`;await e.runPythonAsync(`import micropip; await micropip.install('emfs:${n}')`)}catch(e){n(`activation of \`${t.name}\` failed: ${$(e)}`)}return;default:n(`unknown source \`${t.source}\` for \`${t.name}\`; skipping`)}}async function Ot(e,t,n){if(t.opfsMountDbName===void 0)return[];let r=t.pyodideMountDirs??[t.cwd,`/tmp`],i=t.mountPoints??[],a=new Set(i.map(e=>e.path));try{return(await Rt(e,r,t.opfsMountDbName,n,{skipMountPaths:a})).mounts}catch(e){return n(`VFS→Pyodide OPFS mount failed: ${$(e)}`),[]}}async function kt(e,t,n){let r=t.mountPoints??[];if(r.length!==0){try{it(e.FS,r.map(e=>e.path),n)}catch(e){n(`bomb overlay install failed: ${$(e)}`)}try{await ot(e,r.map(e=>e.path))}catch(e){n(`python mount guard install failed: ${$(e)}`)}}}async function At(e,t,n){try{await lt(e,t)}catch(e){n(`slicc.fs registration failed: ${$(e)}`)}}function jt(e,t,n,r){e.setStdout({batched:e=>n.push(e+`
|
|
223
223
|
`)}),e.setStderr({batched:e=>r.push(e+`
|
|
224
|
-
`)});let i=!1;e.setStdin({stdin:()=>i||!t.stdin?null:(i=!0,t.stdin)}),e.globals.set(`__slicc_code`,t.code),e.globals.set(`__slicc_filename`,t.filename),e.globals.set(`__slicc_argv`,t.argv)}async function
|
|
224
|
+
`)});let i=!1;e.setStdin({stdin:()=>i||!t.stdin?null:(i=!0,t.stdin)}),Mt(e,t.env),e.globals.set(`__slicc_code`,t.code),e.globals.set(`__slicc_filename`,t.filename),e.globals.set(`__slicc_argv`,t.argv)}function Mt(e,t){if(!(!t||Object.keys(t).length===0)){e.globals.set(`__slicc_env`,e.toPy(t));try{e.runPython(`import os; os.environ.update(__slicc_env)`)}finally{e.runPython(`del __slicc_env`)}}}function Nt(e,t){try{e.flush()}catch(e){t(`Pyodide→VFS flush failed: ${$(e)}`)}}async function Pt(e,t){let n;try{await e.runPythonAsync(`
|
|
225
225
|
import sys
|
|
226
226
|
import traceback
|
|
227
227
|
|
|
@@ -241,4 +241,4 @@ except SystemExit as exc:
|
|
|
241
241
|
except BaseException:
|
|
242
242
|
traceback.print_exc()
|
|
243
243
|
__slicc_exit_code = 1
|
|
244
|
-
`);let t=e.globals.get(`__slicc_exit_code`);n=typeof t==`number`?t:Number(t??1)}catch(e){let r=e instanceof Error?e.message:String(e);t.push(`${r}\n`),n=1}try{e.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}return n}async function
|
|
244
|
+
`);let t=e.globals.get(`__slicc_exit_code`);n=typeof t==`number`?t:Number(t??1)}catch(e){let r=e instanceof Error?e.message:String(e);t.push(`${r}\n`),n=1}try{e.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}return n}async function Ft(e,t,n,r){if(t.opfsMountDbName!==void 0){try{await Ht(e,n)}catch(e){r(`Pyodide→VFS consistency mark clear failed: ${e instanceof Error?e.message:String(e)}`),r(`Pyodide→VFS OPFS flush skipped: clean-boot mark could not be cleared`);return}try{await Ut(e)}catch(e){r(`Pyodide→VFS OPFS flush failed: ${e instanceof Error?e.message:String(e)}`)}try{await Wt(e,n)}catch(e){r(`Pyodide→kernel VFS invalidation failed: ${$(e)}`)}}}const It=new Set([`dev`,`proc`,`lib`,`tmp`,`home`]);function $(e){if(e&&typeof e==`object`){let t=e,n=typeof t.errno==`number`,r=typeof t.code==`string`;if(n||r){let e=typeof t.name==`string`&&t.name?t.name:`Error`,i=typeof t.message==`string`?t.message:``,a=[];n&&a.push(`errno ${t.errno}`),r&&a.push(t.code);let o=a.length?` (${a.join(`, `)})`:``;return i?`${e}: ${i}${o}`:`${e}${o}`}}return e instanceof Error?e.message:String(e)}function Lt(e){let t=e.FS.filesystems,n=t.OPFS_SYNC_FS;return n||(n=Ge(e.FS),t.OPFS_SYNC_FS=n),n}async function Rt(e,t,n,r=()=>{},i={}){let a=[],o=i.skipMountPaths??new Set,s=navigator.storage;if(!s?.getDirectory)return r(`VFS→Pyodide OPFS mount skipped: navigator.storage.getDirectory unavailable`),{mounts:a};let c;try{c=await s.getDirectory()}catch(e){return r(`VFS→Pyodide OPFS mount: getDirectory() failed: ${$(e)}`),{mounts:a}}let l;try{l=await c.getDirectoryHandle(n,{create:!0})}catch(e){return r(`VFS→Pyodide OPFS mount: opening '${n}' failed: ${$(e)}`),{mounts:a}}let u=Lt(e);for(let n of t){if(n===`/`){await zt(e,u,l,o,a,r);continue}if(!o.has(n))try{let t=l;for(let e of n.split(`/`).filter(Boolean))t=await t.getDirectoryHandle(e,{create:!0});await Bt(e,u,n,t,a)}catch(e){r(`VFS→Pyodide OPFS mount '${n}' failed: ${$(e)}`)}}return{mounts:a}}async function zt(e,t,n,r,i,a){try{let o=n;for await(let[n,s]of o){if(s.kind!==`directory`||It.has(n))continue;let o=`/${n}`;if(!r.has(o))try{await Bt(e,t,o,s,i)}catch(e){a(`VFS→Pyodide OPFS mount '${o}' failed: ${$(e)}`)}}}catch(e){a(`VFS→Pyodide OPFS mount '/' failed: ${$(e)}`)}}async function Bt(e,t,n,r,i){try{e.FS.stat(n)}catch{e.FS.mkdirTree(n)}let a=await Ve(r),o=Ye();await o.preload(a);let s={rootHandle:r,prewalk:a,sahProvider:o.provider},c=e.FS.mount(t,s,n),l=c?.mount??{opts:s,mountpoint:n,root:c};i.push({pyPath:n,mount:l,rootHandle:r,flushBuffers:o.flush,getDirtyPaths:o.getDirtyPaths})}function Vt(e){return e.some(e=>e.getDirtyPaths().length>0||Ke(e.mount))}async function Ht(e,t){Vt(e)&&await t.call(`vfs`,`forgetSidecarConsistency`,[])}async function Ut(e){for(let t of e)await qe(t.mount),await t.flushBuffers(t.rootHandle)}async function Wt(e,t){let n=[];for(let t of e)for(let e of t.getDirtyPaths())n.push(t.pyPath===`/`?`/${e}`:`${t.pyPath}/${e}`);n.length>0&&await t.call(`vfs`,`invalidatePaths`,[n])}const Gt={postMessage:(e,t)=>t?self.postMessage(e,t):self.postMessage(e),addEventListener:(e,t)=>self.addEventListener(e,t),removeEventListener:(e,t)=>self.removeEventListener(e,t)};self.addEventListener(`message`,e=>{if(e.data?.type!==`realm-init`)return;let t=e.data;t.kind===`py`&>(t,Gt).catch(e=>{let t={type:`realm-error`,message:e instanceof Error?e.message:String(e)};self.postMessage(t)})});export{l as n,c as r,o as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,r as t}from"./py-realm-worker-
|
|
1
|
+
import{n as e,r as t}from"./py-realm-worker-CYwLJW9I.js";var n=Object.defineProperty,r=(e,t)=>n(e,`name`,{value:t,configurable:!0}),i=(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)}),a=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return t=>{for(var n=t.length,r=new Uint8Array((n-(t[n-1]==`=`)-(t[n-2]==`=`))*3/4|0),i=0,a=0;i<n;){var o=e[t.charCodeAt(i++)],s=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];r[a++]=o<<2|s>>4,r[a++]=s<<4|c>>2,r[a++]=c<<6|l}return r}})();function o(e){return!isNaN(parseFloat(e))&&isFinite(e)}r(o,`_isNumber`);function s(e){return e.charAt(0).toUpperCase()+e.substring(1)}r(s,`_capitalize`);function c(e){return function(){return this[e]}}r(c,`_getter`);var l=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],u=[`columnNumber`,`lineNumber`],d=[`fileName`,`functionName`,`source`],f=l.concat(u,d,[`args`],[`evalOrigin`]);function p(e){if(e)for(var t=0;t<f.length;t++)e[f[t]]!==void 0&&this[`set`+s(f[t])](e[f[t]])}for(r(p,`StackFrame`),p.prototype={getArgs:r(function(){return this.args},`getArgs`),setArgs:r(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:r(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:r(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:r(function(){var e=this.getFileName()||``,t=this.getLineNumber()||``,n=this.getColumnNumber()||``,r=this.getFunctionName()||``;return this.getIsEval()?e?`[eval] (`+e+`:`+t+`:`+n+`)`:`[eval]:`+t+`:`+n:r?r+` (`+e+`:`+t+`:`+n+`)`:e+`:`+t+`:`+n},`toString`)},p.fromString=r(function(e){var t=e.indexOf(`(`),n=e.lastIndexOf(`)`),r=e.substring(0,t),i=e.substring(t+1,n).split(`,`),a=e.substring(n+1);if(a.indexOf(`@`)===0)var o=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,``),s=o[1],c=o[2],l=o[3];return new p({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),m=0;m<l.length;m++)p.prototype[`get`+s(l[m])]=c(l[m]),p.prototype[`set`+s(l[m])]=function(e){return function(t){this[e]=!!t}}(l[m]);var m;for(h=0;h<u.length;h++)p.prototype[`get`+s(u[h])]=c(u[h]),p.prototype[`set`+s(u[h])]=function(e){return function(t){if(!o(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(u[h]);var h;for(g=0;g<d.length;g++)p.prototype[`get`+s(d[g])]=c(d[g]),p.prototype[`set`+s(d[g])]=function(e){return function(t){this[e]=String(t)}}(d[g]);var g,_=p;function v(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:r(function(t){if(t.stack&&t.stack.match(e))return this.parseV8OrIE(t);if(t.stack)return this.parseFFOrSafari(t);throw Error(`Cannot parse given Error object`)},`ErrorStackParser$$parse`),extractLocation:r(function(e){if(e.indexOf(`:`)===-1)return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,``));return[t[1],t[2]||void 0,t[3]||void 0]},`ErrorStackParser$$extractLocation`),parseV8OrIE:r(function(t){return t.stack.split(`
|
|
2
2
|
`).filter(function(t){return!!t.match(e)},this).map(function(e){e.indexOf(`(eval `)>-1&&(e=e.replace(/eval code/g,`eval`).replace(/(\(eval at [^()]*)|(,.*$)/g,``));var t=e.replace(/^\s+/,``).replace(/\(eval code/g,`(`).replace(/^.*?\s+/,``),n=t.match(/ (\(.+\)$)/);t=n?t.replace(n[0],``):t;var r=this.extractLocation(n?n[1]:t);return new _({functionName:n&&t||void 0,fileName:[`eval`,`<anonymous>`].indexOf(r[0])>-1?void 0:r[0],lineNumber:r[1],columnNumber:r[2],source:e})},this)},`ErrorStackParser$$parseV8OrIE`),parseFFOrSafari:r(function(e){return e.stack.split(`
|
|
3
|
-
`).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`,IN_WORKERD:typeof navigator==`object`&&navigator.userAgent?.includes(`Cloudflare-Workers`)})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;if(o&&S())throw Error(`Classic web workers are not supported`);let s={...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n};if(!(s.IN_BROWSER_MAIN_THREAD||s.IN_BROWSER_WEB_WORKER||s.IN_NODE||s.IN_SHELL||s.IN_WORKERD))throw Error(`Cannot determine runtime environment: ${JSON.stringify(s)}`);return s}r(x,`calculateDerivedFlags`);function S(){try{return globalThis.importScripts(`data:text/javascript,`),!0}catch{return!1}}r(S,`isClassicWorker`);var C,w,T,E;async function D(){if(!b.IN_NODE||(C=(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).default,T=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),E=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).default,w=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),j=w.sep,typeof i<`u`))return;let e={fs:T,crypto:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),ws:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1)),child_process:await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))};globalThis.require=function(t){return e[t]}}r(D,`initNodeModules`);function O(e,t){return w.resolve(t||`.`,e)}r(O,`node_resolvePath`);function k(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(k,`browser_resolvePath`);var A=b.IN_NODE?O:b.IN_SHELL?r(e=>e,`resolvePath`):k,j;b.IN_NODE||(j=`/`);function M(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:E.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(M,`node_getBinaryResponse`);function N(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(N,`shell_getBinaryResponse`);function P(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(P,`browser_getBinaryResponse`);var F=b.IN_NODE?M:b.IN_SHELL?N:P;async function I(e,t){let{response:n,binary:r}=F(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(I,`loadBinaryFile`);var te=b.IN_NODE?L:r(async e=>await import(e),`loadScript`);async function L(e){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?await import(e):await import(C.pathToFileURL(e).href)}r(L,`nodeLoadScript`);async function R(e){if(b.IN_NODE){await D();let t=await E.readFile(e,{encoding:`utf8`});return JSON.parse(t)}if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}return await(await fetch(e)).json()}r(R,`loadLockFile`);async function z(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1));return(await import(`./__vite-browser-external-C7Grxh8D.js`).then(e=>t(e.default,1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(j);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(z,`calculateDirname`);function B(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(B,`calculateInstallBaseUrl`);function ne(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(ne,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{Jsv_GetError_import:r(()=>t,`Jsv_GetError_import`),JsvError_Check:r(e=>e===t,`JsvError_Check`)}}r(V,`getJsvErrorImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=I(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.FS.mkdirTree(`/lib/python${n}.${r}/lib-dynload`),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),ne,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=F(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){let{Jsv_GetError_import:a,JsvError_Check:o}=await r;e.env.Jsv_GetError_import=a,e.env.JsvError_Check=o;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`314.0.6`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await D(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await z();if(t=X(A(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v314.0.6/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=R(n),e.packageBaseUrl??=B(n)}e.indexURL=t,e.packageCacheDir&&=X(A(e.packageCacheDir));let n={jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`6f88bdfdf0581f0eab1d84a508b31ab96e83201d2b7fdd1dc653a3079c23a0f5`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){return e.createPyodideModule?e.createPyodideModule:(await te(`${e.indexURL}pyodide.asm.mjs`)).default}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e,t){let n=await e(t);if(t.exitCode!==void 0)throw new n.ExitStatus(t.exitCode);return n}r(le,`instantiatePyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`314.0.6`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t),r=await se(t),i=await ce(t,n),a=await le(r,n);return ue(a,t),await fe(de(a,i,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
|
|
3
|
+
`).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`,IN_WORKERD:typeof navigator==`object`&&navigator.userAgent?.includes(`Cloudflare-Workers`)})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;if(o&&S())throw Error(`Classic web workers are not supported`);let s={...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n};if(!(s.IN_BROWSER_MAIN_THREAD||s.IN_BROWSER_WEB_WORKER||s.IN_NODE||s.IN_SHELL||s.IN_WORKERD))throw Error(`Cannot determine runtime environment: ${JSON.stringify(s)}`);return s}r(x,`calculateDerivedFlags`);function S(){try{return globalThis.importScripts(`data:text/javascript,`),!0}catch{return!1}}r(S,`isClassicWorker`);var C,w,T,E;async function D(){if(!b.IN_NODE||(C=(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).default,T=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),E=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).default,w=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),j=w.sep,typeof i<`u`))return;let e={fs:T,crypto:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),ws:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1)),child_process:await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))};globalThis.require=function(t){return e[t]}}r(D,`initNodeModules`);function O(e,t){return w.resolve(t||`.`,e)}r(O,`node_resolvePath`);function k(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(k,`browser_resolvePath`);var A=b.IN_NODE?O:b.IN_SHELL?r(e=>e,`resolvePath`):k,j;b.IN_NODE||(j=`/`);function M(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:E.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(M,`node_getBinaryResponse`);function N(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(N,`shell_getBinaryResponse`);function P(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(P,`browser_getBinaryResponse`);var F=b.IN_NODE?M:b.IN_SHELL?N:P;async function I(e,t){let{response:n,binary:r}=F(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(I,`loadBinaryFile`);var te=b.IN_NODE?L:r(async e=>await import(e),`loadScript`);async function L(e){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?await import(e):await import(C.pathToFileURL(e).href)}r(L,`nodeLoadScript`);async function R(e){if(b.IN_NODE){await D();let t=await E.readFile(e,{encoding:`utf8`});return JSON.parse(t)}if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}return await(await fetch(e)).json()}r(R,`loadLockFile`);async function z(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1));return(await import(`./__vite-browser-external-CVereMU8.js`).then(e=>t(e.default,1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(j);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(z,`calculateDirname`);function B(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(B,`calculateInstallBaseUrl`);function ne(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(ne,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{Jsv_GetError_import:r(()=>t,`Jsv_GetError_import`),JsvError_Check:r(e=>e===t,`JsvError_Check`)}}r(V,`getJsvErrorImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=I(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.FS.mkdirTree(`/lib/python${n}.${r}/lib-dynload`),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),ne,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=F(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){let{Jsv_GetError_import:a,JsvError_Check:o}=await r;e.env.Jsv_GetError_import=a,e.env.JsvError_Check=o;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`314.0.6`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await D(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await z();if(t=X(A(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v314.0.6/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=R(n),e.packageBaseUrl??=B(n)}e.indexURL=t,e.packageCacheDir&&=X(A(e.packageCacheDir));let n={jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`6f88bdfdf0581f0eab1d84a508b31ab96e83201d2b7fdd1dc653a3079c23a0f5`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){return e.createPyodideModule?e.createPyodideModule:(await te(`${e.indexURL}pyodide.asm.mjs`)).default}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e,t){let n=await e(t);if(t.exitCode!==void 0)throw new n.ExitStatus(t.exitCode);return n}r(le,`instantiatePyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`314.0.6`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t),r=await se(t),i=await ce(t,n),a=await le(r,n);return ue(a,t),await fe(de(a,i,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./compat-qQM4gjF_.js";import{t as n}from"./logger-DDBAeTLF.js";import{E as r,O as i,g as a,k as o}from"./account-store-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./compat-qQM4gjF_.js";import{t as n}from"./logger-DDBAeTLF.js";import{E as r,O as i,g as a,k as o}from"./account-store-Bbb4tBjB.js";import{t as s}from"./llm-session-id-bZQs6gBN.js";import{i as c,t as l}from"./icons-jrIi5FYk.js";var u=e({lucideIconNames:()=>h,pickLucideIcon:()=>g,quickLabel:()=>f}),d=n(`quick-llm`);async function f(e){let n=a();if(!n)return d.debug(`No API key for active provider — skipping`),null;let r=o(),s=i(),c;if(c=e.modelId?b(r,e.modelId)??b(r,s):_(r,s),!c)return d.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},u={};c.provider===`adobe`&&(u[`X-Session-Id`]=S());try{let r=(await t(c,{systemPrompt:e.system,messages:[l]},{apiKey:n,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(u).length>0?u:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return r.length>0?r:null}catch(e){return d.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var p=null;function m(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function h(){return p||=Object.keys(c).map(m).sort(),p}async function g(e){let t=h(),n=await(e.labelFn??f)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return l(r)?r:null}function _(e,t){let n=r(e);if(n.length===0)return;let i=n.find(e=>e.id===t)??n[0],a=y(i.id),o=n.filter(e=>v(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function v(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function y(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function b(e,t){return r(e).find(e=>e.id===t)}var x=`ui-quick-llm`;function S(){return s(x)}export{u as n,f as t};
|