alchemylab 3.0.7 → 3.0.9
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/214.js +940 -0
- package/dist/414.js +3095 -42
- package/dist/478.js +2 -2
- package/dist/772.js +2209 -0
- package/dist/776.js +12 -12
- package/dist/833.js +944 -0
- package/dist/994.js +350 -129
- package/dist/cli.js +18057 -7834
- package/dist/document-textconv.js +183 -183
- package/dist/http-server.js +18964 -5998
- package/dist/index.js +19303 -6324
- package/dist/mcp-direct.js +17227 -5787
- package/package.json +19 -19
|
@@ -10,18 +10,18 @@ return Math.round(parseFloat(t[1])*r)}function n(e,t,r,n){return e>0&&r>0?t+r<=e
|
|
|
10
10
|
if(e>0)return e
|
|
11
11
|
const t=await(0,d.docker)(["info","--format","{{.MemTotal}}"],d.DOCKER_OP_TIMEOUT_MS)
|
|
12
12
|
return 0===t.exit?Number(t.stdout.trim()):NaN}function s(e){if(!Number.isInteger(e)||e<=0)return!0
|
|
13
|
-
try{return process.kill(e,0),!0}catch(e){return"EPERM"===e?.code}}function
|
|
13
|
+
try{return process.kill(e,0),!0}catch(e){return"EPERM"===e?.code}}function i(e,t,r=s){return!(!e||!f.has(t)||r(Number(e)))}async function a(){const e=await(0,d.docker)(["ps","-a","--filter","label=alchemy.project","--filter","status=running","--filter","status=created","--format",'{{.ID}}\t{{.Label "alchemy.owner"}}\t{{.Label "alchemy.sandbox"}}'],d.DOCKER_OP_TIMEOUT_MS)
|
|
14
14
|
if(0!==e.exit)return 0
|
|
15
15
|
const t=[]
|
|
16
16
|
for(const r of e.stdout.split("\n").map(e=>e.trim()).filter(Boolean)){const[e,n="",o=""]=r.split("\t")
|
|
17
|
-
|
|
17
|
+
i(n,o)?await(0,d.docker)(["rm","-f","-v",e],d.DOCKER_OP_TIMEOUT_MS):t.push(e)}if(!t.length)return 0
|
|
18
18
|
const r=await(0,d.docker)(["inspect","--format","{{.HostConfig.Memory}}",...t],d.DOCKER_OP_TIMEOUT_MS)
|
|
19
|
-
return 0!==r.exit?0:r.stdout.split("\n").map(e=>Number(e.trim())||0).reduce((e,t)=>e+t,0)}async function c(e,t,s=exports.ROOM_WAIT_MS,
|
|
19
|
+
return 0!==r.exit?0:r.stdout.split("\n").map(e=>Number(e.trim())||0).reduce((e,t)=>e+t,0)}async function c(e,t,s=exports.ROOM_WAIT_MS,i=5e3,c=a,l=o){try{const o=r(e),a=await l(),u=Date.now()+s
|
|
20
20
|
for(function(){const e=(0,d.containerLabels)()
|
|
21
|
-
"check"===e["alchemy.purpose"]&&e["alchemy.request"]}();;){const e=n(
|
|
21
|
+
"check"===e["alchemy.purpose"]&&e["alchemy.request"]}();;){const e=n(a,await c(),o,t)
|
|
22
22
|
if(!e)return null
|
|
23
23
|
if(Date.now()>=u)return e
|
|
24
|
-
await new Promise(e=>setTimeout(e,
|
|
24
|
+
await new Promise(e=>setTimeout(e,i))}}catch{return null}}function l(e){const t=[]
|
|
25
25
|
for(const r of String(e||"").split(",").map(e=>e.trim()).filter(Boolean)){const e=r.match(/^(\d+)(?:-(\d+))?$/)
|
|
26
26
|
if(!e)continue
|
|
27
27
|
const n=Number(e[1]),o=void 0!==e[2]?Number(e[2]):n
|
|
@@ -33,30 +33,30 @@ const o=await c(e,t)
|
|
|
33
33
|
return o?{refused:o}:{value:await r()}})
|
|
34
34
|
return m=o.catch(()=>{}),o.catch(()=>{}).then(()=>{h--}),o},exports.pickCores=async function(e,t,r="standard"){try{const n=await(0,d.docker)(["info","--format","{{.NCPU}}"],d.DOCKER_OP_TIMEOUT_MS),o=Number(n.stdout.trim())
|
|
35
35
|
if(!(o>0))return{cpus:e??t}
|
|
36
|
-
const s=await(0,d.docker)(["ps","-a","-q","--filter","label=alchemy.project","--filter","status=running","--filter","status=created"],d.DOCKER_OP_TIMEOUT_MS),
|
|
36
|
+
const s=await(0,d.docker)(["ps","-a","-q","--filter","label=alchemy.project","--filter","status=running","--filter","status=created"],d.DOCKER_OP_TIMEOUT_MS),i=0===s.exit?s.stdout.split("\n").map(e=>e.trim()).filter(Boolean):[],a=i.length?(await(0,d.docker)(["inspect","--format","{{.HostConfig.CpusetCpus}}",...i],d.DOCKER_OP_TIMEOUT_MS)).stdout.split("\n").map(e=>e.trim()).filter(Boolean):[],c=new Set(a.flatMap(l).filter(e=>e<o)),p=e??function(e,t,r){return"light"===e?2:"heavy"===e?Math.max(2,Math.min(t-2,r-2)):function(e,t){const r=Math.max(2,Math.floor(e/2))
|
|
37
37
|
return Math.min(r,Math.max(2,Math.ceil(t/2)))}(t,r)}(r,o,o-c.size),f=Math.max(1,Math.ceil(p))
|
|
38
|
-
return f>=o?{cpus:p}:{cpus:p,cpuset:u(o,f,
|
|
38
|
+
return f>=o?{cpus:p}:{cpus:p,cpuset:u(o,f,a).join(",")}}catch{return{cpus:e??t}}}
|
|
39
39
|
const d=t(81618),p=e=>`${(e/1024**3).toFixed(1)} GB`,f=new Set(["experiment","rung1","deps","egress-proxy","service"])
|
|
40
40
|
exports.IDLE_GRACE_MS=3e5,exports.kz=6e4,exports.Lt=3e4,exports.ROOM_WAIT_MS=12e4
|
|
41
41
|
let m=Promise.resolve(),h=0
|
|
42
42
|
exports.FY=exports.ROOM_WAIT_MS+6*d.DOCKER_OP_TIMEOUT_MS,exports.TS=["light","standard","heavy"]},52429(e,exports,t){exports.ContainerRunner=void 0
|
|
43
|
-
const r=t(81618),n=t(83129),o=t(22604),s=t(11895),
|
|
43
|
+
const r=t(81618),n=t(83129),o=t(22604),s=t(11895),i=t(26166),a=t(2566),c=t(90695),l=t(61260),u=6e5
|
|
44
44
|
exports.ContainerRunner=class{constructor(e={}){this.image=e.image??"node:20-alpine",this.stepTimeoutMs=e.stepTimeoutMs??12e4,this.network=e.network??"none",this.resources=e.resources??{},this.memory=(0,s.memoryForBox)(this.resources.memory,this.resources.size)}async run(e){if(!e.worktreePath)return{steps:[],ok:!1,error:"worktreePath is required"}
|
|
45
|
-
const t=e.image??this.image,
|
|
45
|
+
const t=e.image??this.image,i={}
|
|
46
46
|
let d=Date.now()
|
|
47
47
|
const p=e=>{const t=Date.now()
|
|
48
|
-
|
|
48
|
+
i[e]=(i[e]??0)+(t-d),d=t},f=e.onStep??(()=>{})
|
|
49
49
|
f("getting its image",r.DOCKER_OP_TIMEOUT_MS+((0,n.localRecipeFor)(t)?n.BUILD_TIMEOUT_MS:r.PULL_TIMEOUT_MS))
|
|
50
50
|
const m=await(0,r.ensureImage)(t)
|
|
51
51
|
if(p("image"),m)return{steps:[],ok:!1,error:m}
|
|
52
52
|
if("background"===this.resources.priority){f("waiting for room to start its box",u+r.DOCKER_OP_TIMEOUT_MS)
|
|
53
53
|
const e=await(0,o.waitForRoom)(this.memory,"check of main",u)
|
|
54
|
-
if(p("room"),e)return{steps:[],ok:!1,error:e}}const h=await(0,o.withAdmission)(this.memory,"check",async()=>{const{cpus:n,cpuset:
|
|
55
|
-
let
|
|
56
|
-
if(0!==
|
|
57
|
-
let l=
|
|
58
|
-
if(p("create"),await(0,c.claimScratch)(l,t,"1000:1000")){if(await(0,r.docker)(["rm","-f","-v",l],r.DOCKER_OP_TIMEOUT_MS),
|
|
59
|
-
l=
|
|
54
|
+
if(p("room"),e)return{steps:[],ok:!1,error:e}}const h=await(0,o.withAdmission)(this.memory,"check",async()=>{const{cpus:n,cpuset:i}=await(0,o.pickCores)(this.resources.cpus,s.DEFAULT_CPUS,this.resources.size)
|
|
55
|
+
let a=await(0,r.docker)(this.createArgs(e,t,!0,i,n),r.DOCKER_OP_TIMEOUT_MS)
|
|
56
|
+
if(0!==a.exit)return{error:a.spawnError??`docker create failed: ${(a.stderr||String(a.exit)).trim()}`}
|
|
57
|
+
let l=a.stdout.trim()
|
|
58
|
+
if(p("create"),await(0,c.claimScratch)(l,t,"1000:1000")){if(await(0,r.docker)(["rm","-f","-v",l],r.DOCKER_OP_TIMEOUT_MS),a=await(0,r.docker)(this.createArgs(e,t,!1,i,n),r.DOCKER_OP_TIMEOUT_MS),0!==a.exit)return{error:a.spawnError??`docker create failed: ${(a.stderr||String(a.exit)).trim()}`}
|
|
59
|
+
l=a.stdout.trim()}return p("scratch"),{id:l}},f)
|
|
60
60
|
if("refused"in h)return{steps:[],ok:!1,error:h.refused}
|
|
61
61
|
if("error"in h.value)return{steps:[],ok:!1,error:h.value.error}
|
|
62
62
|
const w=h.value.id
|
|
@@ -65,65 +65,65 @@ const t=await(0,r.docker)(["start",w],r.DOCKER_OP_TIMEOUT_MS)
|
|
|
65
65
|
if(p("start"),0!==t.exit)return{steps:[],ok:!1,error:`docker start failed: ${(t.stderr||String(t.exit)).trim()}`}
|
|
66
66
|
const n=[]
|
|
67
67
|
let o=await(0,l.readOomKills)(w)??0
|
|
68
|
-
for(const t of e.steps){const s=Date.now(),
|
|
69
|
-
if(
|
|
70
|
-
continue}const c=Math.min(t.timeoutMs??this.stepTimeoutMs,
|
|
68
|
+
for(const t of e.steps){const s=Date.now(),i=void 0!==e.deadlineAt?e.deadlineAt-s:1/0
|
|
69
|
+
if(i<=0){n.push({run:t.run,exit:-1,stdout:"",stderr:"",ms:0,timedOut:!0})
|
|
70
|
+
continue}const c=Math.min(t.timeoutMs??this.stepTimeoutMs,i)
|
|
71
71
|
f(`running \`${t.run.replace(/\s+/g," ").slice(0,80)}\``,c+1e4)
|
|
72
|
-
const u=await(0,r.dockerKeepingEnds)(["exec","-e",`${
|
|
72
|
+
const u=await(0,r.dockerKeepingEnds)(["exec","-e",`${a.RUN_ENV_VAR}=${(0,a.withShellInit)(e.shellInit,t.run)}`,w,"/bin/sh","-c",a.RUN_FROM_ENV],c),d=Date.now()-s,p=await(0,l.readOomKills)(w),m=null!=p?Math.max(0,p-o):0
|
|
73
73
|
null!=p&&(o=p)
|
|
74
74
|
const h=m>0?`${u.stderr}${u.stderr&&!u.stderr.endsWith("\n")?"\n":""}${(0,l.oomNote)(m,this.memory)}\n`:u.stderr
|
|
75
|
-
if(n.push({run:t.run,exit:u.exit,stdout:u.stdout,stderr:h,ms:d,timedOut:u.timedOut,...m>0?{oomKills:m}:{}}),t.stopOnFail&&0!==u.exit)break}return p("commands"),{steps:n,ok:n.every(e=>0===e.exit),phaseMs:
|
|
76
|
-
f("removing its box",r.DOCKER_OP_TIMEOUT_MS),await(0,r.docker)(["rm","-f","-v",w],r.DOCKER_OP_TIMEOUT_MS),
|
|
77
|
-
return["create","--label","alchemy.sandbox=rung1",...(0,
|
|
75
|
+
if(n.push({run:t.run,exit:u.exit,stdout:u.stdout,stderr:h,ms:d,timedOut:u.timedOut,...m>0?{oomKills:m}:{}}),t.stopOnFail&&0!==u.exit)break}return p("commands"),{steps:n,ok:n.every(e=>0===e.exit),phaseMs:i}}finally{const e=Date.now()
|
|
76
|
+
f("removing its box",r.DOCKER_OP_TIMEOUT_MS),await(0,r.docker)(["rm","-f","-v",w],r.DOCKER_OP_TIMEOUT_MS),i.remove=Date.now()-e}}createArgs(e,t,r,n,o){const a=Object.entries(e.env??{}).flatMap(([e,t])=>["-e",`${e}=${t}`]),l=e.depsVolume?["-v",`${e.depsVolume}:/work/node_modules`]:[],u=(e.mounts??[]).flatMap(e=>["-v",`${e.volume}:${e.target}`]),d=(e.readOnlyBinds??[]).flatMap(e=>["-v",`${e.host}:${e.target}:ro`])
|
|
77
|
+
return["create","--label","alchemy.sandbox=rung1",...(0,i.hardenedCreateArgs)({network:this.network,user:"1000:1000",...r?{}:{extraTmpfs:[(0,c.scratchTmpfsArg)(512)]},shmSizeMb:this.resources.shmSizeMb,memory:this.memory,cpus:o??this.resources.cpus??s.DEFAULT_CPUS,cpuset:n,pidsLimit:this.resources.pidsLimit??512}),..."background"===this.resources.priority?["--cpu-shares",String(128)]:[],...r?c.SCRATCH_VOLUME_ARGS:[],...a,"-v",`${e.worktreePath}:/work:rw`,...l,...u,...d,"-w","/work",t,"tail","-f","/dev/null"]}}},81618(e,exports,t){function r(){return{"alchemy.owner":String(process.pid),...u.getStore()??{}}}function n(e){if("create"!==e[0]&&"run"!==e[0])return e
|
|
78
78
|
const t=new Set
|
|
79
79
|
e.forEach((r,n)=>{"--label"===e[n-1]&&t.add(r.split("=")[0])})
|
|
80
80
|
const n=Object.entries(r()).filter(([e])=>!t.has(e)).flatMap(([e,t])=>["--label",`${e}=${t.replace(/[\r\n]/g," ").slice(0,200)}`])
|
|
81
81
|
return n.length?[e[0],...n,...e.slice(1)]:e}function o(e,t){return new Promise(r=>{(0,s.execFile)("docker",n(e),{timeout:t,killSignal:"SIGKILL",maxBuffer:33554432,windowsHide:!0},(e,t,n)=>{if(!e)return void r({exit:0,stdout:t,stderr:n,timedOut:!1})
|
|
82
82
|
const o=e
|
|
83
83
|
if("ENOENT"===o.code)return void r({exit:-1,stdout:t??"",stderr:n??"",timedOut:!1,spawnError:"docker CLI not found on PATH"})
|
|
84
|
-
const s=!0===o.killed||"SIGKILL"===o.signal,
|
|
85
|
-
r({exit:
|
|
84
|
+
const s=!0===o.killed||"SIGKILL"===o.signal,i="number"==typeof o.code?o.code:-1
|
|
85
|
+
r({exit:i,stdout:t??"",stderr:n??"",timedOut:s})})})}exports.PULL_TIMEOUT_MS=exports.DOCKER_OP_TIMEOUT_MS=void 0,exports.containerLabels=r,exports.dockerKeepingEnds=function(e,t,r=524288){return new Promise(o=>{const i=new c.EndsKeeper(r),a=new c.EndsKeeper(r)
|
|
86
86
|
let u=!1,d=!1
|
|
87
87
|
const p=(0,s.spawn)("docker",n(e),{windowsHide:!0}),f=(0,l.awakeTimeout)(()=>{u=!0,p.kill("SIGKILL")},t)
|
|
88
|
-
p.stdout.setEncoding("utf8").on("data",e=>
|
|
88
|
+
p.stdout.setEncoding("utf8").on("data",e=>i.push(e)),p.stderr.setEncoding("utf8").on("data",e=>a.push(e))
|
|
89
89
|
const m=e=>{d||(d=!0,f.clear(),o(e))}
|
|
90
|
-
p.on("error",e=>m({exit:-1,stdout:
|
|
91
|
-
if(t)return(0,
|
|
90
|
+
p.on("error",e=>m({exit:-1,stdout:i.text(),stderr:a.text(),timedOut:!1,..."ENOENT"===e.code?{spawnError:"docker CLI not found on PATH"}:{spawnError:e.message}})),p.on("close",e=>m({exit:u?-1:e??-1,stdout:i.text(),stderr:a.text(),timedOut:u}))})},exports.docker=o,exports.ensureImage=async function(e){const t=(0,a.localRecipeFor)(e)
|
|
91
|
+
if(t)return(0,a.ensureLocalImage)(t)
|
|
92
92
|
const r=await o(["image","inspect",e],exports.DOCKER_OP_TIMEOUT_MS)
|
|
93
93
|
if(r.spawnError)return r.spawnError
|
|
94
94
|
if(0===r.exit)return
|
|
95
95
|
const n=await o(["pull",e],exports.PULL_TIMEOUT_MS)
|
|
96
96
|
return 0!==n.exit?`docker pull ${e} failed: ${(n.stderr||String(n.exit)).trim()}`:void 0}
|
|
97
|
-
const s=t(31421),
|
|
98
|
-
exports.DOCKER_OP_TIMEOUT_MS=6e4,exports.PULL_TIMEOUT_MS=3e5},26166(e,exports){exports.hardenedCreateArgs=function(e){return["--network",e.network,"--user",e.user,"--cap-drop","ALL",...(e.capAdds??[]).flatMap(e=>["--cap-add",e]),...Object.entries(e.sysctls??{}).flatMap(([e,t])=>["--sysctl",`${e}=${t}`]),"--security-opt","no-new-privileges","--read-only","--tmpfs","/tmp:rw,nosuid,nodev,exec,size=256m",...(e.extraTmpfs??[]).flatMap(e=>["--tmpfs",e]),"--ipc","none","--tmpfs",`/dev/shm:rw,nosuid,nodev,size=${e.shmSizeMb??64}m`,"--memory",e.memory,"--memory-swap",e.memory,"--cpus",String(e.cpus),...e.cpuset?["--cpuset-cpus",e.cpuset]:[],"--pids-limit",String(e.pidsLimit),"-e","HOME=/tmp","-e","XDG_CACHE_HOME=/tmp/.cache","-e","MYPY_CACHE_DIR=/tmp/.mypy_cache","-e","RUFF_CACHE_DIR=/tmp/.ruff_cache","-e","PYTHONPYCACHEPREFIX=/tmp/.pycache","-e","npm_config_cache=/tmp/.npm",..."none"===e.network?["-e","UV_OFFLINE=1","-e","PIP_NO_INDEX=1","-e","npm_config_offline=true"]:[]]}},83129(e,exports,t){function r(e){const t=
|
|
97
|
+
const s=t(31421),i=t(16698),a=t(83129),c=t(88196),l=t(4334),u=new i.AsyncLocalStorage
|
|
98
|
+
exports.DOCKER_OP_TIMEOUT_MS=6e4,exports.PULL_TIMEOUT_MS=3e5},26166(e,exports){exports.hardenedCreateArgs=function(e){return["--network",e.network,"--user",e.user,"--cap-drop","ALL",...(e.capAdds??[]).flatMap(e=>["--cap-add",e]),...Object.entries(e.sysctls??{}).flatMap(([e,t])=>["--sysctl",`${e}=${t}`]),"--security-opt","no-new-privileges","--read-only","--tmpfs","/tmp:rw,nosuid,nodev,exec,size=256m",...(e.extraTmpfs??[]).flatMap(e=>["--tmpfs",e]),"--ipc","none","--tmpfs",`/dev/shm:rw,nosuid,nodev,size=${e.shmSizeMb??64}m`,"--memory",e.memory,"--memory-swap",e.memory,"--cpus",String(e.cpus),...e.cpuset?["--cpuset-cpus",e.cpuset]:[],"--pids-limit",String(e.pidsLimit),"-e","HOME=/tmp","-e","XDG_CACHE_HOME=/tmp/.cache","-e","MYPY_CACHE_DIR=/tmp/.mypy_cache","-e","RUFF_CACHE_DIR=/tmp/.ruff_cache","-e","PYTHONPYCACHEPREFIX=/tmp/.pycache","-e","npm_config_cache=/tmp/.npm",..."none"===e.network?["-e","UV_OFFLINE=1","-e","PIP_NO_INDEX=1","-e","npm_config_offline=true"]:[]]}},83129(e,exports,t){function r(e){return m.find(t=>t.image===e)}function n(e){const t=h.get(e.image)
|
|
99
99
|
if(t)return t.work
|
|
100
|
-
const r=(async()=>{const t=await(0,
|
|
100
|
+
const r=(async()=>{const t=await(0,d.docker)(["image","inspect","--format",`{{ index .Config.Labels "${f}" }}`,e.image],d.DOCKER_OP_TIMEOUT_MS)
|
|
101
101
|
if(t.spawnError)return t.spawnError
|
|
102
102
|
if(0===t.exit&&t.stdout.trim()===e.recipeHash)return
|
|
103
|
-
const r=
|
|
104
|
-
try{
|
|
105
|
-
const t=await(0,
|
|
103
|
+
const r=c.mkdtempSync(u.join(l.tmpdir(),"alchemylab-image-"))
|
|
104
|
+
try{c.writeFileSync(u.join(r,"Dockerfile"),e.dockerfile)
|
|
105
|
+
const t=await(0,d.docker)(["build","--label",`${f}=${e.recipeHash}`,"-t",e.image,r],exports.BUILD_TIMEOUT_MS)
|
|
106
106
|
if(0!==t.exit){const r=(t.stderr||t.stdout||"").trim().split("\n").slice(-12).join("\n")
|
|
107
|
-
return`building ${e.image} failed${t.timedOut?" (timed out)":""}: ${r}`}return}finally{
|
|
108
|
-
return
|
|
107
|
+
return`building ${e.image} failed${t.timedOut?" (timed out)":""}: ${r}`}return}finally{c.rmSync(r,{recursive:!0,force:!0})}})()
|
|
108
|
+
return h.set(e.image,{work:r,since:Date.now()}),r.then(t=>{t?w.set(e.image,{error:t,at:Date.now()}):w.delete(e.image)},t=>{w.set(e.image,{error:t instanceof Error?t.message:String(t),at:Date.now()})}).finally(()=>h.delete(e.image)),r}var o,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
|
|
109
109
|
var o=Object.getOwnPropertyDescriptor(t,r)
|
|
110
|
-
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),
|
|
110
|
+
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[]
|
|
111
111
|
for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
|
|
112
|
-
return t},
|
|
112
|
+
return t},o(e)},function(e){if(e&&e.__esModule)return e
|
|
113
113
|
var t={}
|
|
114
|
-
if(null!=e)for(var r=
|
|
115
|
-
return
|
|
116
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.BUILD_TIMEOUT_MS=void 0,exports.localRecipeFor=function(e){
|
|
114
|
+
if(null!=e)for(var r=o(e),n=0;n<r.length;n++)"default"!==r[n]&&s(t,e,r[n])
|
|
115
|
+
return i(t,e),t})
|
|
116
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.BUILD_TIMEOUT_MS=void 0,exports.localRecipeFor=r,exports.registerLocalRecipe=function(e){r(e.image)||m.push(e)},exports.ensureLocalImage=n,exports.localImageState=async function(e){const t=h.get(e.image)
|
|
117
117
|
if(t)return{state:"building",since:t.since}
|
|
118
|
-
const r=await(0,
|
|
118
|
+
const r=await(0,d.docker)(["image","inspect","--format",`{{ index .Config.Labels "${f}" }}`,e.image],d.DOCKER_OP_TIMEOUT_MS)
|
|
119
119
|
if(r.spawnError)return{state:"no-docker",error:"Docker is not installed on this machine (no docker command)"}
|
|
120
120
|
if(0===r.exit&&r.stdout.trim()===e.recipeHash)return{state:"ready"}
|
|
121
121
|
if(/cannot connect to the docker daemon|is the docker daemon running|error during connect/i.test(r.stderr))return{state:"no-docker",error:"Docker is not running on this machine"}
|
|
122
|
-
const n=
|
|
123
|
-
return n?{state:"failed",...n}:{state:"missing"}},exports.startLocalImageBuild=function(e){return
|
|
124
|
-
const
|
|
122
|
+
const n=w.get(e.image)
|
|
123
|
+
return n?{state:"failed",...n}:{state:"missing"}},exports.startLocalImageBuild=function(e){return w.delete(e.image),n(e).catch(()=>{}),{since:h.get(e.image)?.since??Date.now()}}
|
|
124
|
+
const c=a(t(73024)),l=a(t(48161)),u=a(t(76760)),d=t(81618),p=t(44853),f="dev.alchemylab.recipe"
|
|
125
125
|
exports.BUILD_TIMEOUT_MS=15e5
|
|
126
|
-
const
|
|
126
|
+
const m=[{image:p.OFFICE_BOX_IMAGE,dockerfile:p.OFFICE_BOX_DOCKERFILE,recipeHash:p.OFFICE_BOX_RECIPE_HASH}],h=new Map,w=new Map},61260(e,exports,t){exports.H=void 0,exports.readOomKills=async function(e){const t=await(0,r.docker)(["exec",e,"cat","/sys/fs/cgroup/memory.events"],n)
|
|
127
127
|
if(0===t.exit){const e=/^oom_kill (\d+)/m.exec(t.stdout)
|
|
128
128
|
if(e)return Number(e[1])}const o=await(0,r.docker)(["exec",e,"cat","/sys/fs/cgroup/memory/memory.oom_control"],n)
|
|
129
129
|
if(0===o.exit){const e=/^oom_kill (\d+)/m.exec(o.stdout)
|
|
@@ -147,33 +147,33 @@ return["FROM python:3.12-slim","ENV DEBIAN_FRONTEND=noninteractive PIP_NO_CACHE_
|
|
|
147
147
|
return w[t].includes(r)}function n(e,t){const r=e=>`'${e.replace(/'/g,"'\\''")}'`,n=`/work/in/${e}`,o=e.replace(/\.[^.]+$/,"")
|
|
148
148
|
return"pdf"===t?`RENDER_OUT=/work/out render-pdf ${r(n)}`:"docx"===t&&/\.(md|markdown|html?)$/i.test(e)?`pandoc ${r(n)} -o ${r(`/work/out/${o}.docx`)}`:`soffice --headless --norestore -env:UserInstallation=file:///scratch/.render-profile --convert-to ${t} --outdir /work/out ${r(n)} >/dev/null`}async function o(e,t,r,o){const s=await u.promises.mkdtemp(p.join(d.tmpdir(),"alchemylab-render-"))
|
|
149
149
|
try{await u.promises.mkdir(p.join(s,"in")),await u.promises.mkdir(p.join(s,"out")),await u.promises.chmod(s,493),await u.promises.chmod(p.join(s,"in"),493),await u.promises.chmod(p.join(s,"out"),511),await u.promises.writeFile(p.join(s,"in",e),t.bytes,{mode:420})
|
|
150
|
-
const
|
|
151
|
-
if(!
|
|
152
|
-
return{ok:!1,error:(
|
|
150
|
+
const i=new f.ContainerRunner({image:h.OFFICE_BOX_IMAGE,stepTimeoutMs:18e4,resources:{memory:"3g",shmSizeMb:256}}),a=await i.run({worktreePath:s,image:h.OFFICE_BOX_IMAGE,env:{HOME:"/scratch"},steps:[{run:n(e,t.to)}]})
|
|
151
|
+
if(!a.ok){const e=a.steps[0]
|
|
152
|
+
return{ok:!1,error:(a.error??`${(e?.stderr||e?.stdout||"").trim().split("\n").slice(-4).join(" ")}`)||"rendering failed",unavailable:!!a.error&&/docker|daemon|not found on PATH|Cannot connect/i.test(a.error)}}const c=(await u.promises.readdir(p.join(s,"out"))).find(e=>e.toLowerCase().endsWith(`.${t.to}`))
|
|
153
153
|
if(!c)return{ok:!1,error:`no ${t.to.toUpperCase()} was produced`}
|
|
154
154
|
const l=await u.promises.readFile(p.join(s,"out",c))
|
|
155
|
-
return await u.promises.mkdir(o,{recursive:!0}),await u.promises.writeFile(r,l),{ok:!0,bytes:l,cached:!1}}finally{await u.promises.rm(s,{recursive:!0,force:!0})}}var s,
|
|
155
|
+
return await u.promises.mkdir(o,{recursive:!0}),await u.promises.writeFile(r,l),{ok:!0,bytes:l,cached:!1}}finally{await u.promises.rm(s,{recursive:!0,force:!0})}}var s,i=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
|
|
156
156
|
var o=Object.getOwnPropertyDescriptor(t,r)
|
|
157
|
-
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),
|
|
157
|
+
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||(s=function(e){return s=Object.getOwnPropertyNames||function(e){var t=[]
|
|
158
158
|
for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
|
|
159
159
|
return t},s(e)},function(e){if(e&&e.__esModule)return e
|
|
160
160
|
var t={}
|
|
161
|
-
if(null!=e)for(var r=s(e),n=0;n<r.length;n++)"default"!==r[n]&&
|
|
162
|
-
return
|
|
161
|
+
if(null!=e)for(var r=s(e),n=0;n<r.length;n++)"default"!==r[n]&&i(t,e,r[n])
|
|
162
|
+
return a(t,e),t})
|
|
163
163
|
Object.defineProperty(exports,"__esModule",{value:!0}),exports.RENDER_MIME=exports.MAX_RENDER_INPUT_BYTES=void 0,exports.canRender=r,exports.rendersInFlight=function(){return g.size},exports.renderDocument=async function(e,t){const n=(s=e.filename,p.basename(s).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^\.+/,"")||"document")
|
|
164
164
|
var s
|
|
165
165
|
if(!r(n,e.to))return{ok:!1,error:`${p.extname(n)||"this file"} cannot be turned into ${e.to.toUpperCase()}`}
|
|
166
166
|
if(e.bytes.length>exports.MAX_RENDER_INPUT_BYTES)return{ok:!1,error:`file is over ${exports.MAX_RENDER_INPUT_BYTES/1048576} MB`}
|
|
167
|
-
const
|
|
168
|
-
try{return{ok:!0,bytes:await u.promises.readFile(
|
|
167
|
+
const i=(0,l.createHash)("sha256").update(h.OFFICE_BOX_RECIPE_HASH).update("\0").update(e.to).update("\0").update(p.extname(n).toLowerCase()).update("\0").update(e.bytes).digest("hex"),a=p.join(t.cacheDir,`${i}.${e.to}`)
|
|
168
|
+
try{return{ok:!0,bytes:await u.promises.readFile(a),cached:!0}}catch{}const c=t.image??"wait"
|
|
169
169
|
if("wait"!==c){const e=(0,m.localRecipeFor)(h.OFFICE_BOX_IMAGE),t=await(0,m.localImageState)(e)
|
|
170
170
|
if("no-docker"===t.state)return{ok:!1,error:t.error,unavailable:!0}
|
|
171
171
|
if("building"===t.state)return{ok:!1,error:b,preparing:!0,since:t.since}
|
|
172
172
|
if("failed"===t.state&&Date.now()-t.at<12e4)return{ok:!1,error:`building the office renderer failed: ${t.error.split("\n").slice(-3).join(" ")}`}
|
|
173
173
|
if("ready"!==t.state){if("present-only"===c)return{ok:!1,error:"the office renderer is not built on this machine yet",unavailable:!0}
|
|
174
174
|
const{since:t}=(0,m.startLocalImageBuild)(e)
|
|
175
|
-
return{ok:!1,error:b,preparing:!0,since:t}}}let d=g.get(
|
|
176
|
-
if(d||(d={since:Date.now(),done:(t.run??o)(n,e,
|
|
175
|
+
return{ok:!1,error:b,preparing:!0,since:t}}}let d=g.get(i)
|
|
176
|
+
if(d||(d={since:Date.now(),done:(t.run??o)(n,e,a,t.cacheDir).catch(e=>({ok:!1,error:e instanceof Error?e.message:String(e)})).finally(()=>{g.delete(i)})},g.set(i,d)),!t.answerWithin||t.answerWithin<=0)return d.done
|
|
177
177
|
const{since:f,done:w}=d
|
|
178
178
|
let x
|
|
179
179
|
const _=new Promise(e=>{x=setTimeout(()=>e({ok:!1,rendering:!0,since:f,error:"the exact copy is still rendering"}),t.answerWithin)})
|
|
@@ -184,31 +184,31 @@ const w={pdf:["docx","doc","odt","rtf","xlsx","xlsm","xls","ods","csv","pptx","p
|
|
|
184
184
|
exports.RENDER_MIME={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}
|
|
185
185
|
const b="the office renderer is being built on this machine (first use only, usually a few minutes)",g=new Map},43701(e,exports){function t(e){return e<128?String.fromCharCode(e):"\u20ac\x81\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\x8d\u017d\x8f\x90\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\x9d\u017e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"[e-128]??""}exports.rtfToText=function(e){const o="string"==typeof e?e:Buffer.from(e).toString("latin1")
|
|
186
186
|
if(!/^\s*\{\s*\\rtf/i.test(o))throw new Error("not an RTF file (it does not start with {\\rtf)")
|
|
187
|
-
const s=[],
|
|
187
|
+
const s=[],i=[{skip:!1,skipChars:0}],a=()=>i[i.length-1],c=e=>{a().skip||s.push(e)}
|
|
188
188
|
for(let e=0;e<o.length;e++){const s=o[e]
|
|
189
|
-
if("{"===s){
|
|
190
|
-
continue}if("}"===s){
|
|
189
|
+
if("{"===s){i.push({...a()})
|
|
190
|
+
continue}if("}"===s){i.length>1&&i.pop()
|
|
191
191
|
continue}if("\r"===s||"\n"===s)continue
|
|
192
|
-
if("\\"!==s){if(
|
|
192
|
+
if("\\"!==s){if(a().skipChars>0){a().skipChars--
|
|
193
193
|
continue}c(s)
|
|
194
194
|
continue}const l=/^\\([a-zA-Z]+)(-?\d+)? ?/.exec(o.slice(e))
|
|
195
195
|
if(!l){const s=o[e+1]
|
|
196
196
|
if("*"===s){const t=/^\\\*\\([a-zA-Z]+)/.exec(o.slice(e))
|
|
197
|
-
t&&!r.has(t[1])||(
|
|
197
|
+
t&&!r.has(t[1])||(a().skip=!0),e+=1
|
|
198
198
|
continue}if("'"===s){const r=o.slice(e+2,e+4)
|
|
199
|
-
if(e+=3,
|
|
199
|
+
if(e+=3,a().skipChars>0){a().skipChars--
|
|
200
200
|
continue}c(t(parseInt(r,16)||0))
|
|
201
201
|
continue}if(void 0!==s&&void 0!==n[s]){c(n[s]),e+=1
|
|
202
202
|
continue}e+=1
|
|
203
203
|
continue}const[u,d,p]=l
|
|
204
204
|
e+=u.length-1
|
|
205
205
|
const f=void 0===p?void 0:Number(p)
|
|
206
|
-
if(r.has(d))
|
|
207
|
-
else{if("u"===d){const e=
|
|
208
|
-
|
|
209
|
-
continue}"uc"!==d?"cell"!==d&&"nestcell"!==d?"row"!==d&&"nestrow"!==d?void 0===n[d]||c(n[d]):c("\n"):c(" | "):
|
|
206
|
+
if(r.has(d))a().skip=!0
|
|
207
|
+
else{if("u"===d){const e=a().skipChars>0
|
|
208
|
+
a().skipChars=Math.max(0,i[i.length-1].ucSkip??1),e||void 0===f||c(String.fromCodePoint(f<0?f+65536:f))
|
|
209
|
+
continue}"uc"!==d?"cell"!==d&&"nestcell"!==d?"row"!==d&&"nestrow"!==d?void 0===n[d]||c(n[d]):c("\n"):c(" | "):a().ucSkip=f??1}}return s.join("").replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").split("\n").map(e=>{const t=e.replace(/\s+$/,"").replace(/^\s*\|\s*/,"").replace(/\s*\|\s*$/,"")
|
|
210
210
|
return e.includes(" | ")?`| ${t} |`:t}).join("\n").trim()}
|
|
211
|
-
const r=new Set(["fonttbl","colortbl","stylesheet","listtable","listoverridetable","revtbl","rsidtbl","generator","info","pict","object","themedata","colorschememapping","latentstyles","datastore","xmlnstbl","filetbl","upr","fldinst","nonshppict","shppict","panose"]),n={par:"\n",line:"\n",tab:"\t",sect:"\n\n",page:"\n\n",lquote:"\u2018",rquote:"\u2019",ldblquote:"\u201c",rdblquote:"\u201d",emdash:"\u2014",endash:"\u2013",bullet:"\u2022",emspace:" ",enspace:" ",qmspace:" ","~":"\xa0","-":"",_:"-","{":"{","}":"}","\\":"\\"}},36018(e,exports,t){async function r(e){return(await
|
|
211
|
+
const r=new Set(["fonttbl","colortbl","stylesheet","listtable","listoverridetable","revtbl","rsidtbl","generator","info","pict","object","themedata","colorschememapping","latentstyles","datastore","xmlnstbl","filetbl","upr","fldinst","nonshppict","shppict","panose"]),n={par:"\n",line:"\n",tab:"\t",sect:"\n\n",page:"\n\n",lquote:"\u2018",rquote:"\u2019",ldblquote:"\u201c",rdblquote:"\u201d",emdash:"\u2014",endash:"\u2013",bullet:"\u2022",emspace:" ",enspace:" ",qmspace:" ","~":"\xa0","-":"",_:"-","{":"{","}":"}","\\":"\\"}},36018(e,exports,t){async function r(e){return(await t.e(833).then(()=>t.t(58833,23))).default.loadAsync(e)}async function n(e,t){const r=e.file(t)
|
|
212
212
|
return r?r.async("string"):void 0}function o(e){return e.replace(/&(#x[0-9a-f]+|#\d+|amp|lt|gt|quot|apos);/gi,(e,t)=>{const r=t.toLowerCase()
|
|
213
213
|
if("amp"===r)return"&"
|
|
214
214
|
if("lt"===r)return"<"
|
|
@@ -217,10 +217,10 @@ if("quot"===r)return'"'
|
|
|
217
217
|
if("apos"===r)return"'"
|
|
218
218
|
const n=r.startsWith("#x")?parseInt(r.slice(2),16):parseInt(r.slice(1),10)
|
|
219
219
|
return Number.isFinite(n)?String.fromCodePoint(n):e})}function s(e,t){const r=new RegExp(`(?:^|\\s)${t.replace(":","\\:")}="([^"]*)"`).exec(e)
|
|
220
|
-
return r?o(r[1]):void 0}function
|
|
220
|
+
return r?o(r[1]):void 0}function i(e,t){const r=new Map
|
|
221
221
|
if(!e)return r
|
|
222
222
|
for(const n of e.matchAll(/<Relationship\b([^>]*)\/?>/g)){const e=s(n[1],"Id"),o=s(n[1],"Target")
|
|
223
|
-
e&&o&&r.set(e,o.startsWith("/")?o.slice(1):
|
|
223
|
+
e&&o&&r.set(e,o.startsWith("/")?o.slice(1):a(`${t}/${o}`))}return r}function a(e){const t=[]
|
|
224
224
|
for(const r of e.split("/"))r&&"."!==r&&(".."===r?t.pop():t.push(r))
|
|
225
225
|
return t.join("/")}function c(e){const t=e.slice(0,e.lastIndexOf("/"))
|
|
226
226
|
return{path:`${t}/_rels/${e.slice(e.lastIndexOf("/")+1)}.rels`,dir:t}}function l(e,t){const r=(e||t||"").replace(/\s+/g," ").trim().slice(0,200)
|
|
@@ -229,27 +229,27 @@ for(const[o,s]of t){if(!/charts\/chart[^/]*\.xml$/.test(s))continue
|
|
|
229
229
|
const t=await n(e,s)
|
|
230
230
|
t&&r.set(o,d(t))}return r}function d(e){const t=p(e),r=[...new Set([...t.matchAll(/<(\w+Chart)\b/g)].map(e=>C[e[1]]).filter(Boolean))]
|
|
231
231
|
"bar"===r[0]&&/<barDir val="col"/.test(t)&&(r[0]="column")
|
|
232
|
-
const n=t.split("<plotArea")[0],s=/<title>([\s\S]*?)<\/title>/.exec(n)?.[1],
|
|
232
|
+
const n=t.split("<plotArea")[0],s=/<title>([\s\S]*?)<\/title>/.exec(n)?.[1],i=s?[...s.matchAll(/<t>([\s\S]*?)<\/t>/g)].map(e=>o(e[1])).join("").trim():"",a=[...t.matchAll(/<ser>([\s\S]*?)<\/ser>/g)].map(e=>{const t=e[1],r=/<tx>([\s\S]*?)<\/tx>/.exec(t)?.[1]??"",n=o(/<v>([\s\S]*?)<\/v>/.exec(r)?.[1]??/<f>([\s\S]*?)<\/f>/.exec(r)?.[1]??"").trim(),s=e=>{if(!e)return""
|
|
233
233
|
const t=/<f>([\s\S]*?)<\/f>/.exec(e)?.[1],r=[...e.matchAll(/<v>([\s\S]*?)<\/v>/g)].map(e=>o(e[1]))
|
|
234
|
-
return t&&/!/.test(t)?o(t):r.length?`${r.slice(0,8).join(", ")}${r.length>8?`, ... (${r.length})`:""}`:""},
|
|
235
|
-
return`${n||"series"}${
|
|
236
|
-
return`[chart: ${r.join("/")||"chart"}${
|
|
237
|
-
let
|
|
234
|
+
return t&&/!/.test(t)?o(t):r.length?`${r.slice(0,8).join(", ")}${r.length>8?`, ... (${r.length})`:""}`:""},i=s(/<(?:val|yVal)>([\s\S]*?)<\/(?:val|yVal)>/.exec(t)?.[1]),a=s(/<(?:cat|xVal)>([\s\S]*?)<\/(?:cat|xVal)>/.exec(t)?.[1])
|
|
235
|
+
return`${n||"series"}${i?`: ${i}`:""}${a?` by ${a}`:""}`})
|
|
236
|
+
return`[chart: ${r.join("/")||"chart"}${i?` "${i}"`:""}${a.length?`; ${a.join("; ")}`:""}]`}function p(e){return e.replace(/<(\/?)[A-Za-z][\w.-]*:/g,"<$1")}function f(e,t=new Map){const r=[],n=[]
|
|
237
|
+
let i=null,a="",c=!1,u=!1,d=null,p=0
|
|
238
238
|
const f=/<(\/?)(w:p|w:tbl|w:tr|w:tc|w:t|w:tab|w:br|w:cr|w:pStyle|w:numPr|w:drawing|wp:docPr|c:chart|v:imagedata|mc:Fallback)\b([^>]*?)(\/?)>|([^<]+)/g
|
|
239
239
|
for(const m of e.matchAll(f)){const[,e,f,h,w,b]=m
|
|
240
240
|
if("mc:Fallback"===f){w||(p+=e?-1:1)
|
|
241
241
|
continue}if(p>0)continue
|
|
242
|
-
if(void 0!==b){u&&
|
|
242
|
+
if(void 0!==b){u&&i&&i.push(o(b))
|
|
243
243
|
continue}const g=n[n.length-1]
|
|
244
244
|
if(e)switch(f){case"w:drawing":{if(!d)break
|
|
245
245
|
const e=d.chart??l(d.descr,d.name)
|
|
246
|
-
d=null,
|
|
246
|
+
d=null,i?i.push(` ${e} `):r.push(e)
|
|
247
247
|
break}case"w:t":u=!1
|
|
248
248
|
break
|
|
249
|
-
case"w:p":{const e=(
|
|
250
|
-
if(
|
|
249
|
+
case"w:p":{const e=(i??[]).join("").trim()
|
|
250
|
+
if(i=null,g?.cell){e&&g.cell.push(e)
|
|
251
251
|
break}if(!e){r.length&&""!==r[r.length-1]&&r.push("")
|
|
252
|
-
break}const t=/^(?:heading|kop|\xfcberschrift|titre)\s*(\d)/i.exec(
|
|
252
|
+
break}const t=/^(?:heading|kop|\xfcberschrift|titre)\s*(\d)/i.exec(a)||(/^title$/i.test(a)?["","1"]:null)
|
|
253
253
|
r.push(t?`${"#".repeat(Math.min(6,Number(t[1])))} ${e}`:c?`- ${e}`:e)
|
|
254
254
|
break}case"w:tc":g?.cell&&g.row&&(g.row.push(g.cell.join(" ")),g.cell=null)
|
|
255
255
|
break
|
|
@@ -266,48 +266,48 @@ break
|
|
|
266
266
|
case"c:chart":d&&(d.chart=t.get(s(h,"r:id")??"")??"[chart]")
|
|
267
267
|
break
|
|
268
268
|
case"v:imagedata":{const e=l(s(h,"o:title"),void 0)
|
|
269
|
-
|
|
270
|
-
break}case"w:p":
|
|
269
|
+
i?i.push(e):r.push(e)
|
|
270
|
+
break}case"w:p":i=[],a="",c=!1
|
|
271
271
|
break
|
|
272
|
-
case"w:pStyle":
|
|
272
|
+
case"w:pStyle":a=s(h,"w:val")??""
|
|
273
273
|
break
|
|
274
274
|
case"w:numPr":c=!0
|
|
275
275
|
break
|
|
276
276
|
case"w:t":w||(u=!0)
|
|
277
277
|
break
|
|
278
|
-
case"w:tab":
|
|
278
|
+
case"w:tab":i?.push("\t")
|
|
279
279
|
break
|
|
280
|
-
case"w:br":case"w:cr":
|
|
280
|
+
case"w:br":case"w:cr":i?.push("\n")
|
|
281
281
|
break
|
|
282
282
|
case"w:tbl":n.push({rows:[],row:null,cell:null})
|
|
283
283
|
break
|
|
284
284
|
case"w:tr":g&&(g.row=[])
|
|
285
285
|
break
|
|
286
286
|
case"w:tc":g&&(g.cell=[])}}return r.join("\n").replace(/\n{3,}/g,"\n\n").trim()}async function m(e,t){const r=[],o=c(t)
|
|
287
|
-
for(const t of
|
|
287
|
+
for(const t of i(await n(e,o.path),o.dir).values()){if(!/drawings\/drawing[^/]*\.xml$/.test(t))continue
|
|
288
288
|
const o=await n(e,t)
|
|
289
289
|
if(!o)continue
|
|
290
|
-
const
|
|
291
|
-
for(const e of
|
|
292
|
-
if(n){r.push(`${(f.get(n)??"[chart]").replace(/\]$/,`${
|
|
293
|
-
continue}const
|
|
294
|
-
|
|
290
|
+
const a=p(o),d=c(t),f=await u(e,i(await n(e,d.path),d.dir))
|
|
291
|
+
for(const e of a.matchAll(/<(?:twoCellAnchor|oneCellAnchor|absoluteAnchor)\b[\s\S]*?<\/(?:twoCellAnchor|oneCellAnchor|absoluteAnchor)>/g)){const t=e[0],n=/<chart\b[^>]*r:id="([^"]+)"/.exec(t)?.[1],o=/<from>[\s\S]*?<col>(\d+)<\/col>[\s\S]*?<row>(\d+)<\/row>/.exec(t),i=o?` at ${w(Number(o[1]))}${Number(o[2])+1}`:""
|
|
292
|
+
if(n){r.push(`${(f.get(n)??"[chart]").replace(/\]$/,`${i}]`)}`)
|
|
293
|
+
continue}const a=/<pic>[\s\S]*?<cNvPr\b([^>]*)\/?>/.exec(t)
|
|
294
|
+
a&&r.push(l(s(a[1],"descr"),s(a[1],"name")).replace(/\]$/,`${i}]`))}}return r}function h(e){const t=/^[A-Z]+/i.exec(e)?.[0].toUpperCase()??"A"
|
|
295
295
|
let r=0
|
|
296
296
|
for(const e of t)r=26*r+(e.charCodeAt(0)-64)
|
|
297
297
|
return r-1}function w(e){let t=""
|
|
298
298
|
for(let r=e+1;r>0;r=Math.floor((r-1)/26))t=String.fromCharCode(65+(r-1)%26)+t
|
|
299
299
|
return t}function b(e,t){const r=[]
|
|
300
|
-
let n=0,
|
|
301
|
-
for(const
|
|
302
|
-
break}const e=
|
|
300
|
+
let n=0,i=!1
|
|
301
|
+
for(const a of e.matchAll(/<row\b([^>]*?)(?:\/>|>([\s\S]*?)<\/row>)/g)){if(r.length>=S){i=!0
|
|
302
|
+
break}const e=a[2]??"",c=[]
|
|
303
303
|
let l=0
|
|
304
304
|
for(const r of e.matchAll(/<c\b([^>]*?)(?:\/>|>([\s\S]*?)<\/c>)/g)){const e=s(r[1],"r"),n=e?h(e):l
|
|
305
305
|
l=n+1
|
|
306
|
-
const
|
|
306
|
+
const i=s(r[1],"t"),a=r[2]??"",u=/<f\b[^>]*>([\s\S]*?)<\/f>/.exec(a)?.[1]
|
|
307
307
|
let d=""
|
|
308
|
-
if("inlineStr"===
|
|
309
|
-
else{const e=/<v\b[^>]*>([\s\S]*?)<\/v>/.exec(
|
|
310
|
-
void 0!==e&&(d="s"===
|
|
308
|
+
if("inlineStr"===i)d=[...a.matchAll(/<t\b[^>]*>([\s\S]*?)<\/t>/g)].map(e=>o(e[1])).join("")
|
|
309
|
+
else{const e=/<v\b[^>]*>([\s\S]*?)<\/v>/.exec(a)?.[1]
|
|
310
|
+
void 0!==e&&(d="s"===i?t[Number(e)]??"":"b"===i?"1"===e?"TRUE":"FALSE":o(e))}u&&(d=`${d}${""===d?"":" "}(=${o(u)})`),""!==d&&(c[n]=d.replace(/[\t\r\n]+/g," "))}c.length&&(n=Math.max(n,c.length),r.push({n:Number(s(a[1],"r"))||r.length+1,cells:c}))}return{text:g(r,n),truncated:i}}function g(e,t){return e.length?[["row",...Array.from({length:t},(e,t)=>w(t))].join("\t"),...e.map(e=>[String(e.n),...Array.from({length:t},(t,r)=>e.cells[r]??"")].join("\t").replace(/\t+$/,""))].join("\n"):""}function x(e,t){const r=[],n=p(e)
|
|
311
311
|
for(const e of n.matchAll(/<pic\b[^>]*>[\s\S]*?<\/pic>|<graphicFrame\b[^>]*>[\s\S]*?<\/graphicFrame>/g)){const n=e[0]
|
|
312
312
|
if(/^<pic\b/.test(n)){const e=/<cNvPr\b([^>]*)\/?>/.exec(n)?.[1]??""
|
|
313
313
|
r.push(l(s(e,"descr"),s(e,"name")))
|
|
@@ -316,19 +316,19 @@ o&&r.push(t.get(o)??"[chart]")}return r}function _(e){const t=[]
|
|
|
316
316
|
for(const r of e.matchAll(/<a:p\b[^>]*>([\s\S]*?)<\/a:p>/g)){const e=[]
|
|
317
317
|
for(const t of r[1].matchAll(/<a:t\b[^>]*>([\s\S]*?)<\/a:t>|<a:br\b[^>]*\/>/g))e.push(void 0!==t[1]?o(t[1]):"\n")
|
|
318
318
|
const n=e.join("").trim()
|
|
319
|
-
n&&t.push(n)}return t}async function k(e,t,o){const s=await r(e),
|
|
320
|
-
if(!i
|
|
319
|
+
n&&t.push(n)}return t}async function k(e,t,o){const s=await r(e),i=(await n(s,"mimetype"))?.trim(),a=await n(s,"content.xml")
|
|
320
|
+
if(!a||i&&i!==t)throw new Error(`not an OpenDocument ${o} (${a?`its mimetype is ${i}`:"content.xml is missing"})`)
|
|
321
321
|
const c=new Map
|
|
322
322
|
for(const e of Object.keys(s.files)){const t=/^(.+)\/content\.xml$/.exec(e)?.[1]
|
|
323
323
|
if(!t)continue
|
|
324
324
|
const r=await n(s,e)
|
|
325
|
-
r&&/<chart:chart\b/.test(r)&&c.set(t,O(r))}return{xml:
|
|
326
|
-
if(
|
|
325
|
+
r&&/<chart:chart\b/.test(r)&&c.set(t,O(r))}return{xml:a.split(/<office:body\b/)[1]??a,objects:c}}function y(e,t){return e.object?t.get((e.href??"").replace(/^\.\//,""))??`[embedded object: ${(e.desc||e.title||e.name||"unnamed").trim()}]`:e.image?l(e.desc||e.title,e.name):null}function O(e){const t=/chart:class="chart:(\w+)"/.exec(e)?.[1]??"chart",r=[...(/<chart:title\b[^>]*>([\s\S]*?)<\/chart:title>/.exec(e)?.[1]??"").matchAll(/<text:p\b[^>]*>([\s\S]*?)<\/text:p>/g)].map(e=>o(e[1].replace(/<[^>]+>/g,""))).join(" ").trim(),n=[],i=/<table:table\b[^>]*table:name="local-table"[^>]*>([\s\S]*?)<\/table:table>/.exec(e)?.[1]
|
|
326
|
+
if(i)for(const e of i.matchAll(/<table:table-row\b[^>]*>([\s\S]*?)<\/table:table-row>/g)){const t=[]
|
|
327
327
|
for(const r of e[1].matchAll(/<table:(?:table-cell|covered-table-cell)\b([^>]*?)(?:\/>|>([\s\S]*?)<\/table:(?:table-cell|covered-table-cell)>)/g)){const e=o([...(r[2]??"").matchAll(/<text:p\b[^>]*>([\s\S]*?)<\/text:p>/g)].map(e=>e[1].replace(/<[^>]+>/g,"")).join(" ")).trim()||s(r[1],"office:value")||"",n=Math.min(Math.max(1,Number(s(r[1],"table:number-columns-repeated")??1)||1),256)
|
|
328
|
-
for(let r=0;r<n;r++)t.push(e)}n.push(t)}const
|
|
328
|
+
for(let r=0;r<n;r++)t.push(e)}n.push(t)}const a=e=>{const t=/^\$?([A-Z]+)\$?(\d+)$/.exec(e)
|
|
329
329
|
return t?{col:h(t[1]),row:Number(t[2])-1}:null},c=e=>{if(!e)return""
|
|
330
330
|
const t=e.split(":").map(e=>({table:e.slice(0,e.lastIndexOf(".")).replace(/^'(.*)'$/,"$1"),ref:e.slice(e.lastIndexOf(".")+1)}))
|
|
331
|
-
if("local-table"===t[0].table||""===t[0].table&&n.length){const e=
|
|
331
|
+
if("local-table"===t[0].table||""===t[0].table&&n.length){const e=a(t[0].ref),r=a(t[t.length-1].ref)??e
|
|
332
332
|
if(!e||!r)return""
|
|
333
333
|
const o=[]
|
|
334
334
|
for(let t=e.row;t<=r.row;t++)for(let s=e.col;s<=r.col;s++)o.push(n[t]?.[s]??"")
|
|
@@ -338,11 +338,11 @@ return`${c(s(e[1],"chart:label-cell-address"))||"series"}${t?`: ${t}`:""}${l?` b
|
|
|
338
338
|
return`[chart: ${R[t]??t}${r?` "${r}"`:""}${u.length?`; ${u.join("; ")}`:""}]`}function E(e,t,r){switch(e){case"text:tab":return r.push("\t"),!0
|
|
339
339
|
case"text:line-break":return r.push("\n"),!0
|
|
340
340
|
case"text:s":return r.push(" ".repeat(Math.min(100,Number(s(t,"text:c")??1)||1))),!0
|
|
341
|
-
default:return!1}}function v(e,t=new Map){const r=[],n=[],
|
|
342
|
-
let
|
|
341
|
+
default:return!1}}function v(e,t=new Map){const r=[],n=[],i=new I
|
|
342
|
+
let a=0,c=0,l=null,u=null
|
|
343
343
|
for(const d of e.matchAll(T)){const[,e,p,f,m,h]=d
|
|
344
344
|
if(void 0!==h){if(c)continue
|
|
345
|
-
u&&l?l[u]=(l[u]??"")+o(h):
|
|
345
|
+
u&&l?l[u]=(l[u]??"")+o(h):i.push(o(h))
|
|
346
346
|
continue}if(A.has(p)){m||(c+=e?-1:1)
|
|
347
347
|
continue}if(c)continue
|
|
348
348
|
const w=n[n.length-1]
|
|
@@ -350,13 +350,13 @@ if(e)switch(p){case"svg:title":case"svg:desc":u=null
|
|
|
350
350
|
break
|
|
351
351
|
case"draw:frame":{const e=l?y(l,t):null
|
|
352
352
|
if(l=null,!e)break
|
|
353
|
-
|
|
354
|
-
break}case"text:p":case"text:h":{const e=
|
|
353
|
+
i.current?i.pushSpaced(e):w?.cell?w.cell.push(e):r.push(e)
|
|
354
|
+
break}case"text:p":case"text:h":{const e=i.close()
|
|
355
355
|
if(!e)break
|
|
356
356
|
if(w?.cell){e.plain&&w.cell.push(e.plain)
|
|
357
357
|
break}if(!e.line){r.length&&""!==r[r.length-1]&&r.push("")
|
|
358
358
|
break}r.push(e.line)
|
|
359
|
-
break}case"text:list-item":
|
|
359
|
+
break}case"text:list-item":a=Math.max(0,a-1)
|
|
360
360
|
break
|
|
361
361
|
case"table:table-cell":case"table:covered-table-cell":w?.cell&&w.row&&(w.row.push(w.cell.join(" ")),w.cell=null)
|
|
362
362
|
break
|
|
@@ -366,10 +366,10 @@ case"table:table":{const e=n.pop()
|
|
|
366
366
|
if(!e)break
|
|
367
367
|
const t=e.rows.map(e=>`| ${e.map(e=>e.replace(/\|/g,"\\|")).join(" | ")} |`),o=n[n.length-1]
|
|
368
368
|
o?.cell?o.cell.push(t.join(" ")):r.push(...t,"")
|
|
369
|
-
break}}else{if(E(p,f,
|
|
370
|
-
switch(p){case"text:p":case"text:h":m?!w?.cell&&r.length&&""!==r[r.length-1]&&r.push(""):
|
|
369
|
+
break}}else{if(E(p,f,i))continue
|
|
370
|
+
switch(p){case"text:p":case"text:h":m?!w?.cell&&r.length&&""!==r[r.length-1]&&r.push(""):i.open("text:h"===p?Number(s(f,"text:outline-level")??1)||1:0,a>0)
|
|
371
371
|
break
|
|
372
|
-
case"text:list-item":m||
|
|
372
|
+
case"text:list-item":m||a++
|
|
373
373
|
break
|
|
374
374
|
case"table:table":m||n.push({rows:[],row:null,cell:null})
|
|
375
375
|
break
|
|
@@ -384,75 +384,75 @@ break
|
|
|
384
384
|
case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(f,"xlink:href"))
|
|
385
385
|
break
|
|
386
386
|
case"svg:title":case"svg:desc":!m&&l&&(u="svg:title"===p?"title":"desc")}}}return r.join("\n").replace(/\n{3,}/g,"\n\n").trim()}exports.bi=void 0,exports.documentKindFor=function(e){const t=(0,$.formatFor)(e)
|
|
387
|
-
return t?.text?t.kind:void 0},exports.extractDocumentText=async function e(
|
|
387
|
+
return t?.text?t.kind:void 0},exports.extractDocumentText=async function e(a,c,l={}){if(a.byteLength>exports.bi)throw new Error(`file is ${(a.byteLength/1048576).toFixed(1)} MB; text extraction stops at ${exports.bi/1048576} MB`)
|
|
388
388
|
const d=(0,$.formatOfKind)(c).textVia
|
|
389
389
|
if(d){if(!l.convert)throw new Error(`.${c} files are read by converting them in the office box, which is not reachable from here`)
|
|
390
|
-
const t=await e(await l.convert(
|
|
390
|
+
const t=await e(await l.convert(a,c,d),d)
|
|
391
391
|
return{...t,kind:c,note:`Converted from .${c} to .${d} in the office box first. ${t.note??""}`.trim()}}switch(c){case"pdf":return async function(e){const r=await Promise.resolve().then(()=>t.t(88891,23)),{getDocumentProxy:n,extractText:o}=r?.default??r,s=await n(new Uint8Array(e),{isEvalSupported:!1})
|
|
392
|
-
try{const{totalPages:e,text:t}=await o(s,{mergePages:!1}),r=Array.isArray(t)?t:[t],n=r.map((t,r)=>`--- page ${r+1} of ${e} ---\n${String(t).trim()}`).join("\n\n"),
|
|
393
|
-
return{kind:"pdf",text:n,units:e,note:
|
|
392
|
+
try{const{totalPages:e,text:t}=await o(s,{mergePages:!1}),r=Array.isArray(t)?t:[t],n=r.map((t,r)=>`--- page ${r+1} of ${e} ---\n${String(t).trim()}`).join("\n\n"),i=r.every(e=>!String(e).trim())
|
|
393
|
+
return{kind:"pdf",text:n,units:e,note:i?"No text layer (probably a scan). Use view_asset with this path to look at the pages.":"Text only. For tables, figures or layout, use view_asset with this path and the page numbers."}}finally{await(s.loadingTask?.destroy?.().catch?.(()=>{}))}}(a)
|
|
394
394
|
case"docx":return async function(e){const t=await r(e),o=await n(t,"word/document.xml")
|
|
395
395
|
if(!o)throw new Error("not a Word document (word/document.xml is missing)")
|
|
396
|
-
return{kind:"docx",text:f(o,await u(t,
|
|
397
|
-
case"xlsx":return async function(e){const t=await r(e),
|
|
398
|
-
if(!
|
|
399
|
-
const c=
|
|
396
|
+
return{kind:"docx",text:f(o,await u(t,i(await n(t,"word/_rels/document.xml.rels"),"word"))),note:"Text, headings, lists and tables; pictures show as [image: alt text] and charts as a one-line summary; formatting is dropped. To see the pages, view_asset this path."}}(a)
|
|
397
|
+
case"xlsx":return async function(e){const t=await r(e),a=await n(t,"xl/workbook.xml")
|
|
398
|
+
if(!a)throw new Error("not an Excel workbook (xl/workbook.xml is missing)")
|
|
399
|
+
const c=i(await n(t,"xl/_rels/workbook.xml.rels"),"xl"),l=function(e){if(!e)return[]
|
|
400
400
|
const t=[]
|
|
401
401
|
for(const r of e.matchAll(/<si\b[^>]*>([\s\S]*?)<\/si>/g)){const e=[]
|
|
402
402
|
for(const t of r[1].matchAll(/<t\b[^>]*>([\s\S]*?)<\/t>/g))e.push(o(t[1]))
|
|
403
403
|
t.push(e.join(""))}return t}(await n(t,"xl/sharedStrings.xml")),u=[]
|
|
404
404
|
let d=!1,p=0
|
|
405
|
-
for(const e of
|
|
406
|
-
if(p++,!
|
|
407
|
-
continue}const{text:f,truncated:h}=b(
|
|
405
|
+
for(const e of a.matchAll(/<sheet\b([^>]*)\/?>/g)){const r=s(e[1],"name")??`Sheet ${p+1}`,o=s(e[1],"r:id"),i=o?c.get(o):void 0,a=i?await n(t,i):void 0
|
|
406
|
+
if(p++,!a){u.push(`## Sheet: ${r}\n(empty)`)
|
|
407
|
+
continue}const{text:f,truncated:h}=b(a,l)
|
|
408
408
|
d=d||h
|
|
409
|
-
const w=await m(t,
|
|
410
|
-
u.push(`## Sheet: ${r}\n${f||"(empty)"}${w.length?`\n\n${w.join("\n")}`:""}`)}return{kind:"xlsx",text:u.join("\n\n"),units:p,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its last computed value followed by (=formula). Charts and pictures are listed under their sheet. Dates show as numbers."+(d?" Sheets over 5000 rows are cut off.":"")}}(
|
|
409
|
+
const w=await m(t,i)
|
|
410
|
+
u.push(`## Sheet: ${r}\n${f||"(empty)"}${w.length?`\n\n${w.join("\n")}`:""}`)}return{kind:"xlsx",text:u.join("\n\n"),units:p,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its last computed value followed by (=formula). Charts and pictures are listed under their sheet. Dates show as numbers."+(d?" Sheets over 5000 rows are cut off.":"")}}(a)
|
|
411
411
|
case"pptx":return async function(e){const t=await r(e),o=await n(t,"ppt/presentation.xml")
|
|
412
412
|
if(!o)throw new Error("not a PowerPoint deck (ppt/presentation.xml is missing)")
|
|
413
|
-
const i
|
|
413
|
+
const a=i(await n(t,"ppt/_rels/presentation.xml.rels"),"ppt")
|
|
414
414
|
let c=[...o.matchAll(/<p:sldId\b([^>]*)\/?>/g)].map(e=>{const t=s(e[1],"r:id")
|
|
415
|
-
return t?
|
|
415
|
+
return t?a.get(t):void 0}).filter(e=>!!e)
|
|
416
416
|
c.length||(c=Object.keys(t.files).filter(e=>/^ppt\/slides\/slide\d+\.xml$/.test(e)).sort((e,t)=>Number(/(\d+)\.xml$/.exec(e)[1])-Number(/(\d+)\.xml$/.exec(t)[1])))
|
|
417
417
|
const l=[]
|
|
418
|
-
for(let e=0;e<c.length;e++){const r=c[e],o=await n(t,r),s=o?_(o):[],
|
|
418
|
+
for(let e=0;e<c.length;e++){const r=c[e],o=await n(t,r),s=o?_(o):[],a=r.slice(0,r.lastIndexOf("/")),d=r.slice(r.lastIndexOf("/")+1),p=i(await n(t,`${a}/_rels/${d}.rels`),a)
|
|
419
419
|
o&&s.push(...x(o,await u(t,p)))
|
|
420
420
|
const f=[...p.values()].find(e=>/notesSlide\d*\.xml$/.test(e)),m=f?await n(t,f):void 0,h=m?_(m).filter(e=>!/^(\d+|<number>)$/.test(e)):[]
|
|
421
421
|
let w=`## Slide ${e+1}\n${s.join("\n")||"(no text)"}`
|
|
422
|
-
h.length&&(w+=`\n\nNotes:\n${h.join("\n")}`),l.push(w)}return{kind:"pptx",text:l.join("\n\n"),units:c.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(
|
|
422
|
+
h.length&&(w+=`\n\nNotes:\n${h.join("\n")}`),l.push(w)}return{kind:"pptx",text:l.join("\n\n"),units:c.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(a)
|
|
423
423
|
case"odt":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.text","text document")
|
|
424
|
-
return{kind:"odt",text:v(t,r),note:"Text, headings, lists and tables; pictures show as [image: alt text] and charts as a one-line summary; notes, comments and formatting are dropped. To see the pages, view_asset this path."}}(
|
|
425
|
-
case"ods":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.spreadsheet","spreadsheet"),{sheets:n,truncated:
|
|
426
|
-
let n=!1,
|
|
424
|
+
return{kind:"odt",text:v(t,r),note:"Text, headings, lists and tables; pictures show as [image: alt text] and charts as a one-line summary; notes, comments and formatting are dropped. To see the pages, view_asset this path."}}(a)
|
|
425
|
+
case"ods":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.spreadsheet","spreadsheet"),{sheets:n,truncated:i}=function(e,t=new Map){const r=[]
|
|
426
|
+
let n=!1,i=null,a=null,c=null,l=null,u=null,d=0,p=!1
|
|
427
427
|
for(const f of e.matchAll(T)){const[,e,m,h,w,b]=f
|
|
428
428
|
if(void 0!==b){if(d)continue
|
|
429
429
|
u&&l?l[u]=(l[u]??"")+o(b):c&&p&&c.parts.push(o(b))
|
|
430
430
|
continue}if(A.has(m)){w||(d+=e?-1:1)
|
|
431
431
|
continue}if(d)continue
|
|
432
|
-
const x=()=>{if(!c||!
|
|
432
|
+
const x=()=>{if(!c||!a)return
|
|
433
433
|
let e=c.parts.join("").trim()||c.value||""
|
|
434
434
|
if(c.formula&&(e=`${e}${e?" ":""}(=${t=c.formula,t.replace(/^[a-z]+:/i,"").replace(/^=/,"").replace(/\[([^\]]*)\]/g,(e,t)=>t.split(":").map(e=>{const t=e.lastIndexOf("."),r=e.slice(0,t).replace(/^\$/,"").replace(/^'(.*)'$/,"$1"),n=e.slice(t+1).replace(/\$/g,"")
|
|
435
|
-
return r?`${r}!${n}`:n}).join(":"))})`),e)for(let t=0;t<Math.min(c.repeat,256);t++)
|
|
435
|
+
return r?`${r}!${n}`:n}).join(":"))})`),e)for(let t=0;t<Math.min(c.repeat,256);t++)a.cells[a.col+t]=e.replace(/[\t\r\n]+/g," ")
|
|
436
436
|
var t
|
|
437
|
-
|
|
437
|
+
a.col+=c.repeat,c=null}
|
|
438
438
|
if(e)switch(m){case"svg:title":case"svg:desc":u=null
|
|
439
439
|
break
|
|
440
440
|
case"draw:frame":{const e=l?y(l,t):null
|
|
441
|
-
l=null,e&&
|
|
441
|
+
l=null,e&&i&&i.figures.push(e)
|
|
442
442
|
break}case"text:p":p=!1
|
|
443
443
|
break
|
|
444
444
|
case"table:table-cell":case"table:covered-table-cell":x()
|
|
445
445
|
break
|
|
446
|
-
case"table:table-row":if(!i
|
|
447
|
-
if(
|
|
448
|
-
break}
|
|
446
|
+
case"table:table-row":if(!a||!i)break
|
|
447
|
+
if(a.cells.some(e=>void 0!==e)){for(let e=0;e<Math.min(a.repeat,50);e++){if(i.rows.length>=S){n=!0
|
|
448
|
+
break}i.rows.push({n:i.rowIndex+e+1,cells:a.cells})}i.width=Math.max(i.width,a.cells.length)}i.rowIndex+=a.repeat,a=null
|
|
449
449
|
break
|
|
450
|
-
case"table:table":if(!
|
|
451
|
-
r.push({name:
|
|
450
|
+
case"table:table":if(!i)break
|
|
451
|
+
r.push({name:i.name,text:g(i.rows,i.width),figures:i.figures}),i=null}else switch(m){case"table:table":w||(i={name:s(h,"table:name")??`Sheet ${r.length+1}`,rows:[],width:0,figures:[],rowIndex:0})
|
|
452
452
|
break
|
|
453
453
|
case"table:table-row":{const e=Math.max(1,Number(s(h,"table:number-rows-repeated")??1)||1)
|
|
454
|
-
w?
|
|
455
|
-
break}case"table:table-cell":case"table:covered-table-cell":if(!
|
|
454
|
+
w?i&&(i.rowIndex+=e):a={cells:[],col:0,repeat:e}
|
|
455
|
+
break}case"table:table-cell":case"table:covered-table-cell":if(!a)break
|
|
456
456
|
c={parts:[],repeat:Math.max(1,Number(s(h,"table:number-columns-repeated")??1)||1),value:s(h,"office:value")??s(h,"office:date-value")??s(h,"office:time-value")??s(h,"office:boolean-value")??s(h,"office:string-value"),formula:s(h,"table:formula")},w&&x()
|
|
457
457
|
break
|
|
458
458
|
case"text:p":c&&!w&&(c.parts.length&&c.parts.push(" "),p=!0)
|
|
@@ -466,41 +466,41 @@ break
|
|
|
466
466
|
case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(h,"xlink:href"))
|
|
467
467
|
break
|
|
468
468
|
case"svg:title":case"svg:desc":!w&&l&&(u="svg:title"===m?"title":"desc")}}return{sheets:r,truncated:n}}(t,r)
|
|
469
|
-
return{kind:"ods",text:n.map(e=>`## Sheet: ${e.name}\n${e.text||"(empty)"}${e.figures.length?`\n\n${e.figures.join("\n")}`:""}`).join("\n\n"),units:n.length,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its value followed by (=formula). Charts and pictures are listed under their sheet."+(
|
|
469
|
+
return{kind:"ods",text:n.map(e=>`## Sheet: ${e.name}\n${e.text||"(empty)"}${e.figures.length?`\n\n${e.figures.join("\n")}`:""}`).join("\n\n"),units:n.length,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its value followed by (=formula). Charts and pictures are listed under their sheet."+(i?" Sheets over 5000 rows are cut off.":"")}}(a)
|
|
470
470
|
case"odp":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.presentation","presentation"),n=function(e,t=new Map){const r=[]
|
|
471
471
|
let n=null
|
|
472
|
-
const
|
|
473
|
-
let
|
|
472
|
+
const i=new I
|
|
473
|
+
let a=0,c=0,l=null,u=null
|
|
474
474
|
for(const d of e.matchAll(T)){const[,e,p,f,m,h]=d
|
|
475
475
|
if(void 0===h){if(A.has(p))m||(c+=e?-1:1)
|
|
476
476
|
else if(!c)if(e)switch(p){case"svg:title":case"svg:desc":u=null
|
|
477
477
|
break
|
|
478
|
-
case"text:p":case"text:h":{const e=
|
|
479
|
-
!e?.plain||!n||
|
|
478
|
+
case"text:p":case"text:h":{const e=i.close()
|
|
479
|
+
!e?.plain||!n||a&&/^<number>$/.test(e.plain)||(a?n.notes:n.lines).push(e.plain)
|
|
480
480
|
break}case"draw:frame":{const e=l?y(l,t):null
|
|
481
481
|
l=null,e&&n&&n.lines.push(e)
|
|
482
|
-
break}case"presentation:notes":
|
|
482
|
+
break}case"presentation:notes":a=Math.max(0,a-1)
|
|
483
483
|
break
|
|
484
484
|
case"draw:page":{if(!n)break
|
|
485
485
|
let e=`## Slide ${r.length+1}\n${n.lines.join("\n")||"(no text)"}`
|
|
486
486
|
n.notes.length&&(e+=`\n\nNotes:\n${n.notes.join("\n")}`),r.push(e),n=null
|
|
487
|
-
break}}else{if(E(p,f,
|
|
487
|
+
break}}else{if(E(p,f,i))continue
|
|
488
488
|
switch(p){case"draw:page":m||(n={lines:[],notes:[]})
|
|
489
489
|
break
|
|
490
|
-
case"presentation:notes":m||
|
|
490
|
+
case"presentation:notes":m||a++
|
|
491
491
|
break
|
|
492
|
-
case"text:p":case"text:h":m||
|
|
492
|
+
case"text:p":case"text:h":m||i.open(0,!1)
|
|
493
493
|
break
|
|
494
|
-
case"draw:frame":m||
|
|
494
|
+
case"draw:frame":m||a||(l={name:s(f,"draw:name")})
|
|
495
495
|
break
|
|
496
496
|
case"draw:image":l&&(l.image=!0)
|
|
497
497
|
break
|
|
498
498
|
case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(f,"xlink:href"))
|
|
499
499
|
break
|
|
500
500
|
case"svg:title":case"svg:desc":!m&&l&&(u="svg:title"===p?"title":"desc")}}}else{if(c)continue
|
|
501
|
-
u&&l?l[u]=(l[u]??"")+o(h):
|
|
502
|
-
return{kind:"odp",text:n.join("\n\n"),units:n.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(
|
|
503
|
-
case"rtf":return{kind:"rtf",text:(0,M.rtfToText)(
|
|
501
|
+
u&&l?l[u]=(l[u]??"")+o(h):i.push(o(h))}}return r}(t,r)
|
|
502
|
+
return{kind:"odp",text:n.join("\n\n"),units:n.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(a)
|
|
503
|
+
case"rtf":return{kind:"rtf",text:(0,M.rtfToText)(a),note:"Text, paragraphs and table rows; styling, pictures and layout are dropped. To see the pages, view_asset this path."}
|
|
504
504
|
default:throw new Error(`no text form for .${c}`)}}
|
|
505
505
|
const $=t(12661),M=t(43701)
|
|
506
506
|
exports.bi=52428800
|
|
@@ -515,18 +515,18 @@ return this.current?(t&&this.pushSpaced(t),null):{plain:t,line:t?e.heading?`${"#
|
|
|
515
515
|
if(!n.ok)throw new Error(n.error)
|
|
516
516
|
return n.bytes}async function r(e){const r=(0,u.documentKindFor)(e)
|
|
517
517
|
if(!r)return`(AlchemyLab: no text form for ${e.split(".").pop()} files)\n`
|
|
518
|
-
try{const n=await(0,u.extractDocumentText)(new Uint8Array(await(0,
|
|
518
|
+
try{const n=await(0,u.extractDocumentText)(new Uint8Array(await(0,a.readFile)(e)),r,{convert:t})
|
|
519
519
|
return n.text.endsWith("\n")?n.text:`${n.text}\n`}catch(e){return`(AlchemyLab: could not read this ${r.toUpperCase()} version: ${e instanceof Error?e.message:String(e)})\n`}}module=e.nmd(module)
|
|
520
520
|
var n,o=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
|
|
521
521
|
var o=Object.getOwnPropertyDescriptor(t,r)
|
|
522
|
-
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),
|
|
522
|
+
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[]
|
|
523
523
|
for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
|
|
524
524
|
return t},n(e)},function(e){if(e&&e.__esModule)return e
|
|
525
525
|
var t={}
|
|
526
|
-
if(null!=e)for(var r=n(e),
|
|
526
|
+
if(null!=e)for(var r=n(e),i=0;i<r.length;i++)"default"!==r[i]&&o(t,e,r[i])
|
|
527
527
|
return s(t,e),t})
|
|
528
528
|
Object.defineProperty(exports,"__esModule",{value:!0}),exports.textconv=r
|
|
529
|
-
const
|
|
529
|
+
const a=e(91943),c=i(e(70857)),l=i(e(16928)),u=e(36018),d=e(3517)
|
|
530
530
|
if(e.c[e.s]===module){const e=process.argv[2]
|
|
531
531
|
e||(process.stderr.write("usage: textconv <file>\n"),process.exit(2)),r(e).then(e=>process.stdout.write(e),()=>process.stdout.write("(AlchemyLab: text conversion failed)\n"))}},4334(e,exports,t){function r(e=Date.now()){const t=Number(process.hrtime.bigint()/1000000n)
|
|
532
532
|
if(!w)return m=e,h=t,function(e){if(x)try{const t=JSON.parse(d.readFileSync(x,"utf8"))
|
|
@@ -543,21 +543,21 @@ for(const r of b){const o=Math.max(r.from,e),s=Math.min(r.to,t)
|
|
|
543
543
|
s>o&&(n+=s-o)}return n}function o(e,t=Date.now()){return Math.max(0,t-e-n(e,t))}function s(e){const t=Math.max(1,Math.round(e/6e4))
|
|
544
544
|
if(t<60)return`${t} min`
|
|
545
545
|
const r=Math.floor(t/60),n=t%60
|
|
546
|
-
return n?`${r} h ${n} min`:`${r} h`}var a
|
|
546
|
+
return n?`${r} h ${n} min`:`${r} h`}var i,a=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
|
|
547
547
|
var o=Object.getOwnPropertyDescriptor(t,r)
|
|
548
|
-
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||(
|
|
548
|
+
o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),c=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||(i=function(e){return i=Object.getOwnPropertyNames||function(e){var t=[]
|
|
549
549
|
for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
|
|
550
|
-
return t},
|
|
550
|
+
return t},i(e)},function(e){if(e&&e.__esModule)return e
|
|
551
551
|
var t={}
|
|
552
|
-
if(null!=e)for(var r=
|
|
552
|
+
if(null!=e)for(var r=i(e),n=0;n<r.length;n++)"default"!==r[n]&&a(t,e,r[n])
|
|
553
553
|
return c(t,e),t})
|
|
554
554
|
Object.defineProperty(exports,"__esModule",{value:!0}),exports.systemSleepCheck=void 0,exports.sampleAwakeClock=r,exports.sleptBetween=n,exports.awakeSince=o,exports.sleepWords=s,exports.awakeTimeout=function(e,t){const s=Date.now()
|
|
555
555
|
r(s)
|
|
556
|
-
let
|
|
557
|
-
const
|
|
556
|
+
let i=null
|
|
557
|
+
const a=e=>{i=setTimeout(c,Math.max(0,e))},c=()=>{i=null
|
|
558
558
|
const r=t-o(s)
|
|
559
|
-
r>0?
|
|
560
|
-
return
|
|
559
|
+
r>0?a(r):e()}
|
|
560
|
+
return a(t),{clear:()=>{i&&clearTimeout(i),i=null},slept:()=>n(s)}},exports.sleptDuringRunNote=function(e){return`[AlchemyLab] The computer slept for ${s(e)} while this command ran. Nothing ran during that time (the box sleeps with the computer), and that time did not count toward the command's time limit.`},exports.sleptBetweenRunsNote=function(e){return`[AlchemyLab] The computer slept for ${s(e)} since the last command in this box ended. Nothing in the box ran during that time, background processes included; they went on when it woke.`},exports.resetAwakeClockForTests=function(e={}){w&&clearInterval(w),w=null,m=0,h=0,b.length=0,g=e.check??(()=>!0),x=e.store??null}
|
|
561
561
|
const u=t(35317),d=l(t(79896)),p=l(t(70857)),f=l(t(16928))
|
|
562
562
|
exports.systemSleepCheck=(e,t)=>{if("linux"===process.platform)return e.to-e.from-t>1e4
|
|
563
563
|
if("darwin"!==process.platform)return null
|
|
@@ -570,20 +570,20 @@ const b=[]
|
|
|
570
570
|
let g=exports.systemSleepCheck,x=f.join(p.homedir(),".alchemy_lab","sleep-gaps.json")
|
|
571
571
|
r()},88196(e,exports){exports.EndsKeeper=void 0,exports.EndsKeeper=class{constructor(e){this.half=e,this.head="",this.tail="",this.cut=0}push(e){if(this.head.length<this.half){const t=this.half-this.head.length
|
|
572
572
|
if(this.head+=e.slice(0,t),!(e=e.slice(t)))return}this.tail+=e,this.tail.length>this.half&&(this.cut+=this.tail.length-this.half,this.tail=this.tail.slice(-this.half))}text(){return this.cut>0?`${this.head}\n[AlchemyLab] ${this.cut} characters of output cut here; the start and the end are kept.\n${this.tail}`:this.head+this.tail}}},44600(e,exports,t){async function r(e,r={}){const{spawn:n}=await Promise.resolve().then(()=>t.t(35317,23))
|
|
573
|
-
return new Promise(t=>{const s="win32"===process.platform,
|
|
573
|
+
return new Promise(t=>{const s="win32"===process.platform,i=s?n(e,{cwd:r.cwd??process.cwd(),env:r.env,shell:"cmd.exe",stdio:["pipe","pipe","pipe"],detached:!1}):n("/bin/sh",["-c",exports.RUN_FROM_ENV],{cwd:r.cwd??process.cwd(),env:{...r.env??process.env,[exports.RUN_ENV_VAR]:e},stdio:["pipe","pipe","pipe"],detached:!0}),a=[],c=[]
|
|
574
574
|
let l=!1,u=!1
|
|
575
|
-
const d=e=>{if(
|
|
575
|
+
const d=e=>{if(i.pid)try{s?i.kill(e):process.kill(-i.pid,e)}catch{}}
|
|
576
576
|
let p,f
|
|
577
|
-
r.onKillReady?.((e="SIGTERM")=>{d(e),"SIGKILL"!==e&&setTimeout(()=>{u||d("SIGKILL")},2e3)}),r.timeoutMs&&r.timeoutMs>0&&(f=(0,o.awakeTimeout)(()=>{l=!0,d("SIGTERM"),p=setTimeout(()=>{u||d("SIGKILL")},2e3)},r.timeoutMs)),
|
|
578
|
-
const m=e=>{u||(u=!0,f?.clear(),p&&clearTimeout(p),t({stdout:Buffer.concat(
|
|
579
|
-
|
|
577
|
+
r.onKillReady?.((e="SIGTERM")=>{d(e),"SIGKILL"!==e&&setTimeout(()=>{u||d("SIGKILL")},2e3)}),r.timeoutMs&&r.timeoutMs>0&&(f=(0,o.awakeTimeout)(()=>{l=!0,d("SIGTERM"),p=setTimeout(()=>{u||d("SIGKILL")},2e3)},r.timeoutMs)),i.stdout?.on("data",e=>{a.push(e),r.onChunk?.("stdout",e)}),i.stderr?.on("data",e=>{c.push(e),r.onChunk?.("stderr",e)})
|
|
578
|
+
const m=e=>{u||(u=!0,f?.clear(),p&&clearTimeout(p),t({stdout:Buffer.concat(a).toString("utf-8"),stderr:Buffer.concat(c).toString("utf-8"),exitCode:e,timedOut:l}))}
|
|
579
|
+
i.on("close",e=>m(e??(l?124:1))),i.on("error",()=>m(1))})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.RUN_ENV_VAR=exports.RUN_FROM_ENV=exports.RUN_PARSE_FAILED_EXIT=void 0,exports.exitMeansCouldNotRun=function(e){return e===exports.RUN_PARSE_FAILED_EXIT||127===e},exports.execAsync=async function(e,t={}){return new Promise((r,o)=>{const[s,...i]=e.split(" "),a=(0,n.spawn)(s,i,{cwd:t.cwd||process.cwd(),stdio:["pipe","pipe","pipe"]})
|
|
580
580
|
let c="",l=""
|
|
581
|
-
|
|
581
|
+
a.stdout?.on("data",e=>{c+=e.toString()}),a.stderr?.on("data",e=>{l+=e.toString()}),a.on("close",e=>{r({stdout:c,stderr:l,exitCode:e||0})}),a.on("error",t=>{o(new Error(`Command failed: ${e}\nError: ${t.message}`))}),t.timeout&&setTimeout(()=>{a.kill(),o(new Error(`Command timed out: ${e}`))},t.timeout)})},exports.runShellCommand=r,exports.runTrackedShellCommand=async function(e,n,o){const{getActionServerBaseUrl:s}=await t.e(414).then(()=>t(79414)),i=s(),a=(new Date).toISOString(),c=n.cwd??process.cwd()
|
|
582
582
|
let l
|
|
583
|
-
fetch(`${
|
|
584
|
-
try{l=await r(e,n)}catch(e){throw fetch(`${
|
|
583
|
+
fetch(`${i}/api/commands/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,name:o.name,command:e,cwd:c,sessionId:o.sessionId,startedAt:a,logPath:o.logPath,timeoutMs:n.timeoutMs}),signal:AbortSignal.timeout(2e3)}).catch(()=>{})
|
|
584
|
+
try{l=await r(e,n)}catch(e){throw fetch(`${i}/api/commands/end`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,exitCode:1,timedOut:!1,finishedAt:(new Date).toISOString()}),signal:AbortSignal.timeout(2e3)}).catch(()=>{}),e}return fetch(`${i}/api/commands/end`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,exitCode:l.exitCode,timedOut:l.timedOut,finishedAt:(new Date).toISOString()}),signal:AbortSignal.timeout(2e3)}).catch(()=>{}),l}
|
|
585
585
|
const n=t(35317),o=t(4334)
|
|
586
|
-
exports.RUN_PARSE_FAILED_EXIT=125,exports.RUN_FROM_ENV=["c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD",`case "$c" in *ALCHEMY_PROJECT_ROOT*) if [ -z "\${ALCHEMY_PROJECT_ROOT:-}" ]; then echo "Not run: ALCHEMY_PROJECT_ROOT (the project's folder) is not set here." >&2; exit ${exports.RUN_PARSE_FAILED_EXIT}; fi;; esac`,`if command -v bash >/dev/null 2>&1; then ALCHEMY_RUN_CMD=$c; export ALCHEMY_RUN_CMD; exec bash -o pipefail -c 'c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD; bash -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"'`,`elif (set -o pipefail) 2>/dev/null; then set -o pipefail; sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"`,`else sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"; fi`].join("\n"),exports.RUN_ENV_VAR="ALCHEMY_RUN_CMD"},
|
|
586
|
+
exports.RUN_PARSE_FAILED_EXIT=125,exports.RUN_FROM_ENV=["c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD",`case "$c" in *ALCHEMY_PROJECT_ROOT*) if [ -z "\${ALCHEMY_PROJECT_ROOT:-}" ]; then echo "Not run: ALCHEMY_PROJECT_ROOT (the project's folder) is not set here." >&2; exit ${exports.RUN_PARSE_FAILED_EXIT}; fi;; esac`,`if command -v bash >/dev/null 2>&1; then ALCHEMY_RUN_CMD=$c; export ALCHEMY_RUN_CMD; exec bash -o pipefail -c 'c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD; bash -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"'`,`elif (set -o pipefail) 2>/dev/null; then set -o pipefail; sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"`,`else sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"; fi`].join("\n"),exports.RUN_ENV_VAR="ALCHEMY_RUN_CMD"},88891(module){module.exports=require("unpdf")},20181(module){module.exports=require("buffer")},35317(module){module.exports=require("child_process")},76982(module){module.exports=require("crypto")},24434(module){module.exports=require("events")},79896(module){module.exports=require("fs")},91943(module){module.exports=require("fs/promises")},34589(module){module.exports=require("node:assert")},16698(module){module.exports=require("node:async_hooks")},4573(module){module.exports=require("node:buffer")},31421(module){module.exports=require("node:child_process")},37540(module){module.exports=require("node:console")},77598(module){module.exports=require("node:crypto")},53053(module){module.exports=require("node:diagnostics_channel")},40610(module){module.exports=require("node:dns")},78474(module){module.exports=require("node:events")},73024(module){module.exports=require("node:fs")},51455(module){module.exports=require("node:fs/promises")},37067(module){module.exports=require("node:http")},32467(module){module.exports=require("node:http2")},77030(module){module.exports=require("node:net")},48161(module){module.exports=require("node:os")},76760(module){module.exports=require("node:path")},643(module){module.exports=require("node:perf_hooks")},41792(module){module.exports=require("node:querystring")},80099(module){module.exports=require("node:sqlite")},57075(module){module.exports=require("node:stream")},87997(module){module.exports=require("node:timers")},41692(module){module.exports=require("node:tls")},73136(module){module.exports=require("node:url")},57975(module){module.exports=require("node:util")},73429(module){module.exports=require("node:util/types")},75919(module){module.exports=require("node:worker_threads")},38522(module){module.exports=require("node:zlib")},70857(module){module.exports=require("os")},16928(module){module.exports=require("path")},2203(module){module.exports=require("stream")},39023(module){module.exports=require("util")}}
|
|
587
587
|
const r={}
|
|
588
588
|
e.m=t,e.c=r,(()=>{const t=Object.getPrototypeOf
|
|
589
589
|
let r
|
|
@@ -591,15 +591,15 @@ e.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n
|
|
|
591
591
|
if("object"==typeof n&&n){if(4&o&&n.__esModule)return n
|
|
592
592
|
if(16&o&&"function"==typeof n.then)return n}const s=Object.create(null)
|
|
593
593
|
e.r(s)
|
|
594
|
-
const
|
|
594
|
+
const i={}
|
|
595
595
|
r=r||[null,t({}),t([]),t(t)]
|
|
596
|
-
for(var
|
|
597
|
-
return
|
|
596
|
+
for(var a=2&o&&n;("object"==typeof a||"function"==typeof a)&&!~r.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach(e=>i[e]=()=>n[e])
|
|
597
|
+
return i.default=()=>n,e.d(s,i),s}})(),e.d=(exports,t)=>{for(var r in t)e.o(t,r)&&!e.o(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:t[r]})},e.f={},e.e=t=>{const r=[]
|
|
598
598
|
return e.f.require(t,r),Promise.all(r)},e.u=e=>e+".js",e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=exports=>{Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},e.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),(()=>{const t={830:1}
|
|
599
599
|
e.f.require=r=>{if(!t[r]){const n=require("./"+e.u(r))
|
|
600
600
|
t[r]||(r=>{const n=r.modules,o=r.ids,s=r.runtime
|
|
601
|
-
for(var
|
|
601
|
+
for(var i in n)e.o(n,i)&&(e.m[i]=n[i])
|
|
602
602
|
s&&s(e)
|
|
603
|
-
for(var
|
|
603
|
+
for(var a=0;a<o.length;a++)t[o[a]]=1})(n)}}})()
|
|
604
604
|
let n=e(e.s=95900)
|
|
605
605
|
module.exports=n})()
|