@kaptures/cli 0.8.0 → 0.9.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/index.js +100 -100
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as e}from"node:module";import{formatWithOptions as t,parseArgs as n}from"node:util";import{spawn as r}from"node:child_process";import{basename as i,dirname as a,extname as o,isAbsolute as s,join as c,matchesGlob as l,posix as u,relative as d,resolve as f,sep as p}from"node:path";import{access as m,appendFile as h,copyFile as g,cp as _,lstat as v,mkdir as y,mkdtemp as b,open as ee,readFile as x,readdir as S,realpath as te,rename as ne,rm as re,stat as C,writeFile as w}from"node:fs/promises";import{createHash as
|
|
3
|
-
`)}function Fe(e){return typeof e==`function`?e():e}function Ie(e=[],t={}){let r=new Set(t.boolean||[]),i=new Set(t.string||[]),a=t.alias||{},o=t.default||{},s=new Map,c=new Map;for(let[e,t]of Object.entries(a)){let n=t;for(let t of n)s.set(e,t),c.has(t)||c.set(t,[]),c.get(t).push(e),s.set(t,e),c.has(e)||c.set(e,[]),c.get(e).push(t)}let l={};function u(e){if(r.has(e))return`boolean`;let t=c.get(e)||[];for(let e of t)if(r.has(e))return`boolean`;return`string`}let d=new Set([...r,...i,...Object.keys(a),...Object.values(a).flat(),...Object.keys(o)]);for(let e of d)l[e]||(l[e]={type:u(e),default:o[e]});for(let[e,t]of s.entries())e.length===1&&l[t]&&!l[t].short&&(l[t].short=e);let f=[],p={};for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){f.push(...e.slice(t));break}if(n.startsWith(`--no-`)){let e=n.slice(5);p[e]=!0;continue}f.push(n)}let m;try{m=n({args:f,options:Object.keys(l).length>0?l:void 0,allowPositionals:!0,strict:!1})}catch{m={values:{},positionals:f}}let h={_:[]};h._=m.positionals;for(let[e,t]of Object.entries(m.values))h[e]=t;for(let[e]of Object.entries(p)){h[e]=!1;let t=s.get(e);t&&(h[t]=!1);let n=c.get(e);if(n)for(let e of n)h[e]=!1}for(let[e,t]of s.entries())h[e]!==void 0&&h[t]===void 0&&(h[t]=h[e]),h[t]!==void 0&&h[e]===void 0&&(h[e]=h[t]);return h}function Le(e,t){let n={boolean:[],string:[],alias:{},default:{}},r=Re(t);for(let e of r){if(e.type===`positional`)continue;e.type===`string`||e.type===`enum`?n.string.push(e.name):e.type===`boolean`&&n.boolean.push(e.name),e.default!==void 0&&(n.default[e.name]=e.default),e.alias&&(n.alias[e.name]=e.alias);let t=Oe(e.name),r=ke(e.name);if(t!==e.name||r!==e.name){let i=Ne(n.alias[e.name]||[]);t!==e.name&&!i.includes(t)&&i.push(t),r!==e.name&&!i.includes(r)&&i.push(r),i.length>0&&(n.alias[e.name]=i)}}let i=Ie(e,n),[...a]=i._,o=new Proxy(i,{get(e,t){return e[t]??e[Oe(t)]??e[ke(t)]}});for(let[,e]of r.entries())if(e.type===`positional`){let t=a.shift();if(t!==void 0)o[e.name]=t;else if(e.default===void 0&&e.required!==!1)throw new We(`Missing required positional argument: ${e.name.toUpperCase()}`,`EARG`);else o[e.name]=e.default}else if(e.type===`enum`){let t=o[e.name],n=e.options||[];if(t!==void 0&&n.length>0&&!n.includes(t))throw new We(`Invalid value for argument: ${Je(`--${e.name}`)} (${Je(t)}). Expected one of: ${n.map(e=>Je(e)).join(`, `)}.`,`EARG`)}else if(e.required&&o[e.name]===void 0)throw new We(`Missing required argument: --${e.name}`,`EARG`);return o}function Re(e){let t=[];for(let[n,r]of Object.entries(e||{}))t.push({...r,name:n,alias:Ne(r.alias)});return t}function
|
|
2
|
+
import{createRequire as e}from"node:module";import{formatWithOptions as t,parseArgs as n}from"node:util";import{spawn as r}from"node:child_process";import{basename as i,dirname as a,extname as o,isAbsolute as s,join as c,matchesGlob as l,posix as u,relative as d,resolve as f,sep as p}from"node:path";import{access as m,appendFile as h,copyFile as g,cp as _,lstat as v,mkdir as y,mkdtemp as b,open as ee,readFile as x,readdir as S,realpath as te,rename as ne,rm as re,stat as C,writeFile as w}from"node:fs/promises";import{createHash as T,randomUUID as ie}from"node:crypto";import{arch as ae,platform as oe,release as se,tmpdir as ce}from"node:os";import{createServer as le}from"node:http";import{constants as ue,createReadStream as de}from"node:fs";import{fileURLToPath as fe}from"node:url";import pe,{stdin as me,stdout as he}from"node:process";import*as ge from"node:tty";import{WriteStream as _e}from"node:tty";import ve from"node:readline";import{crc32 as ye,inflateRawSync as be}from"node:zlib";var xe=Object.defineProperty,E=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},D=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Se=(e,t)=>{let n={};for(var r in e)xe(n,r,{get:e[r],enumerable:!0});return t||xe(n,Symbol.toStringTag,{value:`Module`}),n},O=e(import.meta.url);function Ce(e=``){if(!Ae.test(e))return e!==e.toLowerCase()}function we(e,t){let n=t??je,r=[];if(!e||typeof e!=`string`)return r;let i=``,a,o;for(let t of e){let e=n.includes(t);if(e===!0){r.push(i),i=``,a=void 0;continue}let s=Ce(t);if(o===!1){if(a===!1&&s===!0){r.push(i),i=t,a=s;continue}if(a===!0&&s===!1&&i.length>1){let e=i.at(-1);r.push(i.slice(0,Math.max(0,i.length-1))),i=e+t,a=s;continue}}i+=t,a=s,o=e}return r.push(i),r}function Te(e){return e?e[0].toUpperCase()+e.slice(1):``}function Ee(e){return e?e[0].toLowerCase()+e.slice(1):``}function De(e,t){return e?(Array.isArray(e)?e:we(e)).map(e=>Te(t?.normalize?e.toLowerCase():e)).join(``):``}function Oe(e,t){return Ee(De(e||``,t))}function ke(e,t){return e?(Array.isArray(e)?e:we(e)).map(e=>e.toLowerCase()).join(t??`-`):``}var Ae,je,Me=E((()=>{Ae=/\d/,je=[`-`,`_`,`/`,`.`]}));function Ne(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Pe(e,t=``){let n=[];for(let t of e)for(let[e,r]of t.entries())n[e]=Math.max(n[e]||0,r.length);return e.map(e=>e.map((e,r)=>t+e[r===0?`padStart`:`padEnd`](n[r])).join(` `)).join(`
|
|
3
|
+
`)}function Fe(e){return typeof e==`function`?e():e}function Ie(e=[],t={}){let r=new Set(t.boolean||[]),i=new Set(t.string||[]),a=t.alias||{},o=t.default||{},s=new Map,c=new Map;for(let[e,t]of Object.entries(a)){let n=t;for(let t of n)s.set(e,t),c.has(t)||c.set(t,[]),c.get(t).push(e),s.set(t,e),c.has(e)||c.set(e,[]),c.get(e).push(t)}let l={};function u(e){if(r.has(e))return`boolean`;let t=c.get(e)||[];for(let e of t)if(r.has(e))return`boolean`;return`string`}let d=new Set([...r,...i,...Object.keys(a),...Object.values(a).flat(),...Object.keys(o)]);for(let e of d)l[e]||(l[e]={type:u(e),default:o[e]});for(let[e,t]of s.entries())e.length===1&&l[t]&&!l[t].short&&(l[t].short=e);let f=[],p={};for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`){f.push(...e.slice(t));break}if(n.startsWith(`--no-`)){let e=n.slice(5);p[e]=!0;continue}f.push(n)}let m;try{m=n({args:f,options:Object.keys(l).length>0?l:void 0,allowPositionals:!0,strict:!1})}catch{m={values:{},positionals:f}}let h={_:[]};h._=m.positionals;for(let[e,t]of Object.entries(m.values))h[e]=t;for(let[e]of Object.entries(p)){h[e]=!1;let t=s.get(e);t&&(h[t]=!1);let n=c.get(e);if(n)for(let e of n)h[e]=!1}for(let[e,t]of s.entries())h[e]!==void 0&&h[t]===void 0&&(h[t]=h[e]),h[t]!==void 0&&h[e]===void 0&&(h[e]=h[t]);return h}function Le(e,t){let n={boolean:[],string:[],alias:{},default:{}},r=Re(t);for(let e of r){if(e.type===`positional`)continue;e.type===`string`||e.type===`enum`?n.string.push(e.name):e.type===`boolean`&&n.boolean.push(e.name),e.default!==void 0&&(n.default[e.name]=e.default),e.alias&&(n.alias[e.name]=e.alias);let t=Oe(e.name),r=ke(e.name);if(t!==e.name||r!==e.name){let i=Ne(n.alias[e.name]||[]);t!==e.name&&!i.includes(t)&&i.push(t),r!==e.name&&!i.includes(r)&&i.push(r),i.length>0&&(n.alias[e.name]=i)}}let i=Ie(e,n),[...a]=i._,o=new Proxy(i,{get(e,t){return e[t]??e[Oe(t)]??e[ke(t)]}});for(let[,e]of r.entries())if(e.type===`positional`){let t=a.shift();if(t!==void 0)o[e.name]=t;else if(e.default===void 0&&e.required!==!1)throw new We(`Missing required positional argument: ${e.name.toUpperCase()}`,`EARG`);else o[e.name]=e.default}else if(e.type===`enum`){let t=o[e.name],n=e.options||[];if(t!==void 0&&n.length>0&&!n.includes(t))throw new We(`Invalid value for argument: ${Je(`--${e.name}`)} (${Je(t)}). Expected one of: ${n.map(e=>Je(e)).join(`, `)}.`,`EARG`)}else if(e.required&&o[e.name]===void 0)throw new We(`Missing required argument: --${e.name}`,`EARG`);return o}function Re(e){let t=[];for(let[n,r]of Object.entries(e||{}))t.push({...r,name:n,alias:Ne(r.alias)});return t}function k(e){return e}async function ze(e,t){let n=await Fe(e.args||{}),r=Le(t.rawArgs,n),i={rawArgs:t.rawArgs,args:r,data:t.data,cmd:e};typeof e.setup==`function`&&await e.setup(i);let a;try{let n=await Fe(e.subCommands);if(n&&Object.keys(n).length>0){let r=t.rawArgs.findIndex(e=>!e.startsWith(`-`)),i=t.rawArgs[r];if(i){if(!n[i])throw new We(`Unknown command ${Je(i)}`,`E_UNKNOWN_COMMAND`);let e=await Fe(n[i]);e&&await ze(e,{rawArgs:t.rawArgs.slice(r+1)})}else if(!e.run)throw new We(`No command specified.`,`E_NO_COMMAND`)}typeof e.run==`function`&&(a=await e.run(i))}finally{typeof e.cleanup==`function`&&await e.cleanup(i)}return{result:a}}async function Be(e,t,n){let r=await Fe(e.subCommands);if(r&&Object.keys(r).length>0){let n=t.findIndex(e=>!e.startsWith(`-`)),i=t[n],a=await Fe(r[i]);if(a)return Be(a,t.slice(n+1),e)}return[e,n]}async function Ve(e,t){try{console.log(await He(e,t)+`
|
|
4
4
|
`)}catch(e){console.error(e)}}async function He(e,t){let n=await Fe(e.meta||{}),r=Re(await Fe(e.args||{})),i=await Fe(t?.meta||{}),a=`${i.name?`${i.name} `:``}`+(n.name||process.argv[1]),o=[],s=[],c=[],l=[];for(let e of r)if(e.type===`positional`){let t=e.name.toUpperCase(),n=e.required!==!1&&e.default===void 0,r=e.default?`="${e.default}"`:``;s.push([Je(t+r),e.description||``,e.valueHint?`<${e.valueHint}>`:``]),l.push(n?`<${t}>`:`[${t}]`)}else{let t=e.required===!0&&e.default===void 0,n=[...(e.alias||[]).map(e=>`-${e}`),`--${e.name}`].join(`, `)+(e.type===`string`&&(e.valueHint||e.default)?`=${e.valueHint?`<${e.valueHint}>`:`"${e.default||``}"`}`:``)+(e.type===`enum`&&e.options?`=<${e.options.join(`|`)}>`:``);if(o.push([Je(n+(t?` (required)`:``)),e.description||``]),e.type===`boolean`&&(e.default===!0||e.negativeDescription)&&!Ze.test(e.name)){let n=[...(e.alias||[]).map(e=>`--no-${e}`),`--no-${e.name}`].join(`, `);o.push([Je(n+(t?` (required)`:``)),e.negativeDescription||``])}t&&l.push(n)}if(e.subCommands){let t=[],n=await Fe(e.subCommands);for(let[e,r]of Object.entries(n)){let n=await Fe((await Fe(r))?.meta);n?.hidden||(c.push([Je(e),n?.description||``]),t.push(e))}l.push(t.join(`|`))}let u=[],d=n.version||i.version;u.push(Ye(`${n.description} (${a+(d?` v${d}`:``)})`),``);let f=o.length>0||s.length>0;return u.push(`${Xe(qe(`USAGE`))} ${Je(`${a}${f?` [OPTIONS]`:``} ${l.join(` `)}`)}`,``),s.length>0&&(u.push(Xe(qe(`ARGUMENTS`)),``),u.push(Pe(s,` `)),u.push(``)),o.length>0&&(u.push(Xe(qe(`OPTIONS`)),``),u.push(Pe(o,` `)),u.push(``)),c.length>0&&(u.push(Xe(qe(`COMMANDS`)),``),u.push(Pe(c,` `)),u.push(``,`Use ${Je(`${a} <command> --help`)} for more information about a command.`)),u.filter(e=>typeof e==`string`).join(`
|
|
5
5
|
`)}async function Ue(e,t={}){let n=t.rawArgs||process.argv.slice(2),r=t.showUsage||Ve;try{if(n.includes(`--help`)||n.includes(`-h`))await r(...await Be(e,n)),process.exit(0);else if(n.length===1&&n[0]===`--version`){let t=typeof e.meta==`function`?await e.meta():await e.meta;if(!t?.version)throw new We(`No version specified`,`E_NO_VERSION`);console.log(t.version)}else await ze(e,{rawArgs:n})}catch(t){t instanceof We?(await r(...await Be(e,n)),console.error(t.message)):console.error(t,`
|
|
6
|
-
`),process.exit(1)}}var We,Ge,Ke,qe,Je,Ye,Xe,Ze,
|
|
6
|
+
`),process.exit(1)}}var We,Ge,Ke,qe,Je,Ye,Xe,Ze,A=E((()=>{Me(),We=class extends Error{code;constructor(e,t){super(e),this.name=`CLIError`,this.code=t}},Ge=(()=>{let e=globalThis.process?.env??{};return e.NO_COLOR===`1`||e.TERM===`dumb`||e.TEST||e.CI})(),Ke=(e,t=39)=>n=>Ge?n:`\u001B[${e}m${n}\u001B[${t}m`,qe=Ke(1,22),Je=Ke(36),Ye=Ke(90),Xe=Ke(4,24),Ze=/^no[-A-Z]/}));A();var Qe=`0.9.0`;const $e=e(import.meta.url);async function et(e=!1){let t=$e.resolve(`agent-browser/package.json`),n=[f(a(t),`bin`,`agent-browser.js`),`install`];e&&n.push(`--with-deps`);let i=await new Promise((e,t)=>{let i=r(process.execPath,n,{stdio:`inherit`});i.once(`error`,t),i.once(`exit`,(n,r)=>{r?t(Error(`agent-browser install stopped by ${r}`)):e(n??1)})});if(i!==0)throw Error(`agent-browser install exited with code ${i}`)}const tt=k({meta:{name:`browser`,description:`Manage the Kapture browser runtime`},subCommands:{install:k({meta:{name:`install`,description:`Install the Chrome runtime used by agent-browser`},args:{"with-deps":{type:`boolean`,default:!1,description:`Also install Linux system dependencies`}},async run({args:e}){await et(e[`with-deps`])}})}}),nt=[`npm`,`yarn`,`pnpm`,`bun`],rt={node:`actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38`,bun:`oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6`,checkout:`actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803`,upload:`actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f`,download:`actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53`},j=e=>`\${{ ${e} }}`,it=JSON.stringify,at=(e,t=10)=>e.split(`
|
|
7
7
|
`).map(e=>`${` `.repeat(t)}${e}`).join(`
|
|
8
8
|
`);function ot(e){let t=` - uses: ${rt.node}\n with: { node-version: "24" }\n`;return e===`bun`?`${t} - uses: ${rt.bun}\n`:e===`yarn`||e===`pnpm`?`${t} - run: corepack enable\n`:t}function st(e,t){if(!/^\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?$/.test(t))throw Error(`CLI version must be exact SemVer`);let n=`@kaptures/cli@${t}`;switch(e){case`npm`:return`npx --yes ${n}`;case`yarn`:return`yarn dlx --package ${n} kapture`;case`pnpm`:return`pnpm dlx ${n}`;case`bun`:return`bunx ${n}`}}function ct(e){let t=e.packageManager;if(!nt.includes(t))throw Error(`Unsupported package manager`);let n=st(`npm`,e.cliVersion),r=ot(`npm`),i=ot(t),a=e.baseBranch??`main`,o=e.storybookDirectory??`storybook-static`,s=e.adapterPackageJson;if(e.allowInitialAdoption&&!s)throw Error(`Initial adoption requires adapterPackageJson`);let c=e.allowInitialAdoption?` --allow-initial-adoption --adapter-package-json ${s}`:``;for(let e of[o,...s?[s]:[]])if(!/^[A-Za-z0-9._/-]+$/.test(e)||e.split(`/`).some(e=>!e||e===`.`||e===`..`))throw Error(`Expected safe project-relative paths`);if(!a||[...a].some(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127))throw Error(`Expected a branch name`);let l=e.installCommand??{npm:`npm ci`,yarn:`case "$(yarn --version)" in
|
|
9
9
|
1.*) yarn install --frozen-lockfile ;;
|
|
10
10
|
*) yarn install --immutable ;;
|
|
11
|
-
esac`,pnpm:`pnpm install --frozen-lockfile`,bun:`bun install --frozen-lockfile`}[t],u=e.buildCommand??`${t} run build-storybook ${t===`npm`?`-- `:``}--output-dir ${o}`,d=
|
|
11
|
+
esac`,pnpm:`pnpm install --frozen-lockfile`,bun:`bun install --frozen-lockfile`}[t],u=e.buildCommand??`${t} run build-storybook ${t===`npm`?`-- `:``}--output-dir ${o}`,d=j(`runner.temp`),f=j(`needs.context.outputs.artifact-suffix`),p=[`integration-mode`,`artifact-suffix`,`base-repository`,`base-sha`,`head-repository`,`head-sha`].map(e=>` ${e}: ${j(`steps.context.outputs.${e}`)}`).join(`
|
|
12
12
|
`),m=t=>` build-${t}:
|
|
13
13
|
needs: context
|
|
14
14
|
if: needs.context.outputs.integration-mode == 'compare'${t===`head`&&e.allowInitialAdoption?` || needs.context.outputs.integration-mode == 'initial-adoption'`:``}
|
|
15
15
|
runs-on: ubuntu-24.04
|
|
16
16
|
timeout-minutes: 30
|
|
17
17
|
outputs:
|
|
18
|
-
artifact-id: ${
|
|
19
|
-
artifact-digest: ${
|
|
18
|
+
artifact-id: ${j(`steps.artifact.outputs.artifact-id`)}
|
|
19
|
+
artifact-digest: ${j(`steps.artifact.outputs.artifact-digest`)}
|
|
20
20
|
steps:
|
|
21
21
|
- uses: ${rt.checkout}
|
|
22
22
|
with:
|
|
23
|
-
repository: ${
|
|
24
|
-
ref: ${
|
|
23
|
+
repository: ${j(`needs.context.outputs.${t}-repository`)}
|
|
24
|
+
ref: ${j(`needs.context.outputs.${t}-sha`)}
|
|
25
25
|
persist-credentials: false
|
|
26
26
|
${i} - name: Install project dependencies
|
|
27
27
|
run: |
|
|
@@ -50,7 +50,7 @@ on:
|
|
|
50
50
|
types: [opened, synchronize, reopened]
|
|
51
51
|
permissions: { contents: read, pull-requests: read }
|
|
52
52
|
concurrency:
|
|
53
|
-
group: kapture-capture-${
|
|
53
|
+
group: kapture-capture-${j(`github.event.pull_request.number`)}
|
|
54
54
|
cancel-in-progress: true
|
|
55
55
|
jobs:
|
|
56
56
|
context:
|
|
@@ -61,12 +61,12 @@ jobs:
|
|
|
61
61
|
npm_config_ignore_scripts: "true"
|
|
62
62
|
outputs:
|
|
63
63
|
${p}
|
|
64
|
-
context-artifact-id: ${
|
|
65
|
-
context-artifact-digest: ${
|
|
64
|
+
context-artifact-id: ${j(`steps.artifact.outputs.artifact-id`)}
|
|
65
|
+
context-artifact-digest: ${j(`steps.artifact.outputs.artifact-digest`)}
|
|
66
66
|
steps:
|
|
67
67
|
${r} - id: context
|
|
68
68
|
env:
|
|
69
|
-
GITHUB_TOKEN: ${
|
|
69
|
+
GITHUB_TOKEN: ${j(`github.token`)}
|
|
70
70
|
KAPTURE_BASE_BRANCH: ${it(a)}
|
|
71
71
|
run: >-
|
|
72
72
|
${n} github context --base-branch "$KAPTURE_BASE_BRANCH"${e.allowInitialAdoption?c:s?` --adapter-package-json ${s}`:``}
|
|
@@ -76,7 +76,7 @@ ${r} - id: context
|
|
|
76
76
|
id: artifact
|
|
77
77
|
if: steps.context.outputs.integration-mode == 'compare'
|
|
78
78
|
with:
|
|
79
|
-
name: kapture-context-${
|
|
79
|
+
name: kapture-context-${j(`steps.context.outputs.artifact-suffix`)}
|
|
80
80
|
path: ${d}/kapture-context
|
|
81
81
|
include-hidden-files: true
|
|
82
82
|
if-no-files-found: error
|
|
@@ -92,38 +92,38 @@ ${m(`base`)}${m(`head`)} capture:
|
|
|
92
92
|
steps:
|
|
93
93
|
${r} - uses: ${rt.download}
|
|
94
94
|
with:
|
|
95
|
-
artifact-ids: ${
|
|
95
|
+
artifact-ids: ${j(`needs.context.outputs.context-artifact-id`)}
|
|
96
96
|
path: ${d}/kapture-context
|
|
97
97
|
- uses: ${rt.download}
|
|
98
98
|
with:
|
|
99
|
-
artifact-ids: ${
|
|
99
|
+
artifact-ids: ${j(`needs.build-base.outputs.artifact-id`)}
|
|
100
100
|
path: ${d}/kapture-storybook/base
|
|
101
101
|
- uses: ${rt.download}
|
|
102
102
|
with:
|
|
103
|
-
artifact-ids: ${
|
|
103
|
+
artifact-ids: ${j(`needs.build-head.outputs.artifact-id`)}
|
|
104
104
|
path: ${d}/kapture-storybook/head
|
|
105
105
|
- id: capture
|
|
106
106
|
env:
|
|
107
107
|
KAPTURE_ARTIFACT_SUFFIX: ${f}
|
|
108
|
-
KAPTURE_CONTEXT_ARTIFACT_ID: ${
|
|
109
|
-
KAPTURE_CONTEXT_ARTIFACT_DIGEST: ${
|
|
110
|
-
KAPTURE_BASE_ARTIFACT_ID: ${
|
|
111
|
-
KAPTURE_BASE_ARTIFACT_DIGEST: ${
|
|
112
|
-
KAPTURE_HEAD_ARTIFACT_ID: ${
|
|
113
|
-
KAPTURE_HEAD_ARTIFACT_DIGEST: ${
|
|
108
|
+
KAPTURE_CONTEXT_ARTIFACT_ID: ${j(`needs.context.outputs.context-artifact-id`)}
|
|
109
|
+
KAPTURE_CONTEXT_ARTIFACT_DIGEST: ${j(`needs.context.outputs.context-artifact-digest`)}
|
|
110
|
+
KAPTURE_BASE_ARTIFACT_ID: ${j(`needs.build-base.outputs.artifact-id`)}
|
|
111
|
+
KAPTURE_BASE_ARTIFACT_DIGEST: ${j(`needs.build-base.outputs.artifact-digest`)}
|
|
112
|
+
KAPTURE_HEAD_ARTIFACT_ID: ${j(`needs.build-head.outputs.artifact-id`)}
|
|
113
|
+
KAPTURE_HEAD_ARTIFACT_DIGEST: ${j(`needs.build-head.outputs.artifact-digest`)}
|
|
114
114
|
run: >-
|
|
115
115
|
${n} test --github-artifacts
|
|
116
116
|
--base-dir "${d}/kapture-storybook/base" --head-dir "${d}/kapture-storybook/head"
|
|
117
|
-
--base-revision ${
|
|
117
|
+
--base-revision ${j(`needs.context.outputs.base-sha`)} --head-revision ${j(`needs.context.outputs.head-sha`)}
|
|
118
118
|
--changed-files "${d}/kapture-context/changed-files.json"
|
|
119
119
|
--output "${d}/kapture-result" --install-browser --browser-with-deps
|
|
120
120
|
- uses: ${rt.upload}
|
|
121
121
|
with:
|
|
122
122
|
name: kapture-visual-report-${f}
|
|
123
123
|
path: |
|
|
124
|
-
${
|
|
125
|
-
${
|
|
126
|
-
${
|
|
124
|
+
${j(`steps.capture.outputs.report-path`)}
|
|
125
|
+
${j(`steps.capture.outputs.report-directory`)}/capture-boundary.json
|
|
126
|
+
${j(`steps.capture.outputs.report-directory`)}/images/**/*.png
|
|
127
127
|
include-hidden-files: true
|
|
128
128
|
if-no-files-found: error
|
|
129
129
|
overwrite: true
|
|
@@ -140,14 +140,14 @@ ${r} - uses: ${rt.download}
|
|
|
140
140
|
steps:
|
|
141
141
|
${r} - uses: ${rt.download}
|
|
142
142
|
with:
|
|
143
|
-
artifact-ids: ${
|
|
143
|
+
artifact-ids: ${j(`needs.build-head.outputs.artifact-id`)}
|
|
144
144
|
path: ${d}/storybook
|
|
145
145
|
- id: capture
|
|
146
146
|
continue-on-error: true
|
|
147
147
|
run: >-
|
|
148
148
|
${n} setup capture --head-dir "${d}/storybook"
|
|
149
|
-
--base-revision ${
|
|
150
|
-
--head-revision ${
|
|
149
|
+
--base-revision ${j(`needs.context.outputs.base-sha`)}
|
|
150
|
+
--head-revision ${j(`needs.context.outputs.head-sha`)}
|
|
151
151
|
--output "${d}/setup-capture" --install-browser --browser-with-deps
|
|
152
152
|
- uses: ${rt.upload}
|
|
153
153
|
id: artifact
|
|
@@ -161,7 +161,7 @@ ${r} - uses: ${rt.download}
|
|
|
161
161
|
- name: Link capture artifact
|
|
162
162
|
if: steps.artifact.outputs.artifact-url != ''
|
|
163
163
|
env:
|
|
164
|
-
KAPTURE_ARTIFACT_URL: ${
|
|
164
|
+
KAPTURE_ARTIFACT_URL: ${j(`steps.artifact.outputs.artifact-url`)}
|
|
165
165
|
run: |
|
|
166
166
|
printf '\\n[Download capture artifact](%s)\\n' "$KAPTURE_ARTIFACT_URL" >> "$GITHUB_STEP_SUMMARY"
|
|
167
167
|
- if: steps.capture.outcome != 'success'
|
|
@@ -173,7 +173,7 @@ on:
|
|
|
173
173
|
types: [in_progress, completed]
|
|
174
174
|
permissions: {}
|
|
175
175
|
concurrency:
|
|
176
|
-
group: kapture-review-${
|
|
176
|
+
group: kapture-review-${j(`github.repository`)}
|
|
177
177
|
cancel-in-progress: false
|
|
178
178
|
queue: max
|
|
179
179
|
env:
|
|
@@ -187,7 +187,7 @@ jobs:
|
|
|
187
187
|
timeout-minutes: 20
|
|
188
188
|
permissions: { actions: read, contents: read, issues: write, pull-requests: read, statuses: write }
|
|
189
189
|
env:
|
|
190
|
-
GITHUB_TOKEN: ${
|
|
190
|
+
GITHUB_TOKEN: ${j(`github.token`)}
|
|
191
191
|
KAPTURE_BASE_BRANCH: ${it(a)}
|
|
192
192
|
steps:
|
|
193
193
|
${r} - id: review
|
|
@@ -206,7 +206,7 @@ ${r} - id: review
|
|
|
206
206
|
- name: Publish review
|
|
207
207
|
if: steps.review.outputs.ready == 'true'
|
|
208
208
|
env:
|
|
209
|
-
KAPTURE_REPORT_URL: ${
|
|
209
|
+
KAPTURE_REPORT_URL: ${j(`steps.deploy.outputs.url`)}
|
|
210
210
|
run: >-
|
|
211
211
|
${n} github publish-run
|
|
212
212
|
--receipt "${d}/kapture-receipt.json" --report "${d}/kapture-review/report.json"
|
|
@@ -218,7 +218,7 @@ ${r} - id: review
|
|
|
218
218
|
timeout-minutes: 5
|
|
219
219
|
permissions: { actions: read, contents: read, pull-requests: read, statuses: write }
|
|
220
220
|
env:
|
|
221
|
-
GITHUB_TOKEN: ${
|
|
221
|
+
GITHUB_TOKEN: ${j(`github.token`)}
|
|
222
222
|
KAPTURE_BASE_BRANCH: ${it(a)}
|
|
223
223
|
steps:
|
|
224
224
|
${r} - run: >-
|
|
@@ -230,7 +230,7 @@ on:
|
|
|
230
230
|
types: [created]
|
|
231
231
|
permissions: {}
|
|
232
232
|
concurrency:
|
|
233
|
-
group: kapture-review-${
|
|
233
|
+
group: kapture-review-${j(`github.repository`)}
|
|
234
234
|
cancel-in-progress: false
|
|
235
235
|
queue: max
|
|
236
236
|
env:
|
|
@@ -245,11 +245,11 @@ jobs:
|
|
|
245
245
|
permissions: { actions: read, issues: write, pull-requests: read, statuses: write }
|
|
246
246
|
steps:
|
|
247
247
|
${r} - env:
|
|
248
|
-
GITHUB_TOKEN: ${
|
|
248
|
+
GITHUB_TOKEN: ${j(`github.token`)}
|
|
249
249
|
run: ${n} github approve
|
|
250
|
-
`;return{"kapture-capture.yml":h+g,"kapture-report.yml":_,"kapture-approve.yml":v}}k();const lt=O({meta:{name:`ci`,description:`Generate provider-neutral GitHub Actions workflows for your package manager`},args:{"package-manager":{type:`string`,required:!0},"base-branch":{type:`string`,default:`main`},"storybook-directory":{type:`string`,default:`storybook-static`},"adapter-package-json":{type:`string`},"allow-initial-adoption":{type:`boolean`,default:!1},"install-command":{type:`string`},"build-command":{type:`string`},output:{type:`string`,default:`.github/workflows`}},async run({args:e}){let t=e[`package-manager`];if(!nt.includes(t))throw Error(`package-manager must be npm, yarn, pnpm, or bun`);let n=ct({packageManager:t,cliVersion:Qe,baseBranch:e[`base-branch`],storybookDirectory:e[`storybook-directory`],adapterPackageJson:e[`adapter-package-json`],allowInitialAdoption:e[`allow-initial-adoption`],installCommand:e[`install-command`],buildCommand:e[`build-command`]}),r=f(e.output);for(let e of Object.keys(n))if(await m(f(r,e)).then(()=>!0,e=>{if(e.code===`ENOENT`)return!1;throw e}))throw Error(`${e} already exists; generate into a new directory and review the diff`);await y(r,{recursive:!0});for(let[e,t]of Object.entries(n)){let n=await ee(f(r,e),`wx`);try{await n.writeFile(t)}finally{await n.close()}}console.log(`Generated three workflows in ${r}. Configure the deployment step in kapture-report.yml for normal comparison. Initial adoption only uploads capture artifacts and writes a Job Summary. No commits or deployments were made.`)}});function ut(e,t,n,r,i,a={}){let{threshold:o=.1,alpha:s=.1,aaColor:c=[255,255,0],diffColor:l=[255,0,0],includeAA:u,diffColorAlt:d,diffMask:f}=a;if(!dt(e)||!dt(t)||n&&!dt(n))throw Error(`Image data: Uint8Array, Uint8ClampedArray or Buffer expected.`);if(e.length!==t.length||n&&n.length!==e.length)throw Error(`Image sizes do not match.`);if(e.length!==r*i*4)throw Error(`Image data size does not match width/height.`);let p=r*i,m=new Uint32Array(e.buffer,e.byteOffset,p),h=new Uint32Array(t.buffer,t.byteOffset,p),g=!0;for(let e=0;e<p;e++)if(m[e]!==h[e]){g=!1;break}if(g){if(n&&!f)for(let t=0;t<p;t++)gt(e,4*t,s,n);return 0}let _=35215*o*o,[v,y,b]=c,[ee,x,S]=l,[te,ne,re]=d||l,C=0;for(let a=0;a<i;a++)for(let o=0;o<r;o++){let c=a*r+o,l=c*4,d=m[c]===h[c]?0:mt(e,t,l,l,!1);if(Math.abs(d)>_){let s=ft(e,o,a,r,i,m,h)||ft(t,o,a,r,i,h,m);!u&&s?n&&!f&&ht(n,l,v,y,b):(n&&(d<0?ht(n,l,te,ne,re):ht(n,l,ee,x,S)),C++)}else n&&!f&>(e,l,s,n)}return C}function dt(e){return ArrayBuffer.isView(e)&&e.BYTES_PER_ELEMENT===1}function ft(e,t,n,r,i,a,o){let s=Math.max(t-1,0),c=Math.max(n-1,0),l=Math.min(t+1,r-1),u=Math.min(n+1,i-1),d=n*r+t,f=+(t===s||t===l||n===c||n===u),p=0,m=0,h=0,g=0,_=0,v=0;for(let i=s;i<=l;i++)for(let a=c;a<=u;a++){if(i===t&&a===n)continue;let o=mt(e,e,d*4,(a*r+i)*4,!0);if(o===0){if(f++,f>2)return!1}else o<p?(p=o,h=i,g=a):o>m&&(m=o,_=i,v=a)}return p===0||m===0?!1:pt(a,h,g,r,i)&&pt(o,h,g,r,i)||pt(a,_,v,r,i)&&pt(o,_,v,r,i)}function pt(e,t,n,r,i){let a=Math.max(t-1,0),o=Math.max(n-1,0),s=Math.min(t+1,r-1),c=Math.min(n+1,i-1),l=e[n*r+t],u=+(t===a||t===s||n===o||n===c);for(let i=a;i<=s;i++)for(let a=o;a<=c;a++)if((i!==t||a!==n)&&(u+=+(l===e[a*r+i]),u>2))return!0;return!1}function mt(e,t,n,r,i){let a=e[n],o=e[n+1],s=e[n+2],c=e[n+3],l=t[r],u=t[r+1],d=t[r+2],f=t[r+3],p=a-l,m=o-u,h=s-d,g=c-f;if(!p&&!m&&!h&&!g)return 0;if(c<255||f<255){let e=48+n%2*159,t=48+159*((n/1.618033988749895|0)%2),r=48+159*((n/2.618033988749895|0)%2);p=(a*c-l*f-e*g)/255,m=(o*c-u*f-t*g)/255,h=(s*c-d*f-r*g)/255}let _=p*.29889531+m*.58662247+h*.11448223;if(i)return _;let v=p*.59597799-m*.2741761-h*.32180189,y=p*.21147017-m*.52261711+h*.31114694,b=.5053*_*_+.299*v*v+.1957*y*y;return _>0?-b:b}function ht(e,t,n,r,i){e[t+0]=n,e[t+1]=r,e[t+2]=i,e[t+3]=255}function gt(e,t,n,r){let i=255+(e[t]*.29889531+e[t+1]*.58662247+e[t+2]*.11448223-255)*n*e[t+3]/255;ht(r,t,i,i,i)}var _t=T((()=>{})),vt=E(((e,t)=>{let n=D(`util`),r=D(`stream`),i=t.exports=function(){r.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};n.inherits(i,r),i.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},i.prototype.write=function(e,t){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let n;return n=Buffer.isBuffer(e)?e:Buffer.from(e,t||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},i.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},i.prototype.destroySoon=i.prototype.end,i.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},i.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},i.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))},i.prototype._processRead=function(e){this._reads.shift();let t=0,n=0,r=Buffer.alloc(e.length);for(;t<e.length;){let i=this._buffers[n++],a=Math.min(i.length,e.length-t);i.copy(r,t,0,a),t+=a,a!==i.length&&(this._buffers[--n]=i.slice(a))}n>0&&this._buffers.splice(0,n),this._buffered-=e.length,e.func.call(this,r)},i.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit(`error`,e)}}})),yt=E((e=>{let t=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];e.getImagePasses=function(e,n){let r=[],i=e%8,a=n%8,o=(e-i)/8,s=(n-a)/8;for(let e=0;e<t.length;e++){let n=t[e],c=o*n.x.length,l=s*n.y.length;for(let e=0;e<n.x.length&&n.x[e]<i;e++)c++;for(let e=0;e<n.y.length&&n.y[e]<a;e++)l++;c>0&&l>0&&r.push({width:c,height:l,index:e})}return r},e.getInterlaceIterator=function(e){return function(n,r,i){let a=n%t[i].x.length,o=(n-a)/t[i].x.length*8+t[i].x[a],s=r%t[i].y.length,c=(r-s)/t[i].y.length*8+t[i].y[s];return o*4+c*e*4}}})),bt=E(((e,t)=>{t.exports=function(e,t,n){let r=e+t-n,i=Math.abs(r-e),a=Math.abs(r-t),o=Math.abs(r-n);return i<=a&&i<=o?e:a<=o?t:n}})),xt=E(((e,t)=>{let n=yt(),r=bt();function i(e,t,n){let r=e*t;return n!==8&&(r=Math.ceil(r/(8/n))),r}let a=t.exports=function(e,t){let r=e.width,a=e.height,o=e.interlace,s=e.bpp,c=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],o){let e=n.getImagePasses(r,a);for(let t=0;t<e.length;t++)this._images.push({byteWidth:i(e[t].width,s,c),height:e[t].height,lineIndex:0})}else this._images.push({byteWidth:i(r,s,c),height:a,lineIndex:0});this._xComparison=c===8?s:c===16?s*2:1};a.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},a.prototype._unFilterType1=function(e,t,n){let r=this._xComparison,i=r-1;for(let a=0;a<n;a++){let n=e[1+a],o=a>i?t[a-r]:0;t[a]=n+o}},a.prototype._unFilterType2=function(e,t,n){let r=this._lastLine;for(let i=0;i<n;i++){let n=e[1+i],a=r?r[i]:0;t[i]=n+a}},a.prototype._unFilterType3=function(e,t,n){let r=this._xComparison,i=r-1,a=this._lastLine;for(let o=0;o<n;o++){let n=e[1+o],s=a?a[o]:0,c=o>i?t[o-r]:0,l=Math.floor((c+s)/2);t[o]=n+l}},a.prototype._unFilterType4=function(e,t,n){let i=this._xComparison,a=i-1,o=this._lastLine;for(let s=0;s<n;s++){let n=e[1+s],c=o?o[s]:0,l=s>a?t[s-i]:0,u=s>a&&o?o[s-i]:0,d=r(l,c,u);t[s]=n+d}},a.prototype._reverseFilterLine=function(e){let t=e[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(t===0)n=e.slice(1,i+1);else switch(n=Buffer.alloc(i),t){case 1:this._unFilterType1(e,n,i);break;case 2:this._unFilterType2(e,n,i);break;case 3:this._unFilterType3(e,n,i);break;case 4:this._unFilterType4(e,n,i);break;default:throw Error(`Unrecognised filter type - `+t)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),St=E(((e,t)=>{let n=D(`util`),r=vt(),i=xt(),a=t.exports=function(e){r.call(this);let t=[],n=this;this._filter=new i(e,{read:this.read.bind(this),write:function(e){t.push(e)},complete:function(){n.emit(`complete`,Buffer.concat(t))}}),this._filter.start()};n.inherits(a,r)})),Ct=E(((e,t)=>{t.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),wt=E(((e,t)=>{let n=[];(function(){for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t&1?t=3988292384^t>>>1:t>>>=1;n[e]=t}})();let r=t.exports=function(){this._crc=-1};r.prototype.write=function(e){for(let t=0;t<e.length;t++)this._crc=n[(this._crc^e[t])&255]^this._crc>>>8;return!0},r.prototype.crc32=function(){return this._crc^-1},r.crc32=function(e){let t=-1;for(let r=0;r<e.length;r++)t=n[(t^e[r])&255]^t>>>8;return t^-1}})),Tt=E(((e,t)=>{let n=Ct(),r=wt(),i=t.exports=function(e,t){this._options=e,e.checkCRC=e.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[n.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[n.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[n.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[n.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[n.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[n.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};i.prototype.start=function(){this.read(n.PNG_SIGNATURE.length,this._parseSignature.bind(this))},i.prototype._parseSignature=function(e){let t=n.PNG_SIGNATURE;for(let n=0;n<t.length;n++)if(e[n]!==t[n]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},i.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),i=e.readUInt32BE(4),a=``;for(let t=4;t<8;t++)a+=String.fromCharCode(e[t]);let o=!!(e[4]&32);if(!this._hasIHDR&&i!==n.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new r,this._crc.write(Buffer.from(a)),this._chunks[i])return this._chunks[i](t);if(!o){this.error(Error(`Unsupported critical chunk type `+a));return}this.read(t+4,this._skipChunk.bind(this))},i.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},i.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==t){this.error(Error(`Crc error - `+t+` - `+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))},i.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i=e[8],a=e[9],o=e[10],s=e[11],c=e[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(Error(`Unsupported bit depth `+i));return}if(!(a in n.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(o!==0){this.error(Error(`Unsupported compression method`));return}if(s!==0){this.error(Error(`Unsupported filter method`));return}if(c!==0&&c!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=a;let l=n.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:i,interlace:!!c,palette:!!(a&n.COLORTYPE_PALETTE),color:!!(a&n.COLORTYPE_COLOR),alpha:!!(a&n.COLORTYPE_ALPHA),bpp:l,colorType:a}),this._handleChunkEnd()},i.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))},i.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let n=0;n<t;n++)this._palette.push([e[n*3],e[n*3+1],e[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},i.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))},i.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===n.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(e.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===n.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===n.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()},i.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))},i.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/n.GAMMA_DIVISION),this._handleChunkEnd()},i.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))},i.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===n.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},i.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))},i.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),Et=E((e=>{let t=yt(),n=[function(){},function(e,t,n,r){if(r===t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=255},function(e,t,n,r){if(r+1>=t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=t[r+1]},function(e,t,n,r){if(r+2>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=255},function(e,t,n,r){if(r+3>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=t[r+3]}],r=[function(){},function(e,t,n,r){let i=t[0];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=r},function(e,t,n){let r=t[0];e[n]=r,e[n+1]=r,e[n+2]=r,e[n+3]=t[1]},function(e,t,n,r){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=r},function(e,t,n){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=t[3]}];function i(e,t){let n=[],r=0;function i(){if(r===e.length)throw Error(`Ran out of data`);let i=e[r];r++;let a,o,s,c,l,u,d,f;switch(t){default:throw Error(`unrecognised depth`);case 16:d=e[r],r++,n.push((i<<8)+d);break;case 4:d=i&15,f=i>>4,n.push(f,d);break;case 2:l=i&3,u=i>>2&3,d=i>>4&3,f=i>>6&3,n.push(f,d,u,l);break;case 1:a=i&1,o=i>>1&1,s=i>>2&1,c=i>>3&1,l=i>>4&1,u=i>>5&1,d=i>>6&1,f=i>>7&1,n.push(f,d,u,l,c,s,o,a)}}return{get:function(e){for(;n.length<e;)i();let t=n.slice(0,e);return n=n.slice(e),t},resetAfterLine:function(){n.length=0},end:function(){if(r!==e.length)throw Error(`extra data found`)}}}function a(e,t,r,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++)for(let c=0;c<s;c++){let s=r(c,e,l);n[i](t,a,s,o),o+=i}return o}function o(e,t,n,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++){for(let c=0;c<s;c++){let s=a.get(i),u=n(c,e,l);r[i](t,s,u,o)}a.resetAfterLine()}}e.dataToBitMap=function(e,n){let r=n.width,s=n.height,c=n.depth,l=n.bpp,u=n.interlace,d;c!==8&&(d=i(e,c));let f;f=c<=8?Buffer.alloc(r*s*4):new Uint16Array(r*s*4);let p=2**c-1,m=0,h,g;if(u)h=t.getImagePasses(r,s),g=t.getInterlaceIterator(r,s);else{let e=0;g=function(){let t=e;return e+=4,t},h=[{width:r,height:s}]}for(let t=0;t<h.length;t++)c===8?m=a(h[t],f,g,l,e,m):o(h[t],f,g,l,d,p);if(c===8){if(m!==e.length)throw Error(`extra data found`)}else d.end();return f}})),Dt=E(((e,t)=>{function n(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=i[e[a]];if(!n)throw Error(`index `+e[a]+` not in palette`);for(let e=0;e<4;e++)t[a+e]=n[e];a+=4}}function r(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=!1;if(i.length===1?i[0]===e[a]&&(n=!0):i[0]===e[a]&&i[1]===e[a+1]&&i[2]===e[a+2]&&(n=!0),n)for(let e=0;e<4;e++)t[a+e]=0;a+=4}}function i(e,t,n,r,i){let a=2**i-1,o=0;for(let i=0;i<r;i++)for(let r=0;r<n;r++){for(let n=0;n<4;n++)t[o+n]=Math.floor(e[o+n]*255/a+.5);o+=4}}t.exports=function(e,t,a=!1){let o=t.depth,s=t.width,c=t.height,l=t.colorType,u=t.transColor,d=t.palette,f=e;return l===3?n(e,f,s,c,d):(u&&r(e,f,s,c,u),o!==8&&!a&&(o===16&&(f=Buffer.alloc(s*c*4)),i(e,f,s,c,o))),f}})),Ot=E(((e,t)=>{let n=D(`util`),r=D(`zlib`),i=vt(),a=St(),o=Tt(),s=Et(),c=Dt(),l=t.exports=function(e){i.call(this),this._parser=new o(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};n.inherits(l,i),l.prototype._handleError=function(e){this.emit(`error`,e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},l.prototype._inflateData=function(e){if(!this._inflate){if(this._bitmapInfo.interlace)this._inflate=r.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let e=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(e,r.Z_MIN_CHUNK);this._inflate=r.createInflate({chunkSize:t});let n=e,i=this.emit.bind(this,`error`);this._inflate.on(`error`,function(e){n&&i(e)}),this._filter.on(`complete`,this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(e){n&&(e.length>n&&(e=e.slice(0,n)),n-=e.length,a(e))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}}this._inflate.write(e)},l.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new a(this._bitmapInfo)},l.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e},l.prototype._handlePalette=function(e){this._bitmapInfo.palette=e},l.prototype._simpleTransparency=function(){this._metaData.alpha=!0},l.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},l.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},l.prototype._complete=function(e){if(this.errord)return;let t;try{let n=s.dataToBitMap(e,this._bitmapInfo);t=c(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(e){this._handleError(e);return}this.emit(`parsed`,t)}})),kt=E(((e,t)=>{let n=Ct();t.exports=function(e,t,r,i){let a=[n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let t=(function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&t)return e}let o=i.bitDepth===16?new Uint16Array(e.buffer):e,s=255,c=n.COLORTYPE_TO_BPP_MAP[i.inputColorType];c===4&&!i.inputHasAlpha&&(c=3);let l=n.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(s=65535,l*=2);let u=Buffer.alloc(t*r*l),d=0,f=0,p=i.bgColor||{};p.red===void 0&&(p.red=s),p.green===void 0&&(p.green=s),p.blue===void 0&&(p.blue=s);function m(){let e,t,r,c=s;switch(i.inputColorType){case n.COLORTYPE_COLOR_ALPHA:c=o[d+3],e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_COLOR:e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_ALPHA:c=o[d+1],e=o[d],t=e,r=e;break;case n.COLORTYPE_GRAYSCALE:e=o[d],t=e,r=e;break;default:throw Error(`input color type:`+i.inputColorType+` is not supported at present`)}return i.inputHasAlpha&&(a||(c/=s,e=Math.min(Math.max(Math.round((1-c)*p.red+c*e),0),s),t=Math.min(Math.max(Math.round((1-c)*p.green+c*t),0),s),r=Math.min(Math.max(Math.round((1-c)*p.blue+c*r),0),s))),{red:e,green:t,blue:r,alpha:c}}for(let e=0;e<r;e++)for(let e=0;e<t;e++){let e=m(o,d);switch(i.colorType){case n.COLORTYPE_COLOR_ALPHA:case n.COLORTYPE_COLOR:i.bitDepth===8?(u[f]=e.red,u[f+1]=e.green,u[f+2]=e.blue,a&&(u[f+3]=e.alpha)):(u.writeUInt16BE(e.red,f),u.writeUInt16BE(e.green,f+2),u.writeUInt16BE(e.blue,f+4),a&&u.writeUInt16BE(e.alpha,f+6));break;case n.COLORTYPE_ALPHA:case n.COLORTYPE_GRAYSCALE:{let t=(e.red+e.green+e.blue)/3;i.bitDepth===8?(u[f]=t,a&&(u[f+1]=e.alpha)):(u.writeUInt16BE(t,f),a&&u.writeUInt16BE(e.alpha,f+2));break}default:throw Error(`unrecognised color Type `+i.colorType)}d+=c,f+=l}return u}})),At=E(((e,t)=>{let n=bt();function r(e,t,n,r,i){for(let a=0;a<n;a++)r[i+a]=e[t+a]}function i(e,t,n){let r=0,i=t+n;for(let n=t;n<i;n++)r+=Math.abs(e[n]);return r}function a(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=o>=a?e[t+o-a]:0,s=e[t+o]-n;r[i+o]=s}}function o(e,t,n,r){let i=0;for(let a=0;a<n;a++){let n=a>=r?e[t+a-r]:0,o=e[t+a]-n;i+=Math.abs(o)}return i}function s(e,t,n,r,i){for(let a=0;a<n;a++){let o=t>0?e[t+a-n]:0,s=e[t+a]-o;r[i+a]=s}}function c(e,t,n){let r=0,i=t+n;for(let a=t;a<i;a++){let i=t>0?e[a-n]:0,o=e[a]-i;r+=Math.abs(o)}return r}function l(e,t,n,r,i,a){for(let o=0;o<n;o++){let s=o>=a?e[t+o-a]:0,c=t>0?e[t+o-n]:0,l=e[t+o]-(s+c>>1);r[i+o]=l}}function u(e,t,n,r){let i=0;for(let a=0;a<n;a++){let o=a>=r?e[t+a-r]:0,s=t>0?e[t+a-n]:0,c=e[t+a]-(o+s>>1);i+=Math.abs(c)}return i}function d(e,t,r,i,a,o){for(let s=0;s<r;s++){let c=s>=o?e[t+s-o]:0,l=t>0?e[t+s-r]:0,u=t>0&&s>=o?e[t+s-(r+o)]:0,d=e[t+s]-n(c,l,u);i[a+s]=d}}function f(e,t,r,i){let a=0;for(let o=0;o<r;o++){let s=o>=i?e[t+o-i]:0,c=t>0?e[t+o-r]:0,l=t>0&&o>=i?e[t+o-(r+i)]:0,u=e[t+o]-n(s,c,l);a+=Math.abs(u)}return a}let p={0:r,1:a,2:s,3:l,4:d},m={0:i,1:o,2:c,3:u,4:f};t.exports=function(e,t,n,r,i){let a;if(!(`filterType`in r)||r.filterType===-1)a=[0,1,2,3,4];else if(typeof r.filterType==`number`)a=[r.filterType];else throw Error(`unrecognised filter types`);r.bitDepth===16&&(i*=2);let o=t*i,s=0,c=0,l=Buffer.alloc((o+1)*n),u=a[0];for(let t=0;t<n;t++){if(a.length>1){let t=1/0;for(let n=0;n<a.length;n++){let r=m[a[n]](e,c,o,i);r<t&&(u=a[n],t=r)}}l[s]=u,s++,p[u](e,c,o,l,s,i),s+=o,c+=o}return l}})),jt=E(((e,t)=>{let n=Ct(),r=wt(),i=kt(),a=At(),o=D(`zlib`),s=t.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32768,e.deflateLevel=e.deflateLevel==null?9:e.deflateLevel,e.deflateStrategy=e.deflateStrategy==null?3:e.deflateStrategy,e.inputHasAlpha=e.inputHasAlpha==null||e.inputHasAlpha,e.deflateFactory=e.deflateFactory||o.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType=typeof e.colorType==`number`?e.colorType:n.COLORTYPE_COLOR_ALPHA,e.inputColorType=typeof e.inputColorType==`number`?e.inputColorType:n.COLORTYPE_COLOR_ALPHA,[n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.colorType)===-1)throw Error(`option color type:`+e.colorType+` is not supported at present`);if([n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.inputColorType)===-1)throw Error(`option input color type:`+e.inputColorType+` is not supported at present`);if(e.bitDepth!==8&&e.bitDepth!==16)throw Error(`option bit depth:`+e.bitDepth+` is not supported at present`)};s.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},s.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},s.prototype.filterData=function(e,t,r){let o=i(e,t,r,this._options),s=n.COLORTYPE_TO_BPP_MAP[this._options.colorType];return a(o,t,r,this._options,s)},s.prototype._packChunk=function(e,t){let n=t?t.length:0,i=Buffer.alloc(n+12);return i.writeUInt32BE(n,0),i.writeUInt32BE(e,4),t&&t.copy(i,8),i.writeInt32BE(r.crc32(i.slice(4,i.length-4)),i.length-4),i},s.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*n.GAMMA_DIVISION),0),this._packChunk(n.TYPE_gAMA,t)},s.prototype.packIHDR=function(e,t){let r=Buffer.alloc(13);return r.writeUInt32BE(e,0),r.writeUInt32BE(t,4),r[8]=this._options.bitDepth,r[9]=this._options.colorType,r[10]=0,r[11]=0,r[12]=0,this._packChunk(n.TYPE_IHDR,r)},s.prototype.packIDAT=function(e){return this._packChunk(n.TYPE_IDAT,e)},s.prototype.packIEND=function(){return this._packChunk(n.TYPE_IEND,null)}})),Mt=E(((e,t)=>{let n=D(`util`),r=D(`stream`),i=Ct(),a=jt(),o=t.exports=function(e){r.call(this);let t=e||{};this._packer=new a(t),this._deflate=this._packer.createDeflate(),this.readable=!0};n.inherits(o,r),o.prototype.pack=function(e,t,n,r){this.emit(`data`,Buffer.from(i.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(t,n)),r&&this.emit(`data`,this._packer.packGAMA(r));let a=this._packer.filterData(e,t,n);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(e){this.emit(`data`,this._packer.packIDAT(e))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(a)}})),Nt=E(((e,t)=>{let n=D(`assert`).ok,r=D(`zlib`),i=D(`util`),a=D(`buffer`).kMaxLength;function o(e){if(!(this instanceof o))return new o(e);e&&e.chunkSize<r.Z_MIN_CHUNK&&(e.chunkSize=r.Z_MIN_CHUNK),r.Inflate.call(this,e),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&e.maxLength!=null&&(this._maxLength=e.maxLength)}function s(e){return new o(e)}function c(e,t){t&&process.nextTick(t),e._handle&&=(e._handle.close(),null)}o.prototype._processChunk=function(e,t,i){if(typeof i==`function`)return r.Inflate._processChunk.call(this,e,t,i);let o=this,s=e&&e.length,l=this._chunkSize-this._offset,u=this._maxLength,d=0,f=[],p=0,m;this.on(`error`,function(e){m=e});function h(e,t){if(o._hadError)return;let r=l-t;if(n(r>=0,`have should not go down`),r>0){let e=o._buffer.slice(o._offset,o._offset+r);if(o._offset+=r,e.length>u&&(e=e.slice(0,u)),f.push(e),p+=e.length,u-=e.length,u===0)return!1}return(t===0||o._offset>=o._chunkSize)&&(l=o._chunkSize,o._offset=0,o._buffer=Buffer.allocUnsafe(o._chunkSize)),t===0&&(d+=s-e,s=e,!0)}n(this._handle,`zlib binding closed`);let g;do g=this._handle.writeSync(t,e,d,s,this._buffer,this._offset,l),g||=this._writeState;while(!this._hadError&&h(g[0],g[1]));if(this._hadError)throw m;if(p>=a)throw c(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+a.toString(16)+` bytes`);let _=Buffer.concat(f,p);return c(this),_},i.inherits(o,r.Inflate);function l(e,t){if(typeof t==`string`&&(t=Buffer.from(t)),!(t instanceof Buffer))throw TypeError(`Not a string or buffer`);let n=e._finishFlushFlag;return n??=r.Z_FINISH,e._processChunk(t,n)}function u(e,t){return l(new o(t),e)}t.exports=e=u,e.Inflate=o,e.createInflate=s,e.inflateSync=u})),Pt=E(((e,t)=>{let n=t.exports=function(e){this._buffer=e,this._reads=[]};n.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})},n.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),Ft=E((e=>{let t=Pt(),n=xt();e.process=function(e,r){let i=[],a=new t(e);return new n(r,{read:a.read.bind(a),write:function(e){i.push(e)},complete:function(){}}).start(),a.process(),Buffer.concat(i)}})),It=E(((e,t)=>{let n=!0,r=D(`zlib`),i=Nt();r.deflateSync||(n=!1);let a=Pt(),o=Ft(),s=Tt(),c=Et(),l=Dt();t.exports=function(e,t){if(!n)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let u;function d(e){u=e}let f;function p(e){f=e}function m(e){f.transColor=e}function h(e){f.palette=e}function g(){f.alpha=!0}let _;function v(e){_=e}let y=[];function b(e){y.push(e)}let ee=new a(e);if(new s(t,{read:ee.read.bind(ee),error:d,metadata:p,gamma:v,palette:h,transColor:m,inflateData:b,simpleTransparency:g}).start(),ee.process(),u)throw u;let x=Buffer.concat(y);y.length=0;let S;if(f.interlace)S=r.inflateSync(x);else{let e=((f.width*f.bpp*f.depth+7>>3)+1)*f.height;S=i(x,{chunkSize:e,maxLength:e})}if(x=null,!S||!S.length)throw Error(`bad png - invalid inflate data response`);let te=o.process(S,f);x=null;let ne=c.dataToBitMap(te,f);te=null;let re=l(ne,f,t.skipRescale);return f.data=re,f.gamma=_||0,f}})),Lt=E(((e,t)=>{let n=!0,r=D(`zlib`);r.deflateSync||(n=!1);let i=Ct(),a=jt();t.exports=function(e,t){if(!n)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let o=new a(t||{}),s=[];s.push(Buffer.from(i.PNG_SIGNATURE)),s.push(o.packIHDR(e.width,e.height)),e.gamma&&s.push(o.packGAMA(e.gamma));let c=o.filterData(e.data,e.width,e.height),l=r.deflateSync(c,o.getDeflateOptions());if(c=null,!l||!l.length)throw Error(`bad png - invalid compressed data response`);return s.push(o.packIDAT(l)),s.push(o.packIEND()),Buffer.concat(s)}})),Rt=E((e=>{let t=It(),n=Lt();e.read=function(e,n){return t(e,n||{})},e.write=function(e,t){return n(e,t)}})),zt=E((e=>{let t=D(`util`),n=D(`stream`),r=Ot(),i=Mt(),a=Rt(),o=e.PNG=function(e){n.call(this),e||={},this.width=e.width|0,this.height=e.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new r(e),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(e){this.data=e,this.emit(`parsed`,e)}.bind(this)),this._packer=new i(e),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};t.inherits(o,n),o.sync=a,o.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},o.prototype.parse=function(e,t){if(t){let e,n;e=function(e){this.removeListener(`error`,n),this.data=e,t(null,this)}.bind(this),n=function(n){this.removeListener(`parsed`,e),t(n,null)}.bind(this),this.once(`parsed`,e),this.once(`error`,n)}return this.end(e),this},o.prototype.write=function(e){return this._parser.write(e),!0},o.prototype.end=function(e){this._parser.end(e)},o.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit(`metadata`,e)},o.prototype._gamma=function(e){this.gamma=e},o.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},o.bitblt=function(e,t,n,r,i,a,o,s){if(n|=0,r|=0,i|=0,a|=0,o|=0,s|=0,n>e.width||r>e.height||n+i>e.width||r+a>e.height)throw Error(`bitblt reading outside image`);if(o>t.width||s>t.height||o+i>t.width||s+a>t.height)throw Error(`bitblt writing outside image`);for(let c=0;c<a;c++)e.data.copy(t.data,(s+c)*t.width+o<<2,(r+c)*e.width+n<<2,(r+c)*e.width+n+i<<2)},o.prototype.bitblt=function(e,t,n,r,i,a,s){return o.bitblt(this,e,t,n,r,i,a,s),this},o.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++){let r=e.width*t+n<<2;for(let t=0;t<3;t++){let n=e.data[r+t]/255;n**=1/2.2/e.gamma,e.data[r+t]=Math.round(n*255)}}e.gamma=0}},o.prototype.adjustGamma=function(){o.adjustGamma(this)}}));function j(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}function Bt(e){return e&&Object.assign(Ut,e),Ut}var Vt,Ht,Ut,Wt=T((()=>{Object.freeze({status:`aborted`}),Vt=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ht=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}},Ut={}}));function Gt(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Kt(e,t){return typeof t==`bigint`?t.toString():t}function qt(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Jt(e){return e==null}function Yt(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Xt(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=t.toString(),i=(r.split(`.`)[1]||``).length;if(i===0&&/\d?e-\d?/.test(r)){let e=r.match(/\d?e-(\d?)/);e?.[1]&&(i=Number.parseInt(e[1]))}let a=n>i?n:i;return Number.parseInt(e.toFixed(a).replace(`.`,``))%Number.parseInt(t.toFixed(a).replace(`.`,``))/10**a}function M(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==xn)return r===void 0&&(r=xn,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function Zt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Qt(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function $t(e){return JSON.stringify(e)}function en(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}function tn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function nn(e){if(tn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return tn(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function rn(e){return nn(e)?{...e}:Array.isArray(e)?[...e]:e}function an(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function on(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function N(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function sn(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}function cn(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return on(e,Qt(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return Zt(this,`shape`,e),e},checks:[]}))}function ln(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return on(e,Qt(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return Zt(this,`shape`,r),r},checks:[]}))}function un(e,t){if(!nn(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Zt(this,`shape`,n),n}}))}function dn(e,t){if(!nn(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Zt(this,`shape`,n),n}}))}function fn(e,t){return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Zt(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:[]}))}function pn(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return on(t,Qt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return Zt(this,`shape`,i),i},checks:[]}))}function mn(e,t,n){return on(t,Qt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return Zt(this,`shape`,i),i}}))}function hn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function gn(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function _n(e){return typeof e==`string`?e:e?.message}function vn(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=_n(e.inst?._zod.def?.error?.(e))??_n(t?.error?.(e))??_n(n.customError?.(e))??_n(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function yn(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function bn(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var xn,Sn,Cn,wn,Tn,En=T((()=>{xn=Symbol(`evaluating`),Sn=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{},Cn=qt(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}}),wn=new Set([`string`,`number`,`symbol`]),Tn={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}}));function Dn(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function On(e,t=e=>e.message){let n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`&&i.errors.length)i.errors.map(e=>r({issues:e}));else if(i.code===`invalid_key`)r({issues:i.issues});else if(i.code===`invalid_element`)r({issues:i.issues});else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}var kn,An,jn,Mn=T((()=>{Wt(),En(),kn=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Kt,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},An=j(`$ZodError`,kn),jn=j(`$ZodError`,kn,{Parent:Error})})),Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn=T((()=>{Wt(),Mn(),En(),Nn=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Vt;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>vn(e,a,Bt())));throw Sn(t,i?.callee),t}return o.value},Pn=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>vn(e,a,Bt())));throw Sn(t,i?.callee),t}return o.value},Fn=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Vt;return a.issues.length?{success:!1,error:new(e??An)(a.issues.map(e=>vn(e,i,Bt())))}:{success:!0,data:a.value}},In=Fn(jn),Ln=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>vn(e,i,Bt())))}:{success:!0,data:a.value}},Rn=Ln(jn),zn=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Nn(e)(t,n,i)},Bn=e=>(t,n,r)=>Nn(e)(t,n,r),Vn=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Pn(e)(t,n,i)},Hn=e=>async(t,n,r)=>Pn(e)(t,n,r),Un=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Fn(e)(t,n,i)},Wn=e=>(t,n,r)=>Fn(e)(t,n,r),Gn=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Ln(e)(t,n,i)},Kn=e=>async(t,n,r)=>Ln(e)(t,n,r)}));function Jn(){return new RegExp(cr,`u`)}function Yn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Xn(e){return RegExp(`^${Yn(e)}$`)}function Zn(e){let t=Yn({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${gr}T(?:${r})$`)}var Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr=T((()=>{Qn=/^[cC][^\s-]{8,}$/,$n=/^[0-9a-z]+$/,er=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,tr=/^[0-9a-vA-V]{20}$/,nr=/^[A-Za-z0-9]{27}$/,rr=/^[a-zA-Z0-9_-]{21}$/,ir=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ar=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,or=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,sr=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,cr=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,lr=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ur=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,dr=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,fr=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pr=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mr=/^[A-Za-z0-9_-]*$/,hr=/^\+[1-9]\d{6,14}$/,gr=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,_r=RegExp(`^${gr}$`),vr=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},yr=/^-?\d+$/,br=/^-?\d+(?:\.\d+)?$/,xr=/^(?:true|false)$/i,Sr=/^[^A-Z]*$/,Cr=/^[^a-z]*$/})),P,Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr,Fr,Ir,Lr,Rr,zr,Br,Vr=T((()=>{Wt(),wr(),En(),P=j(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Tr={number:`number`,bigint:`bigint`,object:`date`},Er=j(`$ZodCheckLessThan`,(e,t)=>{P.init(e,t);let n=Tr[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Dr=j(`$ZodCheckGreaterThan`,(e,t)=>{P.init(e,t);let n=Tr[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Or=j(`$ZodCheckMultipleOf`,(e,t)=>{P.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):Xt(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),kr=j(`$ZodCheckNumberFormat`,(e,t)=>{P.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Tn[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=yr)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Ar=j(`$ZodCheckMaxLength`,(e,t)=>{var n;P.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=yn(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),jr=j(`$ZodCheckMinLength`,(e,t)=>{var n;P.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=yn(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Mr=j(`$ZodCheckLengthEquals`,(e,t)=>{var n;P.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=yn(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Nr=j(`$ZodCheckStringFormat`,(e,t)=>{var n,r;P.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Pr=j(`$ZodCheckRegex`,(e,t)=>{Nr.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Fr=j(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Sr,Nr.init(e,t)}),Ir=j(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Cr,Nr.init(e,t)}),Lr=j(`$ZodCheckIncludes`,(e,t)=>{P.init(e,t);let n=an(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Rr=j(`$ZodCheckStartsWith`,(e,t)=>{P.init(e,t);let n=RegExp(`^${an(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),zr=j(`$ZodCheckEndsWith`,(e,t)=>{P.init(e,t);let n=RegExp(`.*${an(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Br=j(`$ZodCheckOverwrite`,(e,t)=>{P.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}})})),Hr,Ur=T((()=>{Hr=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
250
|
+
`;return{"kapture-capture.yml":h+g,"kapture-report.yml":_,"kapture-approve.yml":v}}A();const lt=k({meta:{name:`ci`,description:`Generate provider-neutral GitHub Actions workflows for your package manager`},args:{"package-manager":{type:`string`,required:!0},"base-branch":{type:`string`,default:`main`},"storybook-directory":{type:`string`,default:`storybook-static`},"adapter-package-json":{type:`string`},"allow-initial-adoption":{type:`boolean`,default:!1},"install-command":{type:`string`},"build-command":{type:`string`},output:{type:`string`,default:`.github/workflows`}},async run({args:e}){let t=e[`package-manager`];if(!nt.includes(t))throw Error(`package-manager must be npm, yarn, pnpm, or bun`);let n=ct({packageManager:t,cliVersion:Qe,baseBranch:e[`base-branch`],storybookDirectory:e[`storybook-directory`],adapterPackageJson:e[`adapter-package-json`],allowInitialAdoption:e[`allow-initial-adoption`],installCommand:e[`install-command`],buildCommand:e[`build-command`]}),r=f(e.output);for(let e of Object.keys(n))if(await m(f(r,e)).then(()=>!0,e=>{if(e.code===`ENOENT`)return!1;throw e}))throw Error(`${e} already exists; generate into a new directory and review the diff`);await y(r,{recursive:!0});for(let[e,t]of Object.entries(n)){let n=await ee(f(r,e),`wx`);try{await n.writeFile(t)}finally{await n.close()}}console.log(`Generated three workflows in ${r}. Configure the deployment step in kapture-report.yml for normal comparison. Initial adoption only uploads capture artifacts and writes a Job Summary. No commits or deployments were made.`)}});function ut(e,t,n,r,i,a={}){let{threshold:o=.1,alpha:s=.1,aaColor:c=[255,255,0],diffColor:l=[255,0,0],includeAA:u,diffColorAlt:d,diffMask:f}=a;if(!dt(e)||!dt(t)||n&&!dt(n))throw Error(`Image data: Uint8Array, Uint8ClampedArray or Buffer expected.`);if(e.length!==t.length||n&&n.length!==e.length)throw Error(`Image sizes do not match.`);if(e.length!==r*i*4)throw Error(`Image data size does not match width/height.`);let p=r*i,m=new Uint32Array(e.buffer,e.byteOffset,p),h=new Uint32Array(t.buffer,t.byteOffset,p),g=!0;for(let e=0;e<p;e++)if(m[e]!==h[e]){g=!1;break}if(g){if(n&&!f)for(let t=0;t<p;t++)gt(e,4*t,s,n);return 0}let _=35215*o*o,[v,y,b]=c,[ee,x,S]=l,[te,ne,re]=d||l,C=0;for(let a=0;a<i;a++)for(let o=0;o<r;o++){let c=a*r+o,l=c*4,d=m[c]===h[c]?0:mt(e,t,l,l,!1);if(Math.abs(d)>_){let s=ft(e,o,a,r,i,m,h)||ft(t,o,a,r,i,h,m);!u&&s?n&&!f&&ht(n,l,v,y,b):(n&&(d<0?ht(n,l,te,ne,re):ht(n,l,ee,x,S)),C++)}else n&&!f&>(e,l,s,n)}return C}function dt(e){return ArrayBuffer.isView(e)&&e.BYTES_PER_ELEMENT===1}function ft(e,t,n,r,i,a,o){let s=Math.max(t-1,0),c=Math.max(n-1,0),l=Math.min(t+1,r-1),u=Math.min(n+1,i-1),d=n*r+t,f=+(t===s||t===l||n===c||n===u),p=0,m=0,h=0,g=0,_=0,v=0;for(let i=s;i<=l;i++)for(let a=c;a<=u;a++){if(i===t&&a===n)continue;let o=mt(e,e,d*4,(a*r+i)*4,!0);if(o===0){if(f++,f>2)return!1}else o<p?(p=o,h=i,g=a):o>m&&(m=o,_=i,v=a)}return p===0||m===0?!1:pt(a,h,g,r,i)&&pt(o,h,g,r,i)||pt(a,_,v,r,i)&&pt(o,_,v,r,i)}function pt(e,t,n,r,i){let a=Math.max(t-1,0),o=Math.max(n-1,0),s=Math.min(t+1,r-1),c=Math.min(n+1,i-1),l=e[n*r+t],u=+(t===a||t===s||n===o||n===c);for(let i=a;i<=s;i++)for(let a=o;a<=c;a++)if((i!==t||a!==n)&&(u+=+(l===e[a*r+i]),u>2))return!0;return!1}function mt(e,t,n,r,i){let a=e[n],o=e[n+1],s=e[n+2],c=e[n+3],l=t[r],u=t[r+1],d=t[r+2],f=t[r+3],p=a-l,m=o-u,h=s-d,g=c-f;if(!p&&!m&&!h&&!g)return 0;if(c<255||f<255){let e=48+n%2*159,t=48+159*((n/1.618033988749895|0)%2),r=48+159*((n/2.618033988749895|0)%2);p=(a*c-l*f-e*g)/255,m=(o*c-u*f-t*g)/255,h=(s*c-d*f-r*g)/255}let _=p*.29889531+m*.58662247+h*.11448223;if(i)return _;let v=p*.59597799-m*.2741761-h*.32180189,y=p*.21147017-m*.52261711+h*.31114694,b=.5053*_*_+.299*v*v+.1957*y*y;return _>0?-b:b}function ht(e,t,n,r,i){e[t+0]=n,e[t+1]=r,e[t+2]=i,e[t+3]=255}function gt(e,t,n,r){let i=255+(e[t]*.29889531+e[t+1]*.58662247+e[t+2]*.11448223-255)*n*e[t+3]/255;ht(r,t,i,i,i)}var _t=E((()=>{})),vt=D(((e,t)=>{let n=O(`util`),r=O(`stream`),i=t.exports=function(){r.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};n.inherits(i,r),i.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},i.prototype.write=function(e,t){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let n;return n=Buffer.isBuffer(e)?e:Buffer.from(e,t||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},i.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},i.prototype.destroySoon=i.prototype.end,i.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},i.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},i.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))},i.prototype._processRead=function(e){this._reads.shift();let t=0,n=0,r=Buffer.alloc(e.length);for(;t<e.length;){let i=this._buffers[n++],a=Math.min(i.length,e.length-t);i.copy(r,t,0,a),t+=a,a!==i.length&&(this._buffers[--n]=i.slice(a))}n>0&&this._buffers.splice(0,n),this._buffered-=e.length,e.func.call(this,r)},i.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit(`error`,e)}}})),yt=D((e=>{let t=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];e.getImagePasses=function(e,n){let r=[],i=e%8,a=n%8,o=(e-i)/8,s=(n-a)/8;for(let e=0;e<t.length;e++){let n=t[e],c=o*n.x.length,l=s*n.y.length;for(let e=0;e<n.x.length&&n.x[e]<i;e++)c++;for(let e=0;e<n.y.length&&n.y[e]<a;e++)l++;c>0&&l>0&&r.push({width:c,height:l,index:e})}return r},e.getInterlaceIterator=function(e){return function(n,r,i){let a=n%t[i].x.length,o=(n-a)/t[i].x.length*8+t[i].x[a],s=r%t[i].y.length,c=(r-s)/t[i].y.length*8+t[i].y[s];return o*4+c*e*4}}})),bt=D(((e,t)=>{t.exports=function(e,t,n){let r=e+t-n,i=Math.abs(r-e),a=Math.abs(r-t),o=Math.abs(r-n);return i<=a&&i<=o?e:a<=o?t:n}})),xt=D(((e,t)=>{let n=yt(),r=bt();function i(e,t,n){let r=e*t;return n!==8&&(r=Math.ceil(r/(8/n))),r}let a=t.exports=function(e,t){let r=e.width,a=e.height,o=e.interlace,s=e.bpp,c=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],o){let e=n.getImagePasses(r,a);for(let t=0;t<e.length;t++)this._images.push({byteWidth:i(e[t].width,s,c),height:e[t].height,lineIndex:0})}else this._images.push({byteWidth:i(r,s,c),height:a,lineIndex:0});this._xComparison=c===8?s:c===16?s*2:1};a.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},a.prototype._unFilterType1=function(e,t,n){let r=this._xComparison,i=r-1;for(let a=0;a<n;a++){let n=e[1+a],o=a>i?t[a-r]:0;t[a]=n+o}},a.prototype._unFilterType2=function(e,t,n){let r=this._lastLine;for(let i=0;i<n;i++){let n=e[1+i],a=r?r[i]:0;t[i]=n+a}},a.prototype._unFilterType3=function(e,t,n){let r=this._xComparison,i=r-1,a=this._lastLine;for(let o=0;o<n;o++){let n=e[1+o],s=a?a[o]:0,c=o>i?t[o-r]:0,l=Math.floor((c+s)/2);t[o]=n+l}},a.prototype._unFilterType4=function(e,t,n){let i=this._xComparison,a=i-1,o=this._lastLine;for(let s=0;s<n;s++){let n=e[1+s],c=o?o[s]:0,l=s>a?t[s-i]:0,u=s>a&&o?o[s-i]:0,d=r(l,c,u);t[s]=n+d}},a.prototype._reverseFilterLine=function(e){let t=e[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(t===0)n=e.slice(1,i+1);else switch(n=Buffer.alloc(i),t){case 1:this._unFilterType1(e,n,i);break;case 2:this._unFilterType2(e,n,i);break;case 3:this._unFilterType3(e,n,i);break;case 4:this._unFilterType4(e,n,i);break;default:throw Error(`Unrecognised filter type - `+t)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),St=D(((e,t)=>{let n=O(`util`),r=vt(),i=xt(),a=t.exports=function(e){r.call(this);let t=[],n=this;this._filter=new i(e,{read:this.read.bind(this),write:function(e){t.push(e)},complete:function(){n.emit(`complete`,Buffer.concat(t))}}),this._filter.start()};n.inherits(a,r)})),Ct=D(((e,t)=>{t.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),wt=D(((e,t)=>{let n=[];(function(){for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t&1?t=3988292384^t>>>1:t>>>=1;n[e]=t}})();let r=t.exports=function(){this._crc=-1};r.prototype.write=function(e){for(let t=0;t<e.length;t++)this._crc=n[(this._crc^e[t])&255]^this._crc>>>8;return!0},r.prototype.crc32=function(){return this._crc^-1},r.crc32=function(e){let t=-1;for(let r=0;r<e.length;r++)t=n[(t^e[r])&255]^t>>>8;return t^-1}})),Tt=D(((e,t)=>{let n=Ct(),r=wt(),i=t.exports=function(e,t){this._options=e,e.checkCRC=e.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[n.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[n.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[n.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[n.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[n.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[n.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};i.prototype.start=function(){this.read(n.PNG_SIGNATURE.length,this._parseSignature.bind(this))},i.prototype._parseSignature=function(e){let t=n.PNG_SIGNATURE;for(let n=0;n<t.length;n++)if(e[n]!==t[n]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},i.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),i=e.readUInt32BE(4),a=``;for(let t=4;t<8;t++)a+=String.fromCharCode(e[t]);let o=!!(e[4]&32);if(!this._hasIHDR&&i!==n.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new r,this._crc.write(Buffer.from(a)),this._chunks[i])return this._chunks[i](t);if(!o){this.error(Error(`Unsupported critical chunk type `+a));return}this.read(t+4,this._skipChunk.bind(this))},i.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},i.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==t){this.error(Error(`Crc error - `+t+` - `+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},i.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))},i.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i=e[8],a=e[9],o=e[10],s=e[11],c=e[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(Error(`Unsupported bit depth `+i));return}if(!(a in n.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(o!==0){this.error(Error(`Unsupported compression method`));return}if(s!==0){this.error(Error(`Unsupported filter method`));return}if(c!==0&&c!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=a;let l=n.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:i,interlace:!!c,palette:!!(a&n.COLORTYPE_PALETTE),color:!!(a&n.COLORTYPE_COLOR),alpha:!!(a&n.COLORTYPE_ALPHA),bpp:l,colorType:a}),this._handleChunkEnd()},i.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))},i.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let n=0;n<t;n++)this._palette.push([e[n*3],e[n*3+1],e[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},i.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))},i.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===n.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(e.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===n.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===n.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()},i.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))},i.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/n.GAMMA_DIVISION),this._handleChunkEnd()},i.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))},i.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===n.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()},i.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))},i.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),Et=D((e=>{let t=yt(),n=[function(){},function(e,t,n,r){if(r===t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=255},function(e,t,n,r){if(r+1>=t.length)throw Error(`Ran out of data`);let i=t[r];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=t[r+1]},function(e,t,n,r){if(r+2>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=255},function(e,t,n,r){if(r+3>=t.length)throw Error(`Ran out of data`);e[n]=t[r],e[n+1]=t[r+1],e[n+2]=t[r+2],e[n+3]=t[r+3]}],r=[function(){},function(e,t,n,r){let i=t[0];e[n]=i,e[n+1]=i,e[n+2]=i,e[n+3]=r},function(e,t,n){let r=t[0];e[n]=r,e[n+1]=r,e[n+2]=r,e[n+3]=t[1]},function(e,t,n,r){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=r},function(e,t,n){e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2],e[n+3]=t[3]}];function i(e,t){let n=[],r=0;function i(){if(r===e.length)throw Error(`Ran out of data`);let i=e[r];r++;let a,o,s,c,l,u,d,f;switch(t){default:throw Error(`unrecognised depth`);case 16:d=e[r],r++,n.push((i<<8)+d);break;case 4:d=i&15,f=i>>4,n.push(f,d);break;case 2:l=i&3,u=i>>2&3,d=i>>4&3,f=i>>6&3,n.push(f,d,u,l);break;case 1:a=i&1,o=i>>1&1,s=i>>2&1,c=i>>3&1,l=i>>4&1,u=i>>5&1,d=i>>6&1,f=i>>7&1,n.push(f,d,u,l,c,s,o,a)}}return{get:function(e){for(;n.length<e;)i();let t=n.slice(0,e);return n=n.slice(e),t},resetAfterLine:function(){n.length=0},end:function(){if(r!==e.length)throw Error(`extra data found`)}}}function a(e,t,r,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++)for(let c=0;c<s;c++){let s=r(c,e,l);n[i](t,a,s,o),o+=i}return o}function o(e,t,n,i,a,o){let s=e.width,c=e.height,l=e.index;for(let e=0;e<c;e++){for(let c=0;c<s;c++){let s=a.get(i),u=n(c,e,l);r[i](t,s,u,o)}a.resetAfterLine()}}e.dataToBitMap=function(e,n){let r=n.width,s=n.height,c=n.depth,l=n.bpp,u=n.interlace,d;c!==8&&(d=i(e,c));let f;f=c<=8?Buffer.alloc(r*s*4):new Uint16Array(r*s*4);let p=2**c-1,m=0,h,g;if(u)h=t.getImagePasses(r,s),g=t.getInterlaceIterator(r,s);else{let e=0;g=function(){let t=e;return e+=4,t},h=[{width:r,height:s}]}for(let t=0;t<h.length;t++)c===8?m=a(h[t],f,g,l,e,m):o(h[t],f,g,l,d,p);if(c===8){if(m!==e.length)throw Error(`extra data found`)}else d.end();return f}})),Dt=D(((e,t)=>{function n(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=i[e[a]];if(!n)throw Error(`index `+e[a]+` not in palette`);for(let e=0;e<4;e++)t[a+e]=n[e];a+=4}}function r(e,t,n,r,i){let a=0;for(let o=0;o<r;o++)for(let r=0;r<n;r++){let n=!1;if(i.length===1?i[0]===e[a]&&(n=!0):i[0]===e[a]&&i[1]===e[a+1]&&i[2]===e[a+2]&&(n=!0),n)for(let e=0;e<4;e++)t[a+e]=0;a+=4}}function i(e,t,n,r,i){let a=2**i-1,o=0;for(let i=0;i<r;i++)for(let r=0;r<n;r++){for(let n=0;n<4;n++)t[o+n]=Math.floor(e[o+n]*255/a+.5);o+=4}}t.exports=function(e,t,a=!1){let o=t.depth,s=t.width,c=t.height,l=t.colorType,u=t.transColor,d=t.palette,f=e;return l===3?n(e,f,s,c,d):(u&&r(e,f,s,c,u),o!==8&&!a&&(o===16&&(f=Buffer.alloc(s*c*4)),i(e,f,s,c,o))),f}})),Ot=D(((e,t)=>{let n=O(`util`),r=O(`zlib`),i=vt(),a=St(),o=Tt(),s=Et(),c=Dt(),l=t.exports=function(e){i.call(this),this._parser=new o(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};n.inherits(l,i),l.prototype._handleError=function(e){this.emit(`error`,e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},l.prototype._inflateData=function(e){if(!this._inflate){if(this._bitmapInfo.interlace)this._inflate=r.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let e=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(e,r.Z_MIN_CHUNK);this._inflate=r.createInflate({chunkSize:t});let n=e,i=this.emit.bind(this,`error`);this._inflate.on(`error`,function(e){n&&i(e)}),this._filter.on(`complete`,this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(e){n&&(e.length>n&&(e=e.slice(0,n)),n-=e.length,a(e))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}}this._inflate.write(e)},l.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new a(this._bitmapInfo)},l.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e},l.prototype._handlePalette=function(e){this._bitmapInfo.palette=e},l.prototype._simpleTransparency=function(){this._metaData.alpha=!0},l.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},l.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},l.prototype._complete=function(e){if(this.errord)return;let t;try{let n=s.dataToBitMap(e,this._bitmapInfo);t=c(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(e){this._handleError(e);return}this.emit(`parsed`,t)}})),kt=D(((e,t)=>{let n=Ct();t.exports=function(e,t,r,i){let a=[n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let t=(function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),new Int16Array(e)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&t)return e}let o=i.bitDepth===16?new Uint16Array(e.buffer):e,s=255,c=n.COLORTYPE_TO_BPP_MAP[i.inputColorType];c===4&&!i.inputHasAlpha&&(c=3);let l=n.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(s=65535,l*=2);let u=Buffer.alloc(t*r*l),d=0,f=0,p=i.bgColor||{};p.red===void 0&&(p.red=s),p.green===void 0&&(p.green=s),p.blue===void 0&&(p.blue=s);function m(){let e,t,r,c=s;switch(i.inputColorType){case n.COLORTYPE_COLOR_ALPHA:c=o[d+3],e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_COLOR:e=o[d],t=o[d+1],r=o[d+2];break;case n.COLORTYPE_ALPHA:c=o[d+1],e=o[d],t=e,r=e;break;case n.COLORTYPE_GRAYSCALE:e=o[d],t=e,r=e;break;default:throw Error(`input color type:`+i.inputColorType+` is not supported at present`)}return i.inputHasAlpha&&(a||(c/=s,e=Math.min(Math.max(Math.round((1-c)*p.red+c*e),0),s),t=Math.min(Math.max(Math.round((1-c)*p.green+c*t),0),s),r=Math.min(Math.max(Math.round((1-c)*p.blue+c*r),0),s))),{red:e,green:t,blue:r,alpha:c}}for(let e=0;e<r;e++)for(let e=0;e<t;e++){let e=m(o,d);switch(i.colorType){case n.COLORTYPE_COLOR_ALPHA:case n.COLORTYPE_COLOR:i.bitDepth===8?(u[f]=e.red,u[f+1]=e.green,u[f+2]=e.blue,a&&(u[f+3]=e.alpha)):(u.writeUInt16BE(e.red,f),u.writeUInt16BE(e.green,f+2),u.writeUInt16BE(e.blue,f+4),a&&u.writeUInt16BE(e.alpha,f+6));break;case n.COLORTYPE_ALPHA:case n.COLORTYPE_GRAYSCALE:{let t=(e.red+e.green+e.blue)/3;i.bitDepth===8?(u[f]=t,a&&(u[f+1]=e.alpha)):(u.writeUInt16BE(t,f),a&&u.writeUInt16BE(e.alpha,f+2));break}default:throw Error(`unrecognised color Type `+i.colorType)}d+=c,f+=l}return u}})),At=D(((e,t)=>{let n=bt();function r(e,t,n,r,i){for(let a=0;a<n;a++)r[i+a]=e[t+a]}function i(e,t,n){let r=0,i=t+n;for(let n=t;n<i;n++)r+=Math.abs(e[n]);return r}function a(e,t,n,r,i,a){for(let o=0;o<n;o++){let n=o>=a?e[t+o-a]:0,s=e[t+o]-n;r[i+o]=s}}function o(e,t,n,r){let i=0;for(let a=0;a<n;a++){let n=a>=r?e[t+a-r]:0,o=e[t+a]-n;i+=Math.abs(o)}return i}function s(e,t,n,r,i){for(let a=0;a<n;a++){let o=t>0?e[t+a-n]:0,s=e[t+a]-o;r[i+a]=s}}function c(e,t,n){let r=0,i=t+n;for(let a=t;a<i;a++){let i=t>0?e[a-n]:0,o=e[a]-i;r+=Math.abs(o)}return r}function l(e,t,n,r,i,a){for(let o=0;o<n;o++){let s=o>=a?e[t+o-a]:0,c=t>0?e[t+o-n]:0,l=e[t+o]-(s+c>>1);r[i+o]=l}}function u(e,t,n,r){let i=0;for(let a=0;a<n;a++){let o=a>=r?e[t+a-r]:0,s=t>0?e[t+a-n]:0,c=e[t+a]-(o+s>>1);i+=Math.abs(c)}return i}function d(e,t,r,i,a,o){for(let s=0;s<r;s++){let c=s>=o?e[t+s-o]:0,l=t>0?e[t+s-r]:0,u=t>0&&s>=o?e[t+s-(r+o)]:0,d=e[t+s]-n(c,l,u);i[a+s]=d}}function f(e,t,r,i){let a=0;for(let o=0;o<r;o++){let s=o>=i?e[t+o-i]:0,c=t>0?e[t+o-r]:0,l=t>0&&o>=i?e[t+o-(r+i)]:0,u=e[t+o]-n(s,c,l);a+=Math.abs(u)}return a}let p={0:r,1:a,2:s,3:l,4:d},m={0:i,1:o,2:c,3:u,4:f};t.exports=function(e,t,n,r,i){let a;if(!(`filterType`in r)||r.filterType===-1)a=[0,1,2,3,4];else if(typeof r.filterType==`number`)a=[r.filterType];else throw Error(`unrecognised filter types`);r.bitDepth===16&&(i*=2);let o=t*i,s=0,c=0,l=Buffer.alloc((o+1)*n),u=a[0];for(let t=0;t<n;t++){if(a.length>1){let t=1/0;for(let n=0;n<a.length;n++){let r=m[a[n]](e,c,o,i);r<t&&(u=a[n],t=r)}}l[s]=u,s++,p[u](e,c,o,l,s,i),s+=o,c+=o}return l}})),jt=D(((e,t)=>{let n=Ct(),r=wt(),i=kt(),a=At(),o=O(`zlib`),s=t.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32768,e.deflateLevel=e.deflateLevel==null?9:e.deflateLevel,e.deflateStrategy=e.deflateStrategy==null?3:e.deflateStrategy,e.inputHasAlpha=e.inputHasAlpha==null||e.inputHasAlpha,e.deflateFactory=e.deflateFactory||o.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType=typeof e.colorType==`number`?e.colorType:n.COLORTYPE_COLOR_ALPHA,e.inputColorType=typeof e.inputColorType==`number`?e.inputColorType:n.COLORTYPE_COLOR_ALPHA,[n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.colorType)===-1)throw Error(`option color type:`+e.colorType+` is not supported at present`);if([n.COLORTYPE_GRAYSCALE,n.COLORTYPE_COLOR,n.COLORTYPE_COLOR_ALPHA,n.COLORTYPE_ALPHA].indexOf(e.inputColorType)===-1)throw Error(`option input color type:`+e.inputColorType+` is not supported at present`);if(e.bitDepth!==8&&e.bitDepth!==16)throw Error(`option bit depth:`+e.bitDepth+` is not supported at present`)};s.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},s.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},s.prototype.filterData=function(e,t,r){let o=i(e,t,r,this._options),s=n.COLORTYPE_TO_BPP_MAP[this._options.colorType];return a(o,t,r,this._options,s)},s.prototype._packChunk=function(e,t){let n=t?t.length:0,i=Buffer.alloc(n+12);return i.writeUInt32BE(n,0),i.writeUInt32BE(e,4),t&&t.copy(i,8),i.writeInt32BE(r.crc32(i.slice(4,i.length-4)),i.length-4),i},s.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*n.GAMMA_DIVISION),0),this._packChunk(n.TYPE_gAMA,t)},s.prototype.packIHDR=function(e,t){let r=Buffer.alloc(13);return r.writeUInt32BE(e,0),r.writeUInt32BE(t,4),r[8]=this._options.bitDepth,r[9]=this._options.colorType,r[10]=0,r[11]=0,r[12]=0,this._packChunk(n.TYPE_IHDR,r)},s.prototype.packIDAT=function(e){return this._packChunk(n.TYPE_IDAT,e)},s.prototype.packIEND=function(){return this._packChunk(n.TYPE_IEND,null)}})),Mt=D(((e,t)=>{let n=O(`util`),r=O(`stream`),i=Ct(),a=jt(),o=t.exports=function(e){r.call(this);let t=e||{};this._packer=new a(t),this._deflate=this._packer.createDeflate(),this.readable=!0};n.inherits(o,r),o.prototype.pack=function(e,t,n,r){this.emit(`data`,Buffer.from(i.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(t,n)),r&&this.emit(`data`,this._packer.packGAMA(r));let a=this._packer.filterData(e,t,n);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(e){this.emit(`data`,this._packer.packIDAT(e))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(a)}})),Nt=D(((e,t)=>{let n=O(`assert`).ok,r=O(`zlib`),i=O(`util`),a=O(`buffer`).kMaxLength;function o(e){if(!(this instanceof o))return new o(e);e&&e.chunkSize<r.Z_MIN_CHUNK&&(e.chunkSize=r.Z_MIN_CHUNK),r.Inflate.call(this,e),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&e.maxLength!=null&&(this._maxLength=e.maxLength)}function s(e){return new o(e)}function c(e,t){t&&process.nextTick(t),e._handle&&=(e._handle.close(),null)}o.prototype._processChunk=function(e,t,i){if(typeof i==`function`)return r.Inflate._processChunk.call(this,e,t,i);let o=this,s=e&&e.length,l=this._chunkSize-this._offset,u=this._maxLength,d=0,f=[],p=0,m;this.on(`error`,function(e){m=e});function h(e,t){if(o._hadError)return;let r=l-t;if(n(r>=0,`have should not go down`),r>0){let e=o._buffer.slice(o._offset,o._offset+r);if(o._offset+=r,e.length>u&&(e=e.slice(0,u)),f.push(e),p+=e.length,u-=e.length,u===0)return!1}return(t===0||o._offset>=o._chunkSize)&&(l=o._chunkSize,o._offset=0,o._buffer=Buffer.allocUnsafe(o._chunkSize)),t===0&&(d+=s-e,s=e,!0)}n(this._handle,`zlib binding closed`);let g;do g=this._handle.writeSync(t,e,d,s,this._buffer,this._offset,l),g||=this._writeState;while(!this._hadError&&h(g[0],g[1]));if(this._hadError)throw m;if(p>=a)throw c(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+a.toString(16)+` bytes`);let _=Buffer.concat(f,p);return c(this),_},i.inherits(o,r.Inflate);function l(e,t){if(typeof t==`string`&&(t=Buffer.from(t)),!(t instanceof Buffer))throw TypeError(`Not a string or buffer`);let n=e._finishFlushFlag;return n??=r.Z_FINISH,e._processChunk(t,n)}function u(e,t){return l(new o(t),e)}t.exports=e=u,e.Inflate=o,e.createInflate=s,e.inflateSync=u})),Pt=D(((e,t)=>{let n=t.exports=function(e){this._buffer=e,this._reads=[]};n.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})},n.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),Ft=D((e=>{let t=Pt(),n=xt();e.process=function(e,r){let i=[],a=new t(e);return new n(r,{read:a.read.bind(a),write:function(e){i.push(e)},complete:function(){}}).start(),a.process(),Buffer.concat(i)}})),It=D(((e,t)=>{let n=!0,r=O(`zlib`),i=Nt();r.deflateSync||(n=!1);let a=Pt(),o=Ft(),s=Tt(),c=Et(),l=Dt();t.exports=function(e,t){if(!n)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let u;function d(e){u=e}let f;function p(e){f=e}function m(e){f.transColor=e}function h(e){f.palette=e}function g(){f.alpha=!0}let _;function v(e){_=e}let y=[];function b(e){y.push(e)}let ee=new a(e);if(new s(t,{read:ee.read.bind(ee),error:d,metadata:p,gamma:v,palette:h,transColor:m,inflateData:b,simpleTransparency:g}).start(),ee.process(),u)throw u;let x=Buffer.concat(y);y.length=0;let S;if(f.interlace)S=r.inflateSync(x);else{let e=((f.width*f.bpp*f.depth+7>>3)+1)*f.height;S=i(x,{chunkSize:e,maxLength:e})}if(x=null,!S||!S.length)throw Error(`bad png - invalid inflate data response`);let te=o.process(S,f);x=null;let ne=c.dataToBitMap(te,f);te=null;let re=l(ne,f,t.skipRescale);return f.data=re,f.gamma=_||0,f}})),Lt=D(((e,t)=>{let n=!0,r=O(`zlib`);r.deflateSync||(n=!1);let i=Ct(),a=jt();t.exports=function(e,t){if(!n)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let o=new a(t||{}),s=[];s.push(Buffer.from(i.PNG_SIGNATURE)),s.push(o.packIHDR(e.width,e.height)),e.gamma&&s.push(o.packGAMA(e.gamma));let c=o.filterData(e.data,e.width,e.height),l=r.deflateSync(c,o.getDeflateOptions());if(c=null,!l||!l.length)throw Error(`bad png - invalid compressed data response`);return s.push(o.packIDAT(l)),s.push(o.packIEND()),Buffer.concat(s)}})),Rt=D((e=>{let t=It(),n=Lt();e.read=function(e,n){return t(e,n||{})},e.write=function(e,t){return n(e,t)}})),zt=D((e=>{let t=O(`util`),n=O(`stream`),r=Ot(),i=Mt(),a=Rt(),o=e.PNG=function(e){n.call(this),e||={},this.width=e.width|0,this.height=e.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new r(e),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(e){this.data=e,this.emit(`parsed`,e)}.bind(this)),this._packer=new i(e),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};t.inherits(o,n),o.sync=a,o.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},o.prototype.parse=function(e,t){if(t){let e,n;e=function(e){this.removeListener(`error`,n),this.data=e,t(null,this)}.bind(this),n=function(n){this.removeListener(`parsed`,e),t(n,null)}.bind(this),this.once(`parsed`,e),this.once(`error`,n)}return this.end(e),this},o.prototype.write=function(e){return this._parser.write(e),!0},o.prototype.end=function(e){this._parser.end(e)},o.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit(`metadata`,e)},o.prototype._gamma=function(e){this.gamma=e},o.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},o.bitblt=function(e,t,n,r,i,a,o,s){if(n|=0,r|=0,i|=0,a|=0,o|=0,s|=0,n>e.width||r>e.height||n+i>e.width||r+a>e.height)throw Error(`bitblt reading outside image`);if(o>t.width||s>t.height||o+i>t.width||s+a>t.height)throw Error(`bitblt writing outside image`);for(let c=0;c<a;c++)e.data.copy(t.data,(s+c)*t.width+o<<2,(r+c)*e.width+n<<2,(r+c)*e.width+n+i<<2)},o.prototype.bitblt=function(e,t,n,r,i,a,s){return o.bitblt(this,e,t,n,r,i,a,s),this},o.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++){let r=e.width*t+n<<2;for(let t=0;t<3;t++){let n=e.data[r+t]/255;n**=1/2.2/e.gamma,e.data[r+t]=Math.round(n*255)}}e.gamma=0}},o.prototype.adjustGamma=function(){o.adjustGamma(this)}}));function M(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}function Bt(e){return e&&Object.assign(Ut,e),Ut}var Vt,Ht,Ut,Wt=E((()=>{Object.freeze({status:`aborted`}),Vt=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ht=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}},Ut={}}));function Gt(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Kt(e,t){return typeof t==`bigint`?t.toString():t}function qt(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Jt(e){return e==null}function Yt(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Xt(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=t.toString(),i=(r.split(`.`)[1]||``).length;if(i===0&&/\d?e-\d?/.test(r)){let e=r.match(/\d?e-(\d?)/);e?.[1]&&(i=Number.parseInt(e[1]))}let a=n>i?n:i;return Number.parseInt(e.toFixed(a).replace(`.`,``))%Number.parseInt(t.toFixed(a).replace(`.`,``))/10**a}function N(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==xn)return r===void 0&&(r=xn,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function Zt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Qt(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function $t(e){return JSON.stringify(e)}function en(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}function tn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function nn(e){if(tn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return tn(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function rn(e){return nn(e)?{...e}:Array.isArray(e)?[...e]:e}function an(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function on(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function P(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function sn(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}function cn(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return on(e,Qt(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return Zt(this,`shape`,e),e},checks:[]}))}function ln(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return on(e,Qt(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return Zt(this,`shape`,r),r},checks:[]}))}function un(e,t){if(!nn(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Zt(this,`shape`,n),n}}))}function dn(e,t){if(!nn(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Zt(this,`shape`,n),n}}))}function fn(e,t){return on(e,Qt(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Zt(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:[]}))}function pn(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return on(t,Qt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return Zt(this,`shape`,i),i},checks:[]}))}function mn(e,t,n){return on(t,Qt(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return Zt(this,`shape`,i),i}}))}function hn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function gn(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function _n(e){return typeof e==`string`?e:e?.message}function vn(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=_n(e.inst?._zod.def?.error?.(e))??_n(t?.error?.(e))??_n(n.customError?.(e))??_n(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function yn(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function bn(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var xn,Sn,Cn,wn,Tn,En=E((()=>{xn=Symbol(`evaluating`),Sn=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{},Cn=qt(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}}),wn=new Set([`string`,`number`,`symbol`]),Tn={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}}));function Dn(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function On(e,t=e=>e.message){let n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`&&i.errors.length)i.errors.map(e=>r({issues:e}));else if(i.code===`invalid_key`)r({issues:i.issues});else if(i.code===`invalid_element`)r({issues:i.issues});else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}var kn,An,jn,Mn=E((()=>{Wt(),En(),kn=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Kt,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},An=M(`$ZodError`,kn),jn=M(`$ZodError`,kn,{Parent:Error})})),Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn=E((()=>{Wt(),Mn(),En(),Nn=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Vt;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>vn(e,a,Bt())));throw Sn(t,i?.callee),t}return o.value},Pn=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>vn(e,a,Bt())));throw Sn(t,i?.callee),t}return o.value},Fn=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Vt;return a.issues.length?{success:!1,error:new(e??An)(a.issues.map(e=>vn(e,i,Bt())))}:{success:!0,data:a.value}},In=Fn(jn),Ln=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>vn(e,i,Bt())))}:{success:!0,data:a.value}},Rn=Ln(jn),zn=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Nn(e)(t,n,i)},Bn=e=>(t,n,r)=>Nn(e)(t,n,r),Vn=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Pn(e)(t,n,i)},Hn=e=>async(t,n,r)=>Pn(e)(t,n,r),Un=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Fn(e)(t,n,i)},Wn=e=>(t,n,r)=>Fn(e)(t,n,r),Gn=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Ln(e)(t,n,i)},Kn=e=>async(t,n,r)=>Ln(e)(t,n,r)}));function Jn(){return new RegExp(cr,`u`)}function Yn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Xn(e){return RegExp(`^${Yn(e)}$`)}function Zn(e){let t=Yn({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${gr}T(?:${r})$`)}var Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr=E((()=>{Qn=/^[cC][^\s-]{8,}$/,$n=/^[0-9a-z]+$/,er=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,tr=/^[0-9a-vA-V]{20}$/,nr=/^[A-Za-z0-9]{27}$/,rr=/^[a-zA-Z0-9_-]{21}$/,ir=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ar=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,or=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,sr=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,cr=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,lr=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ur=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,dr=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,fr=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pr=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mr=/^[A-Za-z0-9_-]*$/,hr=/^\+[1-9]\d{6,14}$/,gr=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,_r=RegExp(`^${gr}$`),vr=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},yr=/^-?\d+$/,br=/^-?\d+(?:\.\d+)?$/,xr=/^(?:true|false)$/i,Sr=/^[^A-Z]*$/,Cr=/^[^a-z]*$/})),Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr,Fr,Ir,Lr,Rr,zr,Br,Vr,Hr=E((()=>{Wt(),wr(),En(),Tr=M(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Er={number:`number`,bigint:`bigint`,object:`date`},Dr=M(`$ZodCheckLessThan`,(e,t)=>{Tr.init(e,t);let n=Er[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Or=M(`$ZodCheckGreaterThan`,(e,t)=>{Tr.init(e,t);let n=Er[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),kr=M(`$ZodCheckMultipleOf`,(e,t)=>{Tr.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):Xt(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ar=M(`$ZodCheckNumberFormat`,(e,t)=>{Tr.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Tn[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=yr)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),jr=M(`$ZodCheckMaxLength`,(e,t)=>{var n;Tr.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=yn(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Mr=M(`$ZodCheckMinLength`,(e,t)=>{var n;Tr.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=yn(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Nr=M(`$ZodCheckLengthEquals`,(e,t)=>{var n;Tr.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Jt(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=yn(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Pr=M(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Tr.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Fr=M(`$ZodCheckRegex`,(e,t)=>{Pr.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Ir=M(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Sr,Pr.init(e,t)}),Lr=M(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Cr,Pr.init(e,t)}),Rr=M(`$ZodCheckIncludes`,(e,t)=>{Tr.init(e,t);let n=an(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),zr=M(`$ZodCheckStartsWith`,(e,t)=>{Tr.init(e,t);let n=RegExp(`^${an(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Br=M(`$ZodCheckEndsWith`,(e,t)=>{Tr.init(e,t);let n=RegExp(`.*${an(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Vr=M(`$ZodCheckOverwrite`,(e,t)=>{Tr.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}})})),Ur,Wr=E((()=>{Ur=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
251
251
|
`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
|
|
252
|
-
`))}}})),Wr,Gr=T((()=>{Wr={major:4,minor:3,patch:6}}));function Kr(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}function qr(e){if(!mr.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Kr(t.padEnd(Math.ceil(t.length/4)*4,`=`))}function Jr(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}function Yr(e,t,n){e.issues.length&&t.issues.push(...gn(n,e.issues)),t.value[n]=e.value}function Xr(e,t,n,r,i){if(e.issues.length){if(i&&!(n in r))return;t.issues.push(...gn(n,e.issues))}e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function Zr(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=sn(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Qr(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optout===`optional`;for(let i in t){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Xr(e,n,i,t,u))):Xr(a,n,i,t,u)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}function $r(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!hn(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>vn(e,r,Bt())))}),t)}function ei(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(nn(e)&&nn(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=ei(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=ei(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function ti(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),hn(e))return e;let o=ei(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}function ni(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}function ri(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}function ii(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function ai(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}function oi(e){return e.value=Object.freeze(e.value),e}function si(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(bn(e))}}var F,ci,I,li,ui,di,fi,pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii,Li,Ri,zi,Bi,Vi,Hi,Ui,Wi,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,ra=T((()=>{Vr(),Wt(),Ur(),qn(),wr(),En(),Gr(),F=j(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Wr;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=hn(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new Vt;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=hn(e,t))});else{if(e.issues.length===t)continue;r||=hn(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(hn(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new Vt;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new Vt;return o.then(e=>t(e,r,a))}return t(o,r,a)}}M(e,`~standard`,()=>({validate:t=>{try{let n=In(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Rn(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),ci=j(`$ZodString`,(e,t)=>{F.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??vr(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),I=j(`$ZodStringFormat`,(e,t)=>{Nr.init(e,t),ci.init(e,t)}),li=j(`$ZodGUID`,(e,t)=>{t.pattern??=ar,I.init(e,t)}),ui=j(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=or(e)}else t.pattern??=or();I.init(e,t)}),di=j(`$ZodEmail`,(e,t)=>{t.pattern??=sr,I.init(e,t)}),fi=j(`$ZodURL`,(e,t)=>{I.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),pi=j(`$ZodEmoji`,(e,t)=>{t.pattern??=Jn(),I.init(e,t)}),mi=j(`$ZodNanoID`,(e,t)=>{t.pattern??=rr,I.init(e,t)}),hi=j(`$ZodCUID`,(e,t)=>{t.pattern??=Qn,I.init(e,t)}),gi=j(`$ZodCUID2`,(e,t)=>{t.pattern??=$n,I.init(e,t)}),_i=j(`$ZodULID`,(e,t)=>{t.pattern??=er,I.init(e,t)}),vi=j(`$ZodXID`,(e,t)=>{t.pattern??=tr,I.init(e,t)}),yi=j(`$ZodKSUID`,(e,t)=>{t.pattern??=nr,I.init(e,t)}),bi=j(`$ZodISODateTime`,(e,t)=>{t.pattern??=Zn(t),I.init(e,t)}),xi=j(`$ZodISODate`,(e,t)=>{t.pattern??=_r,I.init(e,t)}),Si=j(`$ZodISOTime`,(e,t)=>{t.pattern??=Xn(t),I.init(e,t)}),Ci=j(`$ZodISODuration`,(e,t)=>{t.pattern??=ir,I.init(e,t)}),wi=j(`$ZodIPv4`,(e,t)=>{t.pattern??=lr,I.init(e,t),e._zod.bag.format=`ipv4`}),Ti=j(`$ZodIPv6`,(e,t)=>{t.pattern??=ur,I.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Ei=j(`$ZodCIDRv4`,(e,t)=>{t.pattern??=dr,I.init(e,t)}),Di=j(`$ZodCIDRv6`,(e,t)=>{t.pattern??=fr,I.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}}),Oi=j(`$ZodBase64`,(e,t)=>{t.pattern??=pr,I.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Kr(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),ki=j(`$ZodBase64URL`,(e,t)=>{t.pattern??=mr,I.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{qr(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Ai=j(`$ZodE164`,(e,t)=>{t.pattern??=hr,I.init(e,t)}),ji=j(`$ZodJWT`,(e,t)=>{I.init(e,t),e._zod.check=n=>{Jr(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Mi=j(`$ZodNumber`,(e,t)=>{F.init(e,t),e._zod.pattern=e._zod.bag.pattern??br,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Ni=j(`$ZodNumberFormat`,(e,t)=>{kr.init(e,t),Mi.init(e,t)}),Pi=j(`$ZodBoolean`,(e,t)=>{F.init(e,t),e._zod.pattern=xr,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Fi=j(`$ZodUnknown`,(e,t)=>{F.init(e,t),e._zod.parse=e=>e}),Ii=j(`$ZodNever`,(e,t)=>{F.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)}),Li=j(`$ZodArray`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Yr(t,n,e))):Yr(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}}),Ri=j(`$ZodObject`,(e,t)=>{if(F.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=qt(()=>Zr(t));M(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=tn,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optout===`optional`,i=n._zod.run({value:s[e],issues:[]},o);i instanceof Promise?c.push(i.then(n=>Xr(n,t,e,s,r))):Xr(i,t,e,s,r)}return i?Qr(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),zi=j(`$ZodObjectJIT`,(e,t)=>{Ri.init(e,t);let n=e._zod.parse,r=qt(()=>Zr(t)),i=e=>{let t=new Hr([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=$t(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=$t(r),s=e[r]?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),s?t.write(`
|
|
252
|
+
`))}}})),Gr,Kr=E((()=>{Gr={major:4,minor:3,patch:6}}));function qr(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}function Jr(e){if(!mr.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return qr(t.padEnd(Math.ceil(t.length/4)*4,`=`))}function Yr(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}function Xr(e,t,n){e.issues.length&&t.issues.push(...gn(n,e.issues)),t.value[n]=e.value}function Zr(e,t,n,r,i){if(e.issues.length){if(i&&!(n in r))return;t.issues.push(...gn(n,e.issues))}e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function Qr(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=sn(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function $r(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optout===`optional`;for(let i in t){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Zr(e,n,i,t,u))):Zr(a,n,i,t,u)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}function ei(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!hn(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>vn(e,r,Bt())))}),t)}function ti(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(nn(e)&&nn(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=ti(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=ti(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function ni(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),hn(e))return e;let o=ti(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}function ri(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}function ii(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}function ai(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function oi(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}function si(e){return e.value=Object.freeze(e.value),e}function ci(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(bn(e))}}var F,li,I,ui,di,fi,pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii,Li,Ri,zi,Bi,Vi,Hi,Ui,Wi,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i,ea,ta,na,ra,ia=E((()=>{Hr(),Wt(),Wr(),qn(),wr(),En(),Kr(),F=M(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Gr;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=hn(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new Vt;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=hn(e,t))});else{if(e.issues.length===t)continue;r||=hn(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(hn(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new Vt;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new Vt;return o.then(e=>t(e,r,a))}return t(o,r,a)}}N(e,`~standard`,()=>({validate:t=>{try{let n=In(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Rn(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),li=M(`$ZodString`,(e,t)=>{F.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??vr(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),I=M(`$ZodStringFormat`,(e,t)=>{Pr.init(e,t),li.init(e,t)}),ui=M(`$ZodGUID`,(e,t)=>{t.pattern??=ar,I.init(e,t)}),di=M(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=or(e)}else t.pattern??=or();I.init(e,t)}),fi=M(`$ZodEmail`,(e,t)=>{t.pattern??=sr,I.init(e,t)}),pi=M(`$ZodURL`,(e,t)=>{I.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),mi=M(`$ZodEmoji`,(e,t)=>{t.pattern??=Jn(),I.init(e,t)}),hi=M(`$ZodNanoID`,(e,t)=>{t.pattern??=rr,I.init(e,t)}),gi=M(`$ZodCUID`,(e,t)=>{t.pattern??=Qn,I.init(e,t)}),_i=M(`$ZodCUID2`,(e,t)=>{t.pattern??=$n,I.init(e,t)}),vi=M(`$ZodULID`,(e,t)=>{t.pattern??=er,I.init(e,t)}),yi=M(`$ZodXID`,(e,t)=>{t.pattern??=tr,I.init(e,t)}),bi=M(`$ZodKSUID`,(e,t)=>{t.pattern??=nr,I.init(e,t)}),xi=M(`$ZodISODateTime`,(e,t)=>{t.pattern??=Zn(t),I.init(e,t)}),Si=M(`$ZodISODate`,(e,t)=>{t.pattern??=_r,I.init(e,t)}),Ci=M(`$ZodISOTime`,(e,t)=>{t.pattern??=Xn(t),I.init(e,t)}),wi=M(`$ZodISODuration`,(e,t)=>{t.pattern??=ir,I.init(e,t)}),Ti=M(`$ZodIPv4`,(e,t)=>{t.pattern??=lr,I.init(e,t),e._zod.bag.format=`ipv4`}),Ei=M(`$ZodIPv6`,(e,t)=>{t.pattern??=ur,I.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Di=M(`$ZodCIDRv4`,(e,t)=>{t.pattern??=dr,I.init(e,t)}),Oi=M(`$ZodCIDRv6`,(e,t)=>{t.pattern??=fr,I.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}}),ki=M(`$ZodBase64`,(e,t)=>{t.pattern??=pr,I.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{qr(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),Ai=M(`$ZodBase64URL`,(e,t)=>{t.pattern??=mr,I.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Jr(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),ji=M(`$ZodE164`,(e,t)=>{t.pattern??=hr,I.init(e,t)}),Mi=M(`$ZodJWT`,(e,t)=>{I.init(e,t),e._zod.check=n=>{Yr(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Ni=M(`$ZodNumber`,(e,t)=>{F.init(e,t),e._zod.pattern=e._zod.bag.pattern??br,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Pi=M(`$ZodNumberFormat`,(e,t)=>{Ar.init(e,t),Ni.init(e,t)}),Fi=M(`$ZodBoolean`,(e,t)=>{F.init(e,t),e._zod.pattern=xr,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ii=M(`$ZodUnknown`,(e,t)=>{F.init(e,t),e._zod.parse=e=>e}),Li=M(`$ZodNever`,(e,t)=>{F.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)}),Ri=M(`$ZodArray`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>Xr(t,n,e))):Xr(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}}),zi=M(`$ZodObject`,(e,t)=>{if(F.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=qt(()=>Qr(t));N(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=tn,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optout===`optional`,i=n._zod.run({value:s[e],issues:[]},o);i instanceof Promise?c.push(i.then(n=>Zr(n,t,e,s,r))):Zr(i,t,e,s,r)}return i?$r(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Bi=M(`$ZodObjectJIT`,(e,t)=>{zi.init(e,t);let n=e._zod.parse,r=qt(()=>Qr(t)),i=e=>{let t=new Ur([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=$t(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=$t(r),s=e[r]?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),s?t.write(`
|
|
253
253
|
if (${n}.issues.length) {
|
|
254
254
|
if (${o} in input) {
|
|
255
255
|
payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
@@ -283,9 +283,9 @@ ${r} - env:
|
|
|
283
283
|
newResult[${o}] = ${n}.value;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
-
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=tn,s=!Ut.jitless,c=s&&Cn.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?Qr([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}}),Bi=j(`$ZodUnion`,(e,t)=>{F.init(e,t),M(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),M(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),M(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),M(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>Yt(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>$r(t,i,e,a)):$r(s,i,e,a)}}),Vi=j(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Bi.init(e,t);let n=e._zod.parse;M(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=qt(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!tn(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),Hi=j(`$ZodIntersection`,(e,t)=>{F.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>ti(e,t,n)):ti(e,i,a)}}),Ui=j(`$ZodRecord`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!nn(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){s.add(typeof e==`number`?e.toString():e);let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...gn(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...gn(e,o.issues)),n.value[e]=o.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&br.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(s=e)}if(s.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>vn(e,r,Bt())),input:o,path:[o],inst:e});continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...gn(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...gn(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Wi=j(`$ZodEnum`,(e,t)=>{F.init(e,t);let n=Gt(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>wn.has(typeof e)).map(e=>typeof e==`string`?an(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Gi=j(`$ZodLiteral`,(e,t)=>{if(F.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?an(e):e?an(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Ki=j(`$ZodTransform`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ht(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new Vt;return n.value=i,n}}),qi=j(`$ZodOptional`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,M(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),M(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Yt(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>ni(t,e.value)):ni(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),Ji=j(`$ZodExactOptional`,(e,t)=>{qi.init(e,t),M(e._zod,`values`,()=>t.innerType._zod.values),M(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Yi=j(`$ZodNullable`,(e,t)=>{F.init(e,t),M(e._zod,`optin`,()=>t.innerType._zod.optin),M(e._zod,`optout`,()=>t.innerType._zod.optout),M(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Yt(e.source)}|null)$`):void 0}),M(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Xi=j(`$ZodDefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,M(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>ri(e,t)):ri(r,t)}}),Zi=j(`$ZodPrefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,M(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Qi=j(`$ZodNonOptional`,(e,t)=>{F.init(e,t),M(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>ii(t,e)):ii(i,e)}}),$i=j(`$ZodCatch`,(e,t)=>{F.init(e,t),M(e._zod,`optin`,()=>t.innerType._zod.optin),M(e._zod,`optout`,()=>t.innerType._zod.optout),M(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>vn(e,n,Bt()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>vn(e,n,Bt()))},input:e.value}),e.issues=[]),e)}}),ea=j(`$ZodPipe`,(e,t)=>{F.init(e,t),M(e._zod,`values`,()=>t.in._zod.values),M(e._zod,`optin`,()=>t.in._zod.optin),M(e._zod,`optout`,()=>t.out._zod.optout),M(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>ai(e,t.in,n)):ai(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>ai(e,t.out,n)):ai(r,t.out,n)}}),ta=j(`$ZodReadonly`,(e,t)=>{F.init(e,t),M(e._zod,`propValues`,()=>t.innerType._zod.propValues),M(e._zod,`values`,()=>t.innerType._zod.values),M(e._zod,`optin`,()=>t.innerType?._zod?.optin),M(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(oi):oi(r)}}),na=j(`$ZodCustom`,(e,t)=>{P.init(e,t),F.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>si(t,n,r,e));si(i,n,r,e)}})}));function ia(){return new oa}var aa,oa,sa,ca=T((()=>{oa=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}},(aa=globalThis).__zod_globalRegistry??(aa.__zod_globalRegistry=ia()),sa=globalThis.__zod_globalRegistry}));function la(e,t){return new e({type:`string`,...N(t)})}function ua(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...N(t)})}function da(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...N(t)})}function fa(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...N(t)})}function pa(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...N(t)})}function ma(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...N(t)})}function ha(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...N(t)})}function ga(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...N(t)})}function _a(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...N(t)})}function va(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...N(t)})}function ya(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...N(t)})}function ba(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...N(t)})}function xa(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...N(t)})}function Sa(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...N(t)})}function Ca(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...N(t)})}function wa(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...N(t)})}function Ta(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...N(t)})}function Ea(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...N(t)})}function Da(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...N(t)})}function Oa(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...N(t)})}function ka(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...N(t)})}function Aa(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...N(t)})}function ja(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...N(t)})}function Ma(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...N(t)})}function Na(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...N(t)})}function Pa(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...N(t)})}function Fa(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...N(t)})}function Ia(e,t){return new e({type:`number`,checks:[],...N(t)})}function La(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...N(t)})}function Ra(e,t){return new e({type:`boolean`,...N(t)})}function za(e){return new e({type:`unknown`})}function Ba(e,t){return new e({type:`never`,...N(t)})}function Va(e,t){return new Er({check:`less_than`,...N(t),value:e,inclusive:!1})}function Ha(e,t){return new Er({check:`less_than`,...N(t),value:e,inclusive:!0})}function Ua(e,t){return new Dr({check:`greater_than`,...N(t),value:e,inclusive:!1})}function Wa(e,t){return new Dr({check:`greater_than`,...N(t),value:e,inclusive:!0})}function Ga(e,t){return new Or({check:`multiple_of`,...N(t),value:e})}function Ka(e,t){return new Ar({check:`max_length`,...N(t),maximum:e})}function qa(e,t){return new jr({check:`min_length`,...N(t),minimum:e})}function Ja(e,t){return new Mr({check:`length_equals`,...N(t),length:e})}function Ya(e,t){return new Pr({check:`string_format`,format:`regex`,...N(t),pattern:e})}function Xa(e){return new Fr({check:`string_format`,format:`lowercase`,...N(e)})}function Za(e){return new Ir({check:`string_format`,format:`uppercase`,...N(e)})}function Qa(e,t){return new Lr({check:`string_format`,format:`includes`,...N(t),includes:e})}function $a(e,t){return new Rr({check:`string_format`,format:`starts_with`,...N(t),prefix:e})}function eo(e,t){return new zr({check:`string_format`,format:`ends_with`,...N(t),suffix:e})}function to(e){return new Br({check:`overwrite`,tx:e})}function no(e){return to(t=>t.normalize(e))}function ro(){return to(e=>e.trim())}function io(){return to(e=>e.toLowerCase())}function ao(){return to(e=>e.toUpperCase())}function oo(){return to(e=>en(e))}function so(e,t,n){return new e({type:`array`,element:t,...N(n)})}function co(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...N(n)})}function lo(e){let t=uo(n=>(n.addIssue=e=>{if(typeof e==`string`)n.issues.push(bn(e,n.value,t._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=n.value,r.inst??=t,r.continue??=!t._zod.def.abort,n.issues.push(bn(r))}},e(n.value,n)));return t}function uo(e,t){let n=new P({check:`custom`,...N(t)});return n._zod.check=e,n}var fo=T((()=>{Vr(),En()}));function po(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??sa,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function L(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,L(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&R(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&o.schema._prefault&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function mo(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
286
|
+
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=tn,s=!Ut.jitless,c=s&&Cn.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?$r([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}}),Vi=M(`$ZodUnion`,(e,t)=>{F.init(e,t),N(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),N(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),N(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),N(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>Yt(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>ei(t,i,e,a)):ei(s,i,e,a)}}),Hi=M(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Vi.init(e,t);let n=e._zod.parse;N(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=qt(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!tn(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),Ui=M(`$ZodIntersection`,(e,t)=>{F.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>ni(e,t,n)):ni(e,i,a)}}),Wi=M(`$ZodRecord`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!nn(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){s.add(typeof e==`number`?e.toString():e);let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...gn(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...gn(e,o.issues)),n.value[e]=o.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&br.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(s=e)}if(s.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>vn(e,r,Bt())),input:o,path:[o],inst:e});continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...gn(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...gn(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Gi=M(`$ZodEnum`,(e,t)=>{F.init(e,t);let n=Gt(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>wn.has(typeof e)).map(e=>typeof e==`string`?an(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Ki=M(`$ZodLiteral`,(e,t)=>{if(F.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?an(e):e?an(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),qi=M(`$ZodTransform`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ht(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new Vt;return n.value=i,n}}),Ji=M(`$ZodOptional`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,N(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),N(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Yt(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>ri(t,e.value)):ri(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),Yi=M(`$ZodExactOptional`,(e,t)=>{Ji.init(e,t),N(e._zod,`values`,()=>t.innerType._zod.values),N(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Xi=M(`$ZodNullable`,(e,t)=>{F.init(e,t),N(e._zod,`optin`,()=>t.innerType._zod.optin),N(e._zod,`optout`,()=>t.innerType._zod.optout),N(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${Yt(e.source)}|null)$`):void 0}),N(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Zi=M(`$ZodDefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,N(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>ii(e,t)):ii(r,t)}}),Qi=M(`$ZodPrefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,N(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),$i=M(`$ZodNonOptional`,(e,t)=>{F.init(e,t),N(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>ai(t,e)):ai(i,e)}}),ea=M(`$ZodCatch`,(e,t)=>{F.init(e,t),N(e._zod,`optin`,()=>t.innerType._zod.optin),N(e._zod,`optout`,()=>t.innerType._zod.optout),N(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>vn(e,n,Bt()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>vn(e,n,Bt()))},input:e.value}),e.issues=[]),e)}}),ta=M(`$ZodPipe`,(e,t)=>{F.init(e,t),N(e._zod,`values`,()=>t.in._zod.values),N(e._zod,`optin`,()=>t.in._zod.optin),N(e._zod,`optout`,()=>t.out._zod.optout),N(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>oi(e,t.in,n)):oi(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>oi(e,t.out,n)):oi(r,t.out,n)}}),na=M(`$ZodReadonly`,(e,t)=>{F.init(e,t),N(e._zod,`propValues`,()=>t.innerType._zod.propValues),N(e._zod,`values`,()=>t.innerType._zod.values),N(e._zod,`optin`,()=>t.innerType?._zod?.optin),N(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(si):si(r)}}),ra=M(`$ZodCustom`,(e,t)=>{Tr.init(e,t),F.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>ci(t,n,r,e));ci(i,n,r,e)}})}));function aa(){return new sa}var oa,sa,ca,la=E((()=>{sa=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}},(oa=globalThis).__zod_globalRegistry??(oa.__zod_globalRegistry=aa()),ca=globalThis.__zod_globalRegistry}));function ua(e,t){return new e({type:`string`,...P(t)})}function da(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...P(t)})}function fa(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...P(t)})}function pa(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...P(t)})}function ma(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...P(t)})}function ha(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...P(t)})}function ga(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...P(t)})}function _a(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...P(t)})}function va(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...P(t)})}function ya(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...P(t)})}function ba(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...P(t)})}function xa(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...P(t)})}function Sa(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...P(t)})}function Ca(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...P(t)})}function wa(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...P(t)})}function Ta(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...P(t)})}function Ea(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...P(t)})}function Da(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...P(t)})}function Oa(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...P(t)})}function ka(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...P(t)})}function Aa(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...P(t)})}function ja(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...P(t)})}function Ma(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...P(t)})}function Na(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...P(t)})}function Pa(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...P(t)})}function Fa(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...P(t)})}function Ia(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...P(t)})}function La(e,t){return new e({type:`number`,checks:[],...P(t)})}function Ra(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...P(t)})}function za(e,t){return new e({type:`boolean`,...P(t)})}function Ba(e){return new e({type:`unknown`})}function Va(e,t){return new e({type:`never`,...P(t)})}function Ha(e,t){return new Dr({check:`less_than`,...P(t),value:e,inclusive:!1})}function Ua(e,t){return new Dr({check:`less_than`,...P(t),value:e,inclusive:!0})}function Wa(e,t){return new Or({check:`greater_than`,...P(t),value:e,inclusive:!1})}function Ga(e,t){return new Or({check:`greater_than`,...P(t),value:e,inclusive:!0})}function Ka(e,t){return new kr({check:`multiple_of`,...P(t),value:e})}function qa(e,t){return new jr({check:`max_length`,...P(t),maximum:e})}function Ja(e,t){return new Mr({check:`min_length`,...P(t),minimum:e})}function Ya(e,t){return new Nr({check:`length_equals`,...P(t),length:e})}function Xa(e,t){return new Fr({check:`string_format`,format:`regex`,...P(t),pattern:e})}function Za(e){return new Ir({check:`string_format`,format:`lowercase`,...P(e)})}function Qa(e){return new Lr({check:`string_format`,format:`uppercase`,...P(e)})}function $a(e,t){return new Rr({check:`string_format`,format:`includes`,...P(t),includes:e})}function eo(e,t){return new zr({check:`string_format`,format:`starts_with`,...P(t),prefix:e})}function to(e,t){return new Br({check:`string_format`,format:`ends_with`,...P(t),suffix:e})}function no(e){return new Vr({check:`overwrite`,tx:e})}function ro(e){return no(t=>t.normalize(e))}function io(){return no(e=>e.trim())}function ao(){return no(e=>e.toLowerCase())}function oo(){return no(e=>e.toUpperCase())}function so(){return no(e=>en(e))}function co(e,t,n){return new e({type:`array`,element:t,...P(n)})}function lo(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...P(n)})}function uo(e){let t=fo(n=>(n.addIssue=e=>{if(typeof e==`string`)n.issues.push(bn(e,n.value,t._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=n.value,r.inst??=t,r.continue??=!t._zod.def.abort,n.issues.push(bn(r))}},e(n.value,n)));return t}function fo(e,t){let n=new Tr({check:`custom`,...P(t)});return n._zod.check=e,n}var po=E((()=>{Hr(),En()}));function mo(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??ca,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function L(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,L(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&_o(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&o.schema._prefault&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function ho(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
287
287
|
|
|
288
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function ho(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(a[e.defId]=e.def)}e.external||Object.keys(a).length>0&&(e.target===`draft-2020-12`?i.$defs=a:i.definitions=a);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:_o(t,`input`,e.processors),output:_o(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function R(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return R(r.element,n);if(r.type===`set`)return R(r.valueType,n);if(r.type===`lazy`)return R(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return R(r.innerType,n);if(r.type===`intersection`)return R(r.left,n)||R(r.right,n);if(r.type===`record`||r.type===`map`)return R(r.keyType,n)||R(r.valueType,n);if(r.type===`pipe`)return R(r.in,n)||R(r.out,n);if(r.type===`object`){for(let e in r.shape)if(R(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(R(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(R(e,n))return!0;return!!(r.rest&&R(r.rest,n))}return!1}var go,_o,vo=T((()=>{ca(),go=(e,t={})=>n=>{let r=po({...n,processors:t});return L(e,r),mo(r,e),ho(r,e)},_o=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=po({...i??{},target:a,io:t,processors:n});return L(e,o),mo(o,e),ho(o,e)}})),yo,bo,xo,So,Co,wo,To,Eo,Do,Oo,ko,Ao,jo,Mo,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho=T((()=>{vo(),En(),yo={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},bo=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=yo[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},xo=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`,typeof u==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u),typeof a==`number`&&(i.minimum=a,typeof u==`number`&&t.target!==`draft-04`&&(u>=a?delete i.minimum:delete i.exclusiveMinimum)),typeof l==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l),typeof o==`number`&&(i.maximum=o,typeof l==`number`&&t.target!==`draft-04`&&(l<=o?delete i.maximum:delete i.exclusiveMaximum)),typeof c==`number`&&(i.multipleOf=c)},So=(e,t,n,r)=>{n.type=`boolean`},Co=(e,t,n,r)=>{n.not={}},wo=(e,t,n,r)=>{},To=(e,t,n,r)=>{let i=e._zod.def,a=Gt(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Eo=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},Do=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Oo=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},ko=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=L(a.element,t,{...r,path:[...r.path,`items`]})},Ao=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=L(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=L(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},jo=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>L(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Mo=(e,t,n,r)=>{let i=e._zod.def,a=L(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=L(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},No=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=L(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=L(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=L(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},Po=(e,t,n,r)=>{let i=e._zod.def,a=L(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Fo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Io=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Lo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},Ro=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},zo=(e,t,n,r)=>{let i=e._zod.def,a=t.io===`input`?i.in._zod.def.type===`transform`?i.out:i.in:i.out;L(a,t,r);let o=t.seen.get(e);o.ref=a},Bo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Vo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType}})),Uo=T((()=>{Wt(),qn(),Mn(),ra(),Vr(),Gr(),En(),wr(),ca(),Ur(),fo(),vo(),Ho(),vo()})),Wo=T((()=>{Uo()}));function Go(e){return Ma(Yo,e)}function Ko(e){return Na(Xo,e)}function qo(e){return Pa(Zo,e)}function Jo(e){return Fa(Qo,e)}var Yo,Xo,Zo,Qo,$o=T((()=>{Uo(),kc(),Yo=j(`ZodISODateTime`,(e,t)=>{bi.init(e,t),G.init(e,t)}),Xo=j(`ZodISODate`,(e,t)=>{xi.init(e,t),G.init(e,t)}),Zo=j(`ZodISOTime`,(e,t)=>{Si.init(e,t),G.init(e,t)}),Qo=j(`ZodISODuration`,(e,t)=>{Ci.init(e,t),G.init(e,t)})})),es,ts,ns=T((()=>{Uo(),En(),es=(e,t)=>{An.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>On(e,t)},flatten:{value:t=>Dn(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Kt,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Kt,2)}},isEmpty:{get(){return e.issues.length===0}}})},j(`ZodError`,es),ts=j(`ZodError`,es,{Parent:Error})})),rs,is,as,os,ss,cs,ls,us,ds,fs,ps,ms,hs=T((()=>{Uo(),ns(),rs=Nn(ts),is=Pn(ts),as=Fn(ts),os=Ln(ts),ss=zn(ts),cs=Bn(ts),ls=Vn(ts),us=Hn(ts),ds=Un(ts),fs=Wn(ts),ps=Gn(ts),ms=Kn(ts)}));function z(e){return la(zs,e)}function B(e){return Ia(ac,e)}function gs(e){return La(oc,e)}function _s(e){return Ra(sc,e)}function vs(){return za(cc)}function ys(e){return Ba(lc,e)}function bs(e,t){return so(uc,e,t)}function xs(e,t){let n={type:`object`,shape:e??{},...N(t)};return new dc(n)}function V(e,t){return new dc({type:`object`,shape:e,catchall:ys(),...N(t)})}function Ss(e,t){return new fc({type:`union`,options:e,...N(t)})}function Cs(e,t,n){return new pc({type:`union`,options:t,discriminator:e,...N(n)})}function ws(e,t){return new mc({type:`intersection`,left:e,right:t})}function H(e,t,n){return new hc({type:`record`,keyType:e,valueType:t,...N(n)})}function Ts(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new gc({type:`enum`,entries:n,...N(t)})}function U(e,t){return new _c({type:`literal`,values:Array.isArray(e)?e:[e],...N(t)})}function Es(e){return new vc({type:`transform`,transform:e})}function Ds(e){return new yc({type:`optional`,innerType:e})}function Os(e){return new bc({type:`optional`,innerType:e})}function ks(e){return new xc({type:`nullable`,innerType:e})}function As(e,t){return new Sc({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():rn(t)}})}function js(e,t){return new Cc({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():rn(t)}})}function Ms(e,t){return new wc({type:`nonoptional`,innerType:e,...N(t)})}function Ns(e,t){return new Tc({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}function Ps(e,t){return new Ec({type:`pipe`,in:e,out:t})}function Fs(e){return new Dc({type:`readonly`,innerType:e})}function Is(e,t={}){return co(Oc,e,t)}function Ls(e){return lo(e)}var W,Rs,zs,G,Bs,Vs,Hs,Us,Ws,Gs,Ks,qs,Js,Ys,Xs,Zs,Qs,$s,ec,tc,nc,rc,ic,ac,oc,sc,cc,lc,uc,dc,fc,pc,mc,hc,gc,_c,vc,yc,bc,xc,Sc,Cc,wc,Tc,Ec,Dc,Oc,kc=T((()=>{Uo(),Ho(),vo(),Wo(),$o(),hs(),W=j(`ZodType`,(e,t)=>(F.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:_o(e,`input`),output:_o(e,`output`)}}),e.toJSONSchema=go(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(Qt(t,{checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,n)=>on(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.parse=(t,n)=>rs(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>as(e,t,n),e.parseAsync=async(t,n)=>is(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>os(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>ss(e,t,n),e.decode=(t,n)=>cs(e,t,n),e.encodeAsync=async(t,n)=>ls(e,t,n),e.decodeAsync=async(t,n)=>us(e,t,n),e.safeEncode=(t,n)=>ds(e,t,n),e.safeDecode=(t,n)=>fs(e,t,n),e.safeEncodeAsync=async(t,n)=>ps(e,t,n),e.safeDecodeAsync=async(t,n)=>ms(e,t,n),e.refine=(t,n)=>e.check(Is(t,n)),e.superRefine=t=>e.check(Ls(t)),e.overwrite=t=>e.check(to(t)),e.optional=()=>Ds(e),e.exactOptional=()=>Os(e),e.nullable=()=>ks(e),e.nullish=()=>Ds(ks(e)),e.nonoptional=t=>Ms(e,t),e.array=()=>bs(e),e.or=t=>Ss([e,t]),e.and=t=>ws(e,t),e.transform=t=>Ps(e,Es(t)),e.default=t=>As(e,t),e.prefault=t=>js(e,t),e.catch=t=>Ns(e,t),e.pipe=t=>Ps(e,t),e.readonly=()=>Fs(e),e.describe=t=>{let n=e.clone();return sa.add(n,{description:t}),n},Object.defineProperty(e,"description",{get(){return sa.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return sa.get(e);let n=e.clone();return sa.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),Rs=j(`_ZodString`,(e,t)=>{ci.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bo(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(Ya(...t)),e.includes=(...t)=>e.check(Qa(...t)),e.startsWith=(...t)=>e.check($a(...t)),e.endsWith=(...t)=>e.check(eo(...t)),e.min=(...t)=>e.check(qa(...t)),e.max=(...t)=>e.check(Ka(...t)),e.length=(...t)=>e.check(Ja(...t)),e.nonempty=(...t)=>e.check(qa(1,...t)),e.lowercase=t=>e.check(Xa(t)),e.uppercase=t=>e.check(Za(t)),e.trim=()=>e.check(ro()),e.normalize=(...t)=>e.check(no(...t)),e.toLowerCase=()=>e.check(io()),e.toUpperCase=()=>e.check(ao()),e.slugify=()=>e.check(oo())}),zs=j(`ZodString`,(e,t)=>{ci.init(e,t),Rs.init(e,t),e.email=t=>e.check(ua(Bs,t)),e.url=t=>e.check(ga(Us,t)),e.jwt=t=>e.check(ja(ic,t)),e.emoji=t=>e.check(_a(Ws,t)),e.guid=t=>e.check(da(Vs,t)),e.uuid=t=>e.check(fa(Hs,t)),e.uuidv4=t=>e.check(pa(Hs,t)),e.uuidv6=t=>e.check(ma(Hs,t)),e.uuidv7=t=>e.check(ha(Hs,t)),e.nanoid=t=>e.check(va(Gs,t)),e.guid=t=>e.check(da(Vs,t)),e.cuid=t=>e.check(ya(Ks,t)),e.cuid2=t=>e.check(ba(qs,t)),e.ulid=t=>e.check(xa(Js,t)),e.base64=t=>e.check(Oa(tc,t)),e.base64url=t=>e.check(ka(nc,t)),e.xid=t=>e.check(Sa(Ys,t)),e.ksuid=t=>e.check(Ca(Xs,t)),e.ipv4=t=>e.check(wa(Zs,t)),e.ipv6=t=>e.check(Ta(Qs,t)),e.cidrv4=t=>e.check(Ea($s,t)),e.cidrv6=t=>e.check(Da(ec,t)),e.e164=t=>e.check(Aa(rc,t)),e.datetime=t=>e.check(Go(t)),e.date=t=>e.check(Ko(t)),e.time=t=>e.check(qo(t)),e.duration=t=>e.check(Jo(t))}),G=j(`ZodStringFormat`,(e,t)=>{I.init(e,t),Rs.init(e,t)}),Bs=j(`ZodEmail`,(e,t)=>{di.init(e,t),G.init(e,t)}),Vs=j(`ZodGUID`,(e,t)=>{li.init(e,t),G.init(e,t)}),Hs=j(`ZodUUID`,(e,t)=>{ui.init(e,t),G.init(e,t)}),Us=j(`ZodURL`,(e,t)=>{fi.init(e,t),G.init(e,t)}),Ws=j(`ZodEmoji`,(e,t)=>{pi.init(e,t),G.init(e,t)}),Gs=j(`ZodNanoID`,(e,t)=>{mi.init(e,t),G.init(e,t)}),Ks=j(`ZodCUID`,(e,t)=>{hi.init(e,t),G.init(e,t)}),qs=j(`ZodCUID2`,(e,t)=>{gi.init(e,t),G.init(e,t)}),Js=j(`ZodULID`,(e,t)=>{_i.init(e,t),G.init(e,t)}),Ys=j(`ZodXID`,(e,t)=>{vi.init(e,t),G.init(e,t)}),Xs=j(`ZodKSUID`,(e,t)=>{yi.init(e,t),G.init(e,t)}),Zs=j(`ZodIPv4`,(e,t)=>{wi.init(e,t),G.init(e,t)}),Qs=j(`ZodIPv6`,(e,t)=>{Ti.init(e,t),G.init(e,t)}),$s=j(`ZodCIDRv4`,(e,t)=>{Ei.init(e,t),G.init(e,t)}),ec=j(`ZodCIDRv6`,(e,t)=>{Di.init(e,t),G.init(e,t)}),tc=j(`ZodBase64`,(e,t)=>{Oi.init(e,t),G.init(e,t)}),nc=j(`ZodBase64URL`,(e,t)=>{ki.init(e,t),G.init(e,t)}),rc=j(`ZodE164`,(e,t)=>{Ai.init(e,t),G.init(e,t)}),ic=j(`ZodJWT`,(e,t)=>{ji.init(e,t),G.init(e,t)}),ac=j(`ZodNumber`,(e,t)=>{Mi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xo(e,t,n,r),e.gt=(t,n)=>e.check(Ua(t,n)),e.gte=(t,n)=>e.check(Wa(t,n)),e.min=(t,n)=>e.check(Wa(t,n)),e.lt=(t,n)=>e.check(Va(t,n)),e.lte=(t,n)=>e.check(Ha(t,n)),e.max=(t,n)=>e.check(Ha(t,n)),e.int=t=>e.check(gs(t)),e.safe=t=>e.check(gs(t)),e.positive=t=>e.check(Ua(0,t)),e.nonnegative=t=>e.check(Wa(0,t)),e.negative=t=>e.check(Va(0,t)),e.nonpositive=t=>e.check(Ha(0,t)),e.multipleOf=(t,n)=>e.check(Ga(t,n)),e.step=(t,n)=>e.check(Ga(t,n)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),oc=j(`ZodNumberFormat`,(e,t)=>{Ni.init(e,t),ac.init(e,t)}),sc=j(`ZodBoolean`,(e,t)=>{Pi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>So(e,t,n,r)}),cc=j(`ZodUnknown`,(e,t)=>{Fi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wo(e,t,n,r)}),lc=j(`ZodNever`,(e,t)=>{Ii.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Co(e,t,n,r)}),uc=j(`ZodArray`,(e,t)=>{Li.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ko(e,t,n,r),e.element=t.element,e.min=(t,n)=>e.check(qa(t,n)),e.nonempty=t=>e.check(qa(1,t)),e.max=(t,n)=>e.check(Ka(t,n)),e.length=(t,n)=>e.check(Ja(t,n)),e.unwrap=()=>e.element}),dc=j(`ZodObject`,(e,t)=>{zi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ao(e,t,n,r),M(e,`shape`,()=>t.shape),e.keyof=()=>Ts(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:vs()}),e.loose=()=>e.clone({...e._zod.def,catchall:vs()}),e.strict=()=>e.clone({...e._zod.def,catchall:ys()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>un(e,t),e.safeExtend=t=>dn(e,t),e.merge=t=>fn(e,t),e.pick=t=>cn(e,t),e.omit=t=>ln(e,t),e.partial=(...t)=>pn(yc,e,t[0]),e.required=(...t)=>mn(wc,e,t[0])}),fc=j(`ZodUnion`,(e,t)=>{Bi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jo(e,t,n,r),e.options=t.options}),pc=j(`ZodDiscriminatedUnion`,(e,t)=>{fc.init(e,t),Vi.init(e,t)}),mc=j(`ZodIntersection`,(e,t)=>{Hi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mo(e,t,n,r)}),hc=j(`ZodRecord`,(e,t)=>{Ui.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>No(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType}),gc=j(`ZodEnum`,(e,t)=>{Wi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>To(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new gc({...t,checks:[],...N(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new gc({...t,checks:[],...N(r),entries:i})}}),_c=j(`ZodLiteral`,(e,t)=>{Gi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eo(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})}),vc=j(`ZodTransform`,(e,t)=>{Ki.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oo(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ht(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(bn(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(bn(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}}),yc=j(`ZodOptional`,(e,t)=>{qi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),bc=j(`ZodExactOptional`,(e,t)=>{Ji.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),xc=j(`ZodNullable`,(e,t)=>{Yi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Po(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Sc=j(`ZodDefault`,(e,t)=>{Xi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Io(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap}),Cc=j(`ZodPrefault`,(e,t)=>{Zi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),wc=j(`ZodNonOptional`,(e,t)=>{Qi.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Tc=j(`ZodCatch`,(e,t)=>{$i.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ro(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap}),Ec=j(`ZodPipe`,(e,t)=>{ea.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zo(e,t,n,r),e.in=t.in,e.out=t.out}),Dc=j(`ZodReadonly`,(e,t)=>{ta.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Oc=j(`ZodCustom`,(e,t)=>{na.init(e,t),W.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Do(e,t,n,r)})})),Ac=T((()=>{Uo()})),jc=T((()=>{Uo(),kc(),Wo(),ns(),hs(),Ac(),Ho(),ca(),Wo(),$o(),kc(),En()})),Mc=T((()=>{jc(),jc()}));async function Nc(){let e=Ic(),[t,n]=await Promise.all([Fc(e,[`--version`]),Fc(e,[`doctor`,`--json`])]);return Pc(t,n)}function Pc(e,t){let n;try{n=JSON.parse(t)}catch(e){throw Error(`agent-browser doctor did not return valid JSON`,{cause:e})}let r=(n.checks?.find(e=>e.id===`chrome.installed`&&e.status===`pass`)?.message)?.split(` at `)[0];if(!r?.match(/^Google Chrome for Testing \d+\.\d+\.\d+\.\d+$/))throw Error(`Kapture requires an exact installed Google Chrome for Testing version`);return`${e}; ${r}`}function Fc(e,t){return new Promise((n,i)=>{let a=r(e,t,{stdio:[`ignore`,`pipe`,`pipe`]}),o=[];a.stdout.on(`data`,e=>o.push(e)),a.once(`error`,i),a.once(`close`,e=>{if(e!==0)return i(Error(`agent-browser ${t.join(` `)} failed (${e})`));n(Buffer.concat(o).toString(`utf8`).trim())})})}function Ic(){try{let t=e(import.meta.url),n=t.resolve(`agent-browser/package.json`),r=a(n),i=t(n),o=typeof i.bin==`string`?i.bin:i.bin?.[`agent-browser`]??`bin/agent-browser.js`;return f(r,o)}catch{return`agent-browser`}}async function Lc(e,t,n){let r=JSON.stringify({id:t.id,browserMajor:t.browserVersion.match(/Chrome(?: for Testing)? (\d+)/)?.[1],locale:t.locale,timezone:t.timezone,deviceScaleFactor:t.deviceScaleFactor,colorScheme:t.colorScheme,reducedMotion:t.reducedMotion,frozenTimestamp:Date.parse(t.frozenTime)}),i=JSON.stringify(n);return e.evaluate(`(async () => {
|
|
288
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function go(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(a[e.defId]=e.def)}e.external||Object.keys(a).length>0&&(e.target===`draft-2020-12`?i.$defs=a:i.definitions=a);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:yo(t,`input`,e.processors),output:yo(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function _o(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return _o(r.element,n);if(r.type===`set`)return _o(r.valueType,n);if(r.type===`lazy`)return _o(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return _o(r.innerType,n);if(r.type===`intersection`)return _o(r.left,n)||_o(r.right,n);if(r.type===`record`||r.type===`map`)return _o(r.keyType,n)||_o(r.valueType,n);if(r.type===`pipe`)return _o(r.in,n)||_o(r.out,n);if(r.type===`object`){for(let e in r.shape)if(_o(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(_o(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(_o(e,n))return!0;return!!(r.rest&&_o(r.rest,n))}return!1}var vo,yo,bo=E((()=>{la(),vo=(e,t={})=>n=>{let r=mo({...n,processors:t});return L(e,r),ho(r,e),go(r,e)},yo=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=mo({...i??{},target:a,io:t,processors:n});return L(e,o),ho(o,e),go(o,e)}})),xo,So,Co,wo,To,Eo,Do,Oo,ko,Ao,jo,Mo,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo=E((()=>{bo(),En(),xo={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},So=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=xo[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Co=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`,typeof u==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u),typeof a==`number`&&(i.minimum=a,typeof u==`number`&&t.target!==`draft-04`&&(u>=a?delete i.minimum:delete i.exclusiveMinimum)),typeof l==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l),typeof o==`number`&&(i.maximum=o,typeof l==`number`&&t.target!==`draft-04`&&(l<=o?delete i.maximum:delete i.exclusiveMaximum)),typeof c==`number`&&(i.multipleOf=c)},wo=(e,t,n,r)=>{n.type=`boolean`},To=(e,t,n,r)=>{n.not={}},Eo=(e,t,n,r)=>{},Do=(e,t,n,r)=>{let i=e._zod.def,a=Gt(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Oo=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},ko=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Ao=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},jo=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=L(a.element,t,{...r,path:[...r.path,`items`]})},Mo=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=L(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=L(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},No=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>L(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Po=(e,t,n,r)=>{let i=e._zod.def,a=L(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=L(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},Fo=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=L(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=L(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=L(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},Io=(e,t,n,r)=>{let i=e._zod.def,a=L(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Lo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Ro=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},zo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},Bo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Vo=(e,t,n,r)=>{let i=e._zod.def,a=t.io===`input`?i.in._zod.def.type===`transform`?i.out:i.in:i.out;L(a,t,r);let o=t.seen.get(e);o.ref=a},Ho=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Uo=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType}})),Go=E((()=>{Wt(),qn(),Mn(),ia(),Hr(),Kr(),En(),wr(),la(),Wr(),po(),bo(),Wo(),bo()})),Ko=E((()=>{Go()}));function qo(e){return Na(Zo,e)}function Jo(e){return Pa(Qo,e)}function Yo(e){return Fa($o,e)}function Xo(e){return Ia(es,e)}var Zo,Qo,$o,es,ts=E((()=>{Go(),Mc(),Zo=M(`ZodISODateTime`,(e,t)=>{xi.init(e,t),U.init(e,t)}),Qo=M(`ZodISODate`,(e,t)=>{Si.init(e,t),U.init(e,t)}),$o=M(`ZodISOTime`,(e,t)=>{Ci.init(e,t),U.init(e,t)}),es=M(`ZodISODuration`,(e,t)=>{wi.init(e,t),U.init(e,t)})})),ns,rs,is=E((()=>{Go(),En(),ns=(e,t)=>{An.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>On(e,t)},flatten:{value:t=>Dn(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Kt,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Kt,2)}},isEmpty:{get(){return e.issues.length===0}}})},M(`ZodError`,ns),rs=M(`ZodError`,ns,{Parent:Error})})),as,os,ss,cs,ls,us,ds,fs,ps,ms,hs,gs,_s=E((()=>{Go(),is(),as=Nn(rs),os=Pn(rs),ss=Fn(rs),cs=Ln(rs),ls=zn(rs),us=Bn(rs),ds=Vn(rs),fs=Hn(rs),ps=Un(rs),ms=Wn(rs),hs=Gn(rs),gs=Kn(rs)}));function R(e){return ua(Hs,e)}function z(e){return La(cc,e)}function vs(e){return Ra(lc,e)}function ys(e){return za(uc,e)}function bs(){return Ba(dc)}function xs(e){return Va(fc,e)}function Ss(e,t){return co(pc,e,t)}function Cs(e,t){let n={type:`object`,shape:e??{},...P(t)};return new mc(n)}function B(e,t){return new mc({type:`object`,shape:e,catchall:xs(),...P(t)})}function ws(e,t){return new hc({type:`union`,options:e,...P(t)})}function Ts(e,t,n){return new gc({type:`union`,options:t,discriminator:e,...P(n)})}function Es(e,t){return new _c({type:`intersection`,left:e,right:t})}function Ds(e,t,n){return new vc({type:`record`,keyType:e,valueType:t,...P(n)})}function Os(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new yc({type:`enum`,entries:n,...P(t)})}function V(e,t){return new bc({type:`literal`,values:Array.isArray(e)?e:[e],...P(t)})}function ks(e){return new xc({type:`transform`,transform:e})}function As(e){return new Sc({type:`optional`,innerType:e})}function js(e){return new Cc({type:`optional`,innerType:e})}function Ms(e){return new wc({type:`nullable`,innerType:e})}function Ns(e,t){return new Tc({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():rn(t)}})}function Ps(e,t){return new Ec({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():rn(t)}})}function Fs(e,t){return new Dc({type:`nonoptional`,innerType:e,...P(t)})}function Is(e,t){return new Oc({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}function Ls(e,t){return new kc({type:`pipe`,in:e,out:t})}function Rs(e){return new Ac({type:`readonly`,innerType:e})}function zs(e,t={}){return lo(jc,e,t)}function Bs(e){return uo(e)}var H,Vs,Hs,U,Us,Ws,Gs,Ks,qs,Js,Ys,Xs,Zs,Qs,$s,ec,tc,nc,rc,ic,ac,oc,sc,cc,lc,uc,dc,fc,pc,mc,hc,gc,_c,vc,yc,bc,xc,Sc,Cc,wc,Tc,Ec,Dc,Oc,kc,Ac,jc,Mc=E((()=>{Go(),Wo(),bo(),Ko(),ts(),_s(),H=M(`ZodType`,(e,t)=>(F.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:yo(e,`input`),output:yo(e,`output`)}}),e.toJSONSchema=vo(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(Qt(t,{checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,n)=>on(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.parse=(t,n)=>as(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>ss(e,t,n),e.parseAsync=async(t,n)=>os(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>cs(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>ls(e,t,n),e.decode=(t,n)=>us(e,t,n),e.encodeAsync=async(t,n)=>ds(e,t,n),e.decodeAsync=async(t,n)=>fs(e,t,n),e.safeEncode=(t,n)=>ps(e,t,n),e.safeDecode=(t,n)=>ms(e,t,n),e.safeEncodeAsync=async(t,n)=>hs(e,t,n),e.safeDecodeAsync=async(t,n)=>gs(e,t,n),e.refine=(t,n)=>e.check(zs(t,n)),e.superRefine=t=>e.check(Bs(t)),e.overwrite=t=>e.check(no(t)),e.optional=()=>As(e),e.exactOptional=()=>js(e),e.nullable=()=>Ms(e),e.nullish=()=>As(Ms(e)),e.nonoptional=t=>Fs(e,t),e.array=()=>Ss(e),e.or=t=>ws([e,t]),e.and=t=>Es(e,t),e.transform=t=>Ls(e,ks(t)),e.default=t=>Ns(e,t),e.prefault=t=>Ps(e,t),e.catch=t=>Is(e,t),e.pipe=t=>Ls(e,t),e.readonly=()=>Rs(e),e.describe=t=>{let n=e.clone();return ca.add(n,{description:t}),n},Object.defineProperty(e,"description",{get(){return ca.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return ca.get(e);let n=e.clone();return ca.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),Vs=M(`_ZodString`,(e,t)=>{li.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>So(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(Xa(...t)),e.includes=(...t)=>e.check($a(...t)),e.startsWith=(...t)=>e.check(eo(...t)),e.endsWith=(...t)=>e.check(to(...t)),e.min=(...t)=>e.check(Ja(...t)),e.max=(...t)=>e.check(qa(...t)),e.length=(...t)=>e.check(Ya(...t)),e.nonempty=(...t)=>e.check(Ja(1,...t)),e.lowercase=t=>e.check(Za(t)),e.uppercase=t=>e.check(Qa(t)),e.trim=()=>e.check(io()),e.normalize=(...t)=>e.check(ro(...t)),e.toLowerCase=()=>e.check(ao()),e.toUpperCase=()=>e.check(oo()),e.slugify=()=>e.check(so())}),Hs=M(`ZodString`,(e,t)=>{li.init(e,t),Vs.init(e,t),e.email=t=>e.check(da(Us,t)),e.url=t=>e.check(_a(Ks,t)),e.jwt=t=>e.check(Ma(sc,t)),e.emoji=t=>e.check(va(qs,t)),e.guid=t=>e.check(fa(Ws,t)),e.uuid=t=>e.check(pa(Gs,t)),e.uuidv4=t=>e.check(ma(Gs,t)),e.uuidv6=t=>e.check(ha(Gs,t)),e.uuidv7=t=>e.check(ga(Gs,t)),e.nanoid=t=>e.check(ya(Js,t)),e.guid=t=>e.check(fa(Ws,t)),e.cuid=t=>e.check(ba(Ys,t)),e.cuid2=t=>e.check(xa(Xs,t)),e.ulid=t=>e.check(Sa(Zs,t)),e.base64=t=>e.check(ka(ic,t)),e.base64url=t=>e.check(Aa(ac,t)),e.xid=t=>e.check(Ca(Qs,t)),e.ksuid=t=>e.check(wa($s,t)),e.ipv4=t=>e.check(Ta(ec,t)),e.ipv6=t=>e.check(Ea(tc,t)),e.cidrv4=t=>e.check(Da(nc,t)),e.cidrv6=t=>e.check(Oa(rc,t)),e.e164=t=>e.check(ja(oc,t)),e.datetime=t=>e.check(qo(t)),e.date=t=>e.check(Jo(t)),e.time=t=>e.check(Yo(t)),e.duration=t=>e.check(Xo(t))}),U=M(`ZodStringFormat`,(e,t)=>{I.init(e,t),Vs.init(e,t)}),Us=M(`ZodEmail`,(e,t)=>{fi.init(e,t),U.init(e,t)}),Ws=M(`ZodGUID`,(e,t)=>{ui.init(e,t),U.init(e,t)}),Gs=M(`ZodUUID`,(e,t)=>{di.init(e,t),U.init(e,t)}),Ks=M(`ZodURL`,(e,t)=>{pi.init(e,t),U.init(e,t)}),qs=M(`ZodEmoji`,(e,t)=>{mi.init(e,t),U.init(e,t)}),Js=M(`ZodNanoID`,(e,t)=>{hi.init(e,t),U.init(e,t)}),Ys=M(`ZodCUID`,(e,t)=>{gi.init(e,t),U.init(e,t)}),Xs=M(`ZodCUID2`,(e,t)=>{_i.init(e,t),U.init(e,t)}),Zs=M(`ZodULID`,(e,t)=>{vi.init(e,t),U.init(e,t)}),Qs=M(`ZodXID`,(e,t)=>{yi.init(e,t),U.init(e,t)}),$s=M(`ZodKSUID`,(e,t)=>{bi.init(e,t),U.init(e,t)}),ec=M(`ZodIPv4`,(e,t)=>{Ti.init(e,t),U.init(e,t)}),tc=M(`ZodIPv6`,(e,t)=>{Ei.init(e,t),U.init(e,t)}),nc=M(`ZodCIDRv4`,(e,t)=>{Di.init(e,t),U.init(e,t)}),rc=M(`ZodCIDRv6`,(e,t)=>{Oi.init(e,t),U.init(e,t)}),ic=M(`ZodBase64`,(e,t)=>{ki.init(e,t),U.init(e,t)}),ac=M(`ZodBase64URL`,(e,t)=>{Ai.init(e,t),U.init(e,t)}),oc=M(`ZodE164`,(e,t)=>{ji.init(e,t),U.init(e,t)}),sc=M(`ZodJWT`,(e,t)=>{Mi.init(e,t),U.init(e,t)}),cc=M(`ZodNumber`,(e,t)=>{Ni.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Co(e,t,n,r),e.gt=(t,n)=>e.check(Wa(t,n)),e.gte=(t,n)=>e.check(Ga(t,n)),e.min=(t,n)=>e.check(Ga(t,n)),e.lt=(t,n)=>e.check(Ha(t,n)),e.lte=(t,n)=>e.check(Ua(t,n)),e.max=(t,n)=>e.check(Ua(t,n)),e.int=t=>e.check(vs(t)),e.safe=t=>e.check(vs(t)),e.positive=t=>e.check(Wa(0,t)),e.nonnegative=t=>e.check(Ga(0,t)),e.negative=t=>e.check(Ha(0,t)),e.nonpositive=t=>e.check(Ua(0,t)),e.multipleOf=(t,n)=>e.check(Ka(t,n)),e.step=(t,n)=>e.check(Ka(t,n)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),lc=M(`ZodNumberFormat`,(e,t)=>{Pi.init(e,t),cc.init(e,t)}),uc=M(`ZodBoolean`,(e,t)=>{Fi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wo(e,t,n,r)}),dc=M(`ZodUnknown`,(e,t)=>{Ii.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eo(e,t,n,r)}),fc=M(`ZodNever`,(e,t)=>{Li.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>To(e,t,n,r)}),pc=M(`ZodArray`,(e,t)=>{Ri.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jo(e,t,n,r),e.element=t.element,e.min=(t,n)=>e.check(Ja(t,n)),e.nonempty=t=>e.check(Ja(1,t)),e.max=(t,n)=>e.check(qa(t,n)),e.length=(t,n)=>e.check(Ya(t,n)),e.unwrap=()=>e.element}),mc=M(`ZodObject`,(e,t)=>{Bi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mo(e,t,n,r),N(e,`shape`,()=>t.shape),e.keyof=()=>Os(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:bs()}),e.loose=()=>e.clone({...e._zod.def,catchall:bs()}),e.strict=()=>e.clone({...e._zod.def,catchall:xs()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>un(e,t),e.safeExtend=t=>dn(e,t),e.merge=t=>fn(e,t),e.pick=t=>cn(e,t),e.omit=t=>ln(e,t),e.partial=(...t)=>pn(Sc,e,t[0]),e.required=(...t)=>mn(Dc,e,t[0])}),hc=M(`ZodUnion`,(e,t)=>{Vi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>No(e,t,n,r),e.options=t.options}),gc=M(`ZodDiscriminatedUnion`,(e,t)=>{hc.init(e,t),Hi.init(e,t)}),_c=M(`ZodIntersection`,(e,t)=>{Ui.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Po(e,t,n,r)}),vc=M(`ZodRecord`,(e,t)=>{Wi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fo(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType}),yc=M(`ZodEnum`,(e,t)=>{Gi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Do(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new yc({...t,checks:[],...P(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new yc({...t,checks:[],...P(r),entries:i})}}),bc=M(`ZodLiteral`,(e,t)=>{Ki.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oo(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})}),xc=M(`ZodTransform`,(e,t)=>{qi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ao(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Ht(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(bn(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(bn(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}}),Sc=M(`ZodOptional`,(e,t)=>{Ji.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Cc=M(`ZodExactOptional`,(e,t)=>{Yi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),wc=M(`ZodNullable`,(e,t)=>{Xi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Io(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Tc=M(`ZodDefault`,(e,t)=>{Zi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ro(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap}),Ec=M(`ZodPrefault`,(e,t)=>{Qi.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Dc=M(`ZodNonOptional`,(e,t)=>{$i.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),Oc=M(`ZodCatch`,(e,t)=>{ea.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap}),kc=M(`ZodPipe`,(e,t)=>{ta.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vo(e,t,n,r),e.in=t.in,e.out=t.out}),Ac=M(`ZodReadonly`,(e,t)=>{na.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ho(e,t,n,r),e.unwrap=()=>e._zod.def.innerType}),jc=M(`ZodCustom`,(e,t)=>{ra.init(e,t),H.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ko(e,t,n,r)})})),Nc=E((()=>{Go()})),Pc=E((()=>{Go(),Mc(),Ko(),is(),_s(),Nc(),Wo(),la(),Ko(),ts(),Mc(),En()})),Fc=E((()=>{Pc(),Pc()}));async function Ic(){let e=zc(),[t,n]=await Promise.all([Rc(e,[`--version`]),Rc(e,[`doctor`,`--json`])]);return Lc(t,n)}function Lc(e,t){let n;try{n=JSON.parse(t)}catch(e){throw Error(`agent-browser doctor did not return valid JSON`,{cause:e})}let r=(n.checks?.find(e=>e.id===`chrome.installed`&&e.status===`pass`)?.message)?.split(` at `)[0];if(!r?.match(/^Google Chrome for Testing \d+\.\d+\.\d+\.\d+$/))throw Error(`Kapture requires an exact installed Google Chrome for Testing version`);return`${e}; ${r}`}function Rc(e,t){return new Promise((n,i)=>{let a=r(e,t,{stdio:[`ignore`,`pipe`,`pipe`]}),o=[];a.stdout.on(`data`,e=>o.push(e)),a.once(`error`,i),a.once(`close`,e=>{if(e!==0)return i(Error(`agent-browser ${t.join(` `)} failed (${e})`));n(Buffer.concat(o).toString(`utf8`).trim())})})}function zc(){try{let t=e(import.meta.url),n=t.resolve(`agent-browser/package.json`),r=a(n),i=t(n),o=typeof i.bin==`string`?i.bin:i.bin?.[`agent-browser`]??`bin/agent-browser.js`;return f(r,o)}catch{return`agent-browser`}}async function Bc(e,t,n){let r=JSON.stringify({id:t.id,browserMajor:t.browserVersion.match(/Chrome(?: for Testing)? (\d+)/)?.[1],locale:t.locale,timezone:t.timezone,deviceScaleFactor:t.deviceScaleFactor,colorScheme:t.colorScheme,reducedMotion:t.reducedMotion,frozenTimestamp:Date.parse(t.frozenTime)}),i=JSON.stringify(n);return e.evaluate(`(async () => {
|
|
289
289
|
const expected = ${r};
|
|
290
290
|
const parameters = ${i};
|
|
291
291
|
const actual = {
|
|
@@ -538,9 +538,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
538
538
|
}
|
|
539
539
|
}
|
|
540
540
|
return { ignoredRegions };
|
|
541
|
-
})()`)}async function
|
|
541
|
+
})()`)}async function Vc(e,t,n,r,i){let[o,s]=await Promise.all([x(e),x(t)]),c=ed.PNG.sync.read(o),l=ed.PNG.sync.read(s),u=Math.max(c.width,l.width),d=Math.max(c.height,l.height),f=Uc(c,u,d),p=Uc(l,u,d),m=Hc(f,p,i?.base??[],i?.head??[]),h=new ed.PNG({width:u,height:d}),g=ut(f.data,p.data,h.data,u,d,{threshold:r,includeAA:!1,diffColor:[255,0,0],aaColor:[255,255,0]}),_=u*d-m.pixels;return await y(a(n),{recursive:!0}),await w(n,ed.PNG.sync.write(h)),{changedPixels:g,totalPixels:_,diffRatio:_===0?0:g/_,ignoredRegions:m.regions}}function Hc(e,t,n,r){if(n.length===0||r.length===0)return{pixels:0,regions:[]};let{width:i,height:a}=e,o=new Uint8Array(i*a),s=new Map;for(let e of n)for(let t of r){let n=Math.max(0,e.x,t.x),r=Math.max(0,e.y,t.y),c=Math.min(i,e.x+e.width,t.x+t.width),l=Math.min(a,e.y+e.height,t.y+t.height);if(c<=n||l<=r)continue;let u={x:n,y:r,width:c-n,height:l-r};if(s.set(`${n}:${r}:${c}:${l}`,u),s.size>1e4)throw Error(`Too many ignored region intersections`);for(let e=r;e<l;e+=1)o.fill(1,e*i+n,e*i+c)}let c=0;for(let n=0;n<o.length;n+=1){if(o[n]===0)continue;c+=1;let r=n*4;e.data.fill(0,r,r+4),t.data.fill(0,r,r+4)}return{pixels:c,regions:[...s.values()]}}function Uc(e,t,n){if(e.width===t&&e.height===n)return e;let r=new ed.PNG({width:t,height:n}),i=e.width*4;for(let n=0;n<e.height;n+=1){let a=n*i;r.data.set(e.data.subarray(a,a+i),n*t*4)}return r}function Wc(e){return T(`sha256`).update(JSON.stringify(e)).digest(`hex`).slice(0,16)}function Gc(e){let t=[...e.allowedDomains??[`127.0.0.1`,`localhost`]].sort(),n=process.versions.bun,r={browser:`chromium`,browserVersion:e.browserVersion,orchestratorRuntime:e.orchestratorRuntime??(n?`bun ${n}`:`node ${process.version}`),operatingSystem:`${oe()}-${se()}`,architecture:ae(),deviceScaleFactor:e.deviceScaleFactor??1,locale:Kc(e.locale??`en-US`),timezone:qc(e.timezone??`UTC`),colorScheme:e.colorScheme??`light`,reducedMotion:e.reducedMotion??`reduce`,frozenTime:e.frozenTime??`2026-01-01T00:00:00.000Z`,randomSeed:e.randomSeed??20260101,fontsFingerprint:e.fontsFingerprint??`storybook-bundled-fonts-v1`,stateIsolation:`fresh-browser-process-per-story-side-v1`,network:{mode:`allowlist`,allowedDomains:t,webRtc:`disabled`}};return{id:Wc(r),...r}}function Kc(e){if(!e.trim())throw Error(`Kapture locale must not be empty`);try{let[t]=Intl.getCanonicalLocales(e);if(!t)throw Error(`missing canonical locale`);return t}catch(t){throw Error(`Kapture locale must be a valid BCP 47 tag: ${e}`,{cause:t})}}function qc(e){if(!e.trim())throw Error(`Kapture timezone must not be empty`);try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).resolvedOptions().timeZone}catch(t){throw Error(`Kapture timezone must be a valid IANA time zone: ${e}`,{cause:t})}}function Jc(e,t){if(e.id!==t.id||JSON.stringify(e)!==JSON.stringify(t))throw Error(`Kapture environment mismatch: base=${e.id}, head=${t.id}. Base and head must be captured with the exact same environment contract.`)}async function Yc(){try{let e=(await Xc()).split(`
|
|
542
542
|
`).filter(Boolean).sort().join(`
|
|
543
|
-
`);return`fontconfig:${
|
|
543
|
+
`);return`fontconfig:${T(`sha256`).update(e).digest(`hex`)}`}catch{return`fontconfig-unavailable:${oe()}-${se()}`}}function Xc(){return new Promise((e,t)=>{let n=r(`fc-list`,[`--format`,`%{file}|%{family}|%{style}\\n`],{stdio:[`ignore`,`pipe`,`ignore`]}),i=[];n.stdout.on(`data`,e=>i.push(e)),n.once(`error`,t),n.once(`close`,n=>{if(n!==0)return t(Error(`fc-list failed (${n})`));e(Buffer.concat(i).toString(`utf8`))})})}function Zc(e){let t=Date.parse(e.frozenTime);if(!Number.isFinite(t))throw Error(`Invalid frozenTime: ${e.frozenTime}`);return`(() => {
|
|
544
544
|
const NativeDate = globalThis.Date;
|
|
545
545
|
const frozenTimestamp = ${t};
|
|
546
546
|
class KaptureDate extends NativeDate {
|
|
@@ -566,7 +566,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
566
566
|
configurable: false,
|
|
567
567
|
writable: false,
|
|
568
568
|
});
|
|
569
|
-
})();`}function Yc(e){let t=new Set;for(let n of Object.values(e.entries)){for(let e of ed){let r=n[e];r&&t.add(r)}for(let e of[n.instability?.base,n.instability?.head])e?.repeatImage&&t.add(e.repeatImage),e?.diffImage&&t.add(e.diffImage)}return[...t].sort(tl)}function Xc(e){return $c({report:Qc(e)})}function Zc(e,t){let n=Yc(e),r=new Set(n),i=new Map;for(let e of t){if(!e.path||!td.test(e.sha256))throw Error(`Invalid report image digest for ${e.path||`<empty path>`}`);if(i.has(e.path))throw Error(`Duplicate report image digest for ${e.path}`);i.set(e.path,e.sha256)}for(let e of n)if(!i.has(e))throw Error(`Missing report image digest for ${e}`);for(let e of i.keys())if(!r.has(e))throw Error(`Unexpected report image digest for ${e}`);return $c({report:Qc(e),images:n.map(e=>({path:e,sha256:i.get(e)}))})}function Qc(e){let{contentDigest:t,...n}=e;return n}function $c(e){return ie(`sha256`).update(JSON.stringify(el(e))).digest(`hex`)}function el(e){return Array.isArray(e)?e.map(el):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>tl(e,t)).map(([e,t])=>[e,el(t)]))}function tl(e,t){return e<t?-1:+(e>t)}async function nl(e){let t=await x(e);return ie(`sha256`).update(t).digest(`hex`)}function rl(e){let t=ie(`sha256`).update(e).digest(`hex`).slice(0,12);return`${e.replace(/[^a-zA-Z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,120)||`snapshot`}-${t}.png`}async function il(e){let{baseManifest:t,headManifest:n,baseRoot:r,headRoot:i,outputDir:a,threshold:o,coverage:s,stability:l}=e;Gc(t.environment,n.environment),await re(c(a,`images`),{recursive:!0,force:!0}),await y(c(a,`images`),{recursive:!0});let u=s?new Set(s.selectedStoryIds):void 0,d=[...new Set([...Object.keys(t.snapshots),...Object.keys(n.snapshots)])].filter(e=>{if(!u)return!0;let r=n.snapshots[e]??t.snapshots[e];return r?u.has(r.storyId):!1}).sort(),f={};for(let e of d){let s=t.snapshots[e],c=n.snapshots[e];f[e]=await al({id:e,base:s,head:c,baseRoot:r,headRoot:i,outputDir:a,threshold:o,stability:l&&s&&c?{base:l.baseManifest.snapshots[e],head:l.headManifest.snapshots[e],baseRoot:l.baseRoot,headRoot:l.headRoot}:void 0})}let p=Object.values(f),m={version:3,baseRevision:t.revision,headRevision:n.revision,environment:t.environment,createdAt:new Date().toISOString(),threshold:o,summary:{total:p.length,unchanged:p.filter(e=>e.status===`unchanged`).length,changed:p.filter(e=>e.status===`changed`).length,unstable:p.filter(e=>e.status===`unstable`).length,added:p.filter(e=>e.status===`added`).length,removed:p.filter(e=>e.status===`removed`).length,errors:p.filter(e=>e.status===`error`).length},...s?{coverage:s}:{},entries:f},h=[];for(let e of Yc(m))h.push({path:e,sha256:await nl(c(a,e))});return m.contentDigest=Zc(m,h),await w(c(a,`report.json`),`${JSON.stringify(m,null,2)}\n`),m}async function al(e){let{id:t,base:n,head:r,baseRoot:a,headRoot:o,outputDir:s,threshold:l,stability:u}=e,d=r??n;if(!d)throw Error(`Snapshot ${t} has no base or head record`);let f={id:t,storyId:d.storyId,title:d.title,name:d.name,viewport:d.viewport},p={...l,...r?.threshold??n?.threshold};if(n?.error||r?.error)return{...f,status:`error`,threshold:p,error:[n?.error,r?.error].filter(Boolean).join(` | `)};if(!n&&r)return{...f,status:`added`,threshold:p,headImage:await sl(`head`,r,o,s)};if(n&&!r)return{...f,status:`removed`,threshold:p,baseImage:await sl(`base`,n,a,s)};if(!n||!r)throw Error(`Invalid manifest pair for ${t}`);if(n.viewport.width!==r.viewport.width||n.viewport.height!==r.viewport.height)return{...f,status:`error`,threshold:p,error:`Viewport contract differs: base=${n.viewport.width}x${n.viewport.height}, head=${r.viewport.width}x${r.viewport.height}`};if(n.sha256===r.sha256)return{...f,status:`unchanged`,threshold:p};let m=`images/diff/${i(n.imageFile)}`;try{let e=await Rc(c(a,n.imageFile),c(o,r.imageFile),c(s,m),p.pixelColorThreshold,{base:n.ignoredRegions??[],head:r.ignoredRegions??[]});if(e.diffRatio<=p.maxChangedPixelRatio)return await re(c(s,m),{force:!0}),{...f,status:`unchanged`,threshold:p,changedPixels:e.changedPixels,diffRatio:e.diffRatio};let[i,l]=await Promise.all([sl(`base`,n,a,s),sl(`head`,r,o,s)]),d=u?await ol({id:t,base:n,head:r,baseRepeat:u.base,headRepeat:u.head,baseRoot:a,headRoot:o,baseRepeatRoot:u.baseRoot,headRepeatRoot:u.headRoot,outputDir:s,threshold:p}):void 0;return{...f,status:d?`unstable`:`changed`,threshold:p,baseImage:i,headImage:l,diffImage:m,changedPixels:e.changedPixels,diffRatio:e.diffRatio,ignoredRegions:e.ignoredRegions,...d?{instability:d}:{}}}catch(e){return{...f,status:`error`,threshold:p,error:e instanceof Error?e.message:String(e)}}}async function ol(e){let t={};for(let n of[`base`,`head`]){let r=e[n],a=n===`base`?e.baseRepeat:e.headRepeat;if(!a)throw Error(`Kapture ${n} stability recapture is missing for ${e.id}`);if(a.error)throw Error(`Kapture ${n} stability recapture failed: ${a.error}`);if(r.sha256===a.sha256)continue;let o=n===`base`?e.baseRepeatRoot:e.headRepeatRoot,s=n===`base`?e.baseRoot:e.headRoot,l=`images/${n}-instability-diff/${i(r.imageFile)}`,u=await Rc(c(s,r.imageFile),c(o,a.imageFile),c(e.outputDir,l),e.threshold.pixelColorThreshold,{base:r.ignoredRegions??[],head:a.ignoredRegions??[]});if(u.diffRatio<=e.threshold.maxChangedPixelRatio){await re(c(e.outputDir,l),{force:!0});continue}t[n]={repeatImage:await sl(`${n}-repeat`,a,o,e.outputDir),diffImage:l,changedPixels:u.changedPixels,diffRatio:u.diffRatio}}return t.base||t.head?t:void 0}async function sl(e,t,n,r){let a=`images/${e}/${i(t.imageFile)}`;return await y(c(r,`images`,e),{recursive:!0}),await g(c(n,t.imageFile),c(r,a)),a}async function cl(e){let t=await te(f(e)),n=ue(async(e,n)=>{try{let r=decodeURIComponent(new URL(e.url??`/`,`http://localhost`).pathname),i=f(t,`.${r}`);if(!ll(t,i)){n.writeHead(403).end(`Forbidden`);return}let a=await te(i);if(!ll(t,a)){n.writeHead(403).end(`Forbidden`);return}if((await C(a)).isDirectory()&&(a=await te(f(a,`index.html`)),!ll(t,a))){n.writeHead(403).end(`Forbidden`);return}let s=await x(a);n.writeHead(200,{"cache-control":`no-store`,"content-type":nd[o(a)]??`application/octet-stream`}),n.end(s)}catch{n.writeHead(404).end(`Not found`)}});await ul(n);let r=n.address();if(!r||typeof r==`string`)throw Error(`Static server has no TCP address`);return{url:`http://127.0.0.1:${r.port}/`,close:()=>dl(n)}}function ll(e,t){return t===e||t.startsWith(`${e}${p}`)}function ul(e){return new Promise((t,n)=>{e.once(`error`,n),e.listen(0,`127.0.0.1`,()=>{e.off(`error`,n),t()})})}function dl(e){return new Promise((t,n)=>{e.close(e=>e?n(e):t())})}async function fl(e,t){await y(a(e),{recursive:!0}),await w(e,`${JSON.stringify(t,null,2)}\n`)}async function pl(e){return od.parse(JSON.parse(await x(e,`utf8`)))}function ml(e){return vd.parse(e)}async function hl(e){let t=c(e,sd),n;try{n=await x(t)}catch(e){return wl(e)?{evidence:{state:`missing`}}:{evidence:{state:`invalid`}}}try{let t=await gl(e,ml(JSON.parse(n.toString(`utf8`))));return{manifest:t,evidence:{state:`valid`,digest:yl(t)}}}catch{return{evidence:{state:`invalid`,digest:Sl(n)}}}}async function gl(e,t){let n=!0;for(let[r,i]of Object.entries(t.outputInventory))try{let t=c(e,r),a=await v(t);if(!a.isFile()||a.isSymbolicLink()){n=!1;break}let o=await x(t);if(o.byteLength!==i.size||Sl(o)!==i.sha256){n=!1;break}}catch{n=!1;break}if(n)for(let r of t.outputInventoryPrefixes){let i=await _l(e,r),a=Object.keys(t.outputInventory).filter(e=>e.startsWith(r)).sort();if(!i||!vl(i,a)){n=!1;break}}return n?t:vd.parse({...t,complete:!1,diagnostics:[...new Set([...t.diagnostics,`output-inventory-mismatch`])].sort()})}async function _l(e,t){let n=[],r=[t===``?``:t.slice(0,-1)];try{for(;r.length>0;){let t=r.pop(),i=await S(c(e,t),{withFileTypes:!0});for(let e of i){let i=t?`${t}/${e.name}`:e.name;if(e.isSymbolicLink())return null;if(e.isDirectory())r.push(i);else if(e.isFile())i!==`kapture-dependencies.json`&&n.push(i);else return null;if(n.length+r.length>1e5)return null}}}catch{return null}return n.sort()}function vl(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function yl(e){return Sl(JSON.stringify(Cl(e)))}function bl(e,t){return{base:e?{state:`valid`,digest:yl(e)}:{state:`missing`},head:t?{state:`valid`,digest:yl(t)}:{state:`missing`}}}function xl(e){return e!==``&&!e.includes(`\\`)&&!e.includes(`\0`)&&!e.startsWith(`/`)&&!/^[A-Za-z]:\//.test(e)&&e!==`.`&&e!==`..`&&!e.startsWith(`./`)&&!e.startsWith(`../`)&&!e.split(`/`).some(e=>e===`.`||e===`..`)&&!e.includes(`//`)&&!e.endsWith(`/`)}function Sl(e){return ie(`sha256`).update(e).digest(`hex`)}function Cl(e){return Array.isArray(e)?e.map(Cl):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Cl(t)]))}function wl(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}async function Tl({baseDir:e,headDir:t,changedFiles:n,changedFilesComplete:r=!0,changedFilesEvidence:i}){let[a,o,s,c]=await Promise.all([Dl(e),Dl(t),Bl(e,`base`),Bl(t,`head`)]);return El({baseIndex:a,headIndex:o,baseManifest:s.manifest,headManifest:c.manifest,changedFiles:n,changedFilesComplete:r,changedFilesEvidence:i,dependencyManifests:{base:s.evidence,head:c.evidence},initialFallbackReasons:[...s.reason?[s.reason]:[],...c.reason?[c.reason]:[]]})}function El(e){let t=Rl(e.changedFiles.map(jl)),n=Ol(e.baseIndex),r=Ol(e.headIndex),i=Rl([...n.keys(),...r.keys()]),a=[...r.keys()].filter(e=>!n.has(e)).sort(),o=[...n.keys()].filter(e=>!r.has(e)).sort(),s=[...e.initialFallbackReasons??[],...e.changedFilesComplete===!1?[{code:`changed-files-incomplete`}]:[]],{baseManifest:c,headManifest:l}=e,u=e.dependencyManifests??bl(c,l),d=new Set,f=new Set;!c&&!s.some(e=>e.code.startsWith(`base-manifest`))&&s.push({code:`base-manifest-missing`,side:`base`}),!l&&!s.some(e=>e.code.startsWith(`head-manifest`))&&s.push({code:`head-manifest-missing`,side:`head`}),c&&!c.complete&&s.push({code:`manifest-incomplete`,side:`base`}),l&&!l.complete&&s.push({code:`manifest-incomplete`,side:`head`});let p=new Map;if(c&&l){c.globalRuntimeFingerprint!==l.globalRuntimeFingerprint&&s.push({code:`global-runtime`});for(let e of new Set([...Object.keys(c.globalOutputFingerprints),...Object.keys(l.globalOutputFingerprints)]))(c.globalOutputFingerprints[e]!==l.globalOutputFingerprints[e]||!Ll(new Set(c.globalOutputStories[e]??[]),new Set(l.globalOutputStories[e]??[])))&&f.add(e);for(let e of new Set([...Object.keys(c.renderedOutputFingerprints),...Object.keys(l.renderedOutputFingerprints)]))c.renderedOutputFingerprints[e]!==l.renderedOutputFingerprints[e]&&d.add(e);if(c.moduleFingerprints&&l.moduleFingerprints)for(let e of new Set([...Object.keys(c.moduleFingerprints),...Object.keys(l.moduleFingerprints)]))c.moduleFingerprints[e]!==l.moduleFingerprints[e]&&d.add(e);for(let e of i){let t=n.get(e),i=r.get(e),a=t?kl(t,c,`base`,s):void 0,o=i?kl(i,l,`head`,s):void 0;p.set(e,{base:a,head:o})}let e=new Set,a=new Set;for(let t of[c,l])for(let[n,r]of Object.entries(t.modules)){e.add(n);for(let t of r)e.add(t)}for(let e of p.values()){if(e.base)for(let t of Pl(c,e.base))a.add(t);if(e.head)for(let t of Pl(l,e.head))a.add(t)}for(let e of f){let t=Fl(c,l,e);if(!t||[...t].some(e=>!a.has(e))){s.push({code:`global-output`,path:e});continue}for(let e of t)d.add(e)}for(let e of d)(Ml(e,c.globalInputs)||Ml(e,l.globalInputs))&&s.push({code:`global-input`,path:e});for(let n of t){if(Ml(n,c.globalInputs)||Ml(n,l.globalInputs)){s.push({code:`global-input`,path:n});continue}let t=Ml(n,c.ignoredInputs)&&Ml(n,l.ignoredInputs),r=Nl(c)&&Nl(l)&&Ml(n,c.fingerprintedInputs??[])&&Ml(n,l.fingerprintedInputs??[]);!t&&!r&&(!e.has(n)||!a.has(n))&&s.push({code:`unknown-input`,path:n})}}let m=zl(s);if(m.length>0||!c||!l)return{version:1,selectionMode:`full-fallback`,changedFiles:t,...e.changedFilesEvidence?{changedFilesEvidence:{...e.changedFilesEvidence}}:{},dependencyManifests:Ul(u),totalStoryIds:i,selectedStoryIds:i,skippedStoryIds:[],addedStoryIds:a,removedStoryIds:o,fallbackReasons:m};let h=new Set([...a,...o]);for(let e of i){let n=p.get(e);if(!n)continue;if(n.base!==n.head){h.add(e);continue}let r=n.base?Pl(c,n.base):new Set,i=n.head?Pl(l,n.head):new Set;if(!Ll(r,i)){h.add(e);continue}let a=new Set([...r,...i]);(t.some(e=>a.has(e))||[...a].some(e=>d.has(e)))&&h.add(e)}let g=[...h].sort();return{version:1,selectionMode:`affected`,changedFiles:t,...e.changedFilesEvidence?{changedFilesEvidence:{...e.changedFilesEvidence}}:{},dependencyManifests:Ul(u),totalStoryIds:i,selectedStoryIds:g,skippedStoryIds:i.filter(e=>!h.has(e)),addedStoryIds:a,removedStoryIds:o,fallbackReasons:[]}}async function Dl(e){return xd.parse(JSON.parse(await x(c(e,`index.json`),`utf8`)))}function Ol(e){return new Map(Object.values(e.entries).filter(e=>e.type===`story`).sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e]))}function kl(e,t,n,r){if(!e.importPath){r.push({code:`story-import-missing`,storyId:e.id,side:n});return}let i;try{i=Al(t.storybookRoot,e.importPath)}catch{r.push({code:`story-import-missing`,storyId:e.id,side:n});return}if(!t.modules[i]){r.push({code:`story-module-missing`,storyId:e.id,side:n});return}if(t.renderedModules&&!t.renderedModules[i]?.includes(i)){r.push({code:`story-module-missing`,storyId:e.id,side:n});return}return i}function Al(e,t){let n=t.replaceAll(`\\`,`/`).replace(/^\.\//,``);if(s(n)||/^[A-Za-z]:\//.test(n))throw Error(`Story importPath must be relative`);let r=u.normalize(u.join(e,n));if(r===`..`||r.startsWith(`../`)||r===`.`)throw Error(`Story importPath must stay within project root`);return r}function jl(e){let t=e.replaceAll(`\\`,`/`).replace(/^\.\//,``);if(t.length===0||t.includes(`\0`)||s(t)||/^[A-Za-z]:\//.test(t)||t===`..`||t.startsWith(`../`)||t.split(`/`).some(e=>e===`.`||e===`..`)||t.includes(`//`)||t.endsWith(`/`))throw Error(`Changed file must be a normalized project-relative path: ${e}`);return t}function Ml(e,t){return t.some(t=>e===t||l(e,t))}function Nl(e){return!e.complete||!e.moduleFingerprints?!1:Object.keys(e.modules).every(t=>e.moduleFingerprints?.[t]!==void 0)}function Pl(e,t){let n=Il(e,t),r=e.renderedModules?.[t];return r?new Set(r):n}function Fl(e,t,n){let r=e.globalOutputFingerprints[n]!==void 0,i=t.globalOutputFingerprints[n]!==void 0;if(r&&i&&e.globalOutputFingerprints[n]!==t.globalOutputFingerprints[n])return null;let a=new Set(e.globalOutputStories[n]??[]),o=new Set(t.globalOutputStories[n]??[]);if(r&&a.size===0||i&&o.size===0)return null;let s=new Set([...a,...o]);return s.size>0?s:null}function Il(e,t){let n=new Set,r=[t];for(;r.length>0;){let t=r.pop();if(!(!t||n.has(t))){n.add(t);for(let i of e.modules[t]??[])n.has(i)||r.push(i)}}return n}function Ll(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function Rl(e){return[...new Set(e)].sort()}function zl(e){let t=new Map;for(let n of e)t.set(Hl(n),n);let n=[...t.values()].sort(Vl);return n.length<=1e3?n:[...n.filter(e=>e.code!==`fallback-reasons-truncated`).slice(0,999),{code:`fallback-reasons-truncated`}].sort(Vl)}async function Bl(e,t){let n=await hl(e);if(n.manifest)return n;let r=`${t}-manifest-${n.evidence.state}`;return{evidence:n.evidence,reason:{code:r,side:t}}}function Vl(e,t){return Hl(e).localeCompare(Hl(t))}function Hl(e){return`${e.code}:${e.side??``}:${e.path??``}:${e.storyId??``}`}function Ul(e){return{base:{...e.base},head:{...e.head}}}async function Wl(e){let t=await fetch(new URL(`index.json`,ql(e)));if(!t.ok)throw Error(`Failed to read Storybook index (${t.status}) from ${e}`);return Cd.parse(await t.json())}function Gl(e){return Object.values(e.entries).filter(e=>e.type===`story`).sort((e,t)=>e.id.localeCompare(t.id))}function Kl(e,t){let n=new URL(`iframe.html`,ql(e));return n.searchParams.set(`id`,t),n.searchParams.set(`viewMode`,`story`),n.toString()}function ql(e){return e.endsWith(`/`)?e:`${e}/`}function Jl(e){let t=iu(e,`bridge`);if(t.protocolVersion!==4)throw Error(`Unsupported Kapture Storybook protocol ${String(t.protocolVersion)}; expected 4`);let n=ou(t.adapterVersion,`adapterVersion`),r=t.state;if(r===`booting`)return{protocolVersion:4,adapterVersion:n,state:r};if(![`rendering`,`ready`,`error`].includes(r))throw Error(`Invalid Kapture Storybook bridge state: ${String(r)}`);let i=ou(t.storyId,`storyId`),a=pu(t.generation,`generation`),o=lu(t.renderId,`renderId`);if(r===`rendering`)return{protocolVersion:4,adapterVersion:n,state:r,storyId:i,generation:a,renderId:o,parameters:t.parameters===void 0?void 0:Yl(t.parameters)};if(r===`ready`){if(o===void 0)throw Error(`Kapture ready bridge requires renderId`);return{protocolVersion:4,adapterVersion:n,state:r,storyId:i,generation:a,renderId:o,parameters:Yl(t.parameters)}}let s=iu(t.error,`error`);if(s.kind!==`configuration`&&s.kind!==`storybook`)throw Error(`Invalid Kapture bridge error kind: ${String(s.kind)}`);return{protocolVersion:4,adapterVersion:n,state:`error`,storyId:i,generation:a,renderId:o,error:{kind:s.kind,message:ou(s.message,`error.message`)}}}function Yl(e){let t=iu(e,`parameters`);return gu({captureEnabled:cu(t.captureEnabled,`captureEnabled`),captureViewports:Xl(t.captureViewports),captureArea:Zl(t.captureArea),captureDelayMs:du(t.captureDelayMs,`captureDelayMs`),waitForElement:$l(t.waitForElement),animationState:eu(t.animationState),maskSelectors:ru(t.maskSelectors,`maskSelectors`),diffIgnoreSelectors:ru(t.diffIgnoreSelectors,`diffIgnoreSelectors`),waitForFonts:cu(t.waitForFonts,`waitForFonts`),fontAssertions:t.fontAssertions===void 0?void 0:au(t.fontAssertions,`fontAssertions`).map((e,t)=>tu(e,`fontAssertions[${t}]`)),diff:nu(t.diff)})}function Xl(e){if(e===void 0)return;let t=au(e,`captureViewports`);if(t.length===0)throw Error(`Kapture captureViewports must contain at least one viewport; use captureEnabled: false to skip`);return t.map((e,t)=>Ql(e,`captureViewports[${t}]`))}function Zl(e){if(e===void 0||e===`full-page`||e===`viewport`)return e;throw Error(`Invalid Kapture captureArea: ${String(e)}`)}function Ql(e,t){let n=iu(e,t);return{name:ou(n.name,`${t}.name`),width:fu(n.width,`${t}.width`),height:fu(n.height,`${t}.height`)}}function $l(e){if(e===void 0)return;let t=iu(e,`waitForElement`),n=t.state;if(n!==void 0&&n!==`attached`&&n!==`visible`&&n!==`hidden`&&n!==`detached`)throw Error(`Invalid Kapture waitForElement state: ${String(n)}`);return gu({selector:ou(t.selector,`waitForElement.selector`),state:n,timeoutMs:du(t.timeoutMs,`waitForElement.timeoutMs`)})}function eu(e){if(e!==void 0)return e===`disabled`||e===`start`||e===`end`?e:{atMs:uu(iu(e,`animationState`).atMs,`animationState.atMs`)}}function tu(e,t){let n=iu(e,t),r=n.weight;if(r!==void 0&&typeof r!=`string`&&typeof r!=`number`)throw Error(`${t}.weight must be a string or number`);return gu({family:ou(n.family,`${t}.family`),glyphs:ou(n.glyphs,`${t}.glyphs`),style:su(n.style,`${t}.style`),weight:r})}function nu(e){if(e===void 0)return;let t=iu(e,`diff`);if(`maxChangedPixelRatio`in t)throw Error(`Kapture diff.maxChangedPixelRatio is not supported; use diff.maxChangedPixelPercentage with a value between 0 and 100`);return gu({pixelColorThreshold:mu(t.pixelColorThreshold,`diff.pixelColorThreshold`),maxChangedPixelPercentage:hu(t.maxChangedPixelPercentage,`diff.maxChangedPixelPercentage`)})}function ru(e,t){if(e!==void 0)return au(e,t).map((e,n)=>ou(e,`${t}[${n}]`))}function iu(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Kapture ${t} must be an object`);return e}function au(e,t){if(!Array.isArray(e))throw Error(`Kapture ${t} must be an array`);return e}function ou(e,t){if(typeof e!=`string`||!e.trim())throw Error(`Kapture ${t} must be a non-empty string`);return e}function su(e,t){return e===void 0?void 0:ou(e,t)}function cu(e,t){if(e!==void 0){if(typeof e!=`boolean`)throw Error(`Kapture ${t} must be a boolean`);return e}}function lu(e,t){if(e!==void 0){if(typeof e!=`number`||!Number.isFinite(e))throw Error(`Kapture ${t} must be a finite number`);return e}}function uu(e,t){let n=lu(e,t);if(n===void 0||n<0)throw Error(`Kapture ${t} must be a non-negative number`);return n}function du(e,t){return e===void 0?void 0:uu(e,t)}function fu(e,t){let n=lu(e,t);if(n===void 0||n<=0)throw Error(`Kapture ${t} must be positive`);return n}function pu(e,t){let n=uu(e,t);if(!Number.isInteger(n))throw Error(`Kapture ${t} must be an integer`);return n}function mu(e,t){if(e===void 0)return;let n=uu(e,t);if(n>1)throw Error(`Kapture ${t} must be between 0 and 1`);return n}function hu(e,t){if(e===void 0)return;let n=uu(e,t);if(n>100)throw Error(`Kapture ${t} must be between 0 and 100`);return n}function gu(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}async function _u(e,t,n){let r=JSON.stringify(t),i=await e.evaluate(`(async () => {
|
|
569
|
+
})();`}function Qc(e){let t=new Set;for(let n of Object.values(e.entries)){for(let e of od){let r=n[e];r&&t.add(r)}for(let e of[n.instability?.base,n.instability?.head])e?.repeatImage&&t.add(e.repeatImage),e?.diffImage&&t.add(e.diffImage)}return[...t].sort(il)}function $c(e){return nl({report:tl(e)})}function el(e,t){let n=Qc(e),r=new Set(n),i=new Map;for(let e of t){if(!e.path||!sd.test(e.sha256))throw Error(`Invalid report image digest for ${e.path||`<empty path>`}`);if(i.has(e.path))throw Error(`Duplicate report image digest for ${e.path}`);i.set(e.path,e.sha256)}for(let e of n)if(!i.has(e))throw Error(`Missing report image digest for ${e}`);for(let e of i.keys())if(!r.has(e))throw Error(`Unexpected report image digest for ${e}`);return nl({report:tl(e),images:n.map(e=>({path:e,sha256:i.get(e)}))})}function tl(e){let{contentDigest:t,...n}=e;return n}function nl(e){return T(`sha256`).update(JSON.stringify(rl(e))).digest(`hex`)}function rl(e){return Array.isArray(e)?e.map(rl):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>il(e,t)).map(([e,t])=>[e,rl(t)]))}function il(e,t){return e<t?-1:+(e>t)}async function al(e){let t=await x(e);return T(`sha256`).update(t).digest(`hex`)}function ol(e){let t=T(`sha256`).update(e).digest(`hex`).slice(0,12);return`${e.replace(/[^a-zA-Z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,120)||`snapshot`}-${t}.png`}async function sl(e){let{baseManifest:t,headManifest:n,baseRoot:r,headRoot:i,outputDir:a,threshold:o,coverage:s,stability:l}=e;Jc(t.environment,n.environment),await re(c(a,`images`),{recursive:!0,force:!0}),await y(c(a,`images`),{recursive:!0});let u=s?new Set(s.selectedStoryIds):void 0,d=[...new Set([...Object.keys(t.snapshots),...Object.keys(n.snapshots)])].filter(e=>{if(!u)return!0;let r=n.snapshots[e]??t.snapshots[e];return r?u.has(r.storyId):!1}).sort(),f={};for(let e of d){let s=t.snapshots[e],c=n.snapshots[e];f[e]=await cl({id:e,base:s,head:c,baseRoot:r,headRoot:i,outputDir:a,threshold:o,stability:l&&s&&c?{base:l.baseManifest.snapshots[e],head:l.headManifest.snapshots[e],baseRoot:l.baseRoot,headRoot:l.headRoot}:void 0})}let p=Object.values(f),m={version:3,baseRevision:t.revision,headRevision:n.revision,environment:t.environment,createdAt:new Date().toISOString(),threshold:o,summary:{total:p.length,unchanged:p.filter(e=>e.status===`unchanged`).length,changed:p.filter(e=>e.status===`changed`).length,unstable:p.filter(e=>e.status===`unstable`).length,added:p.filter(e=>e.status===`added`).length,removed:p.filter(e=>e.status===`removed`).length,errors:p.filter(e=>e.status===`error`).length},...s?{coverage:s}:{},entries:f},h=[];for(let e of Qc(m))h.push({path:e,sha256:await al(c(a,e))});return m.contentDigest=el(m,h),await w(c(a,`report.json`),`${JSON.stringify(m,null,2)}\n`),m}async function cl(e){let{id:t,base:n,head:r,baseRoot:a,headRoot:o,outputDir:s,threshold:l,stability:u}=e,d=r??n;if(!d)throw Error(`Snapshot ${t} has no base or head record`);let f={id:t,storyId:d.storyId,title:d.title,name:d.name,viewport:d.viewport},p={...l,...r?.threshold??n?.threshold};if(n?.error||r?.error)return{...f,status:`error`,threshold:p,error:[n?.error,r?.error].filter(Boolean).join(` | `)};if(!n&&r)return{...f,status:`added`,threshold:p,headImage:await ul(`head`,r,o,s)};if(n&&!r)return{...f,status:`removed`,threshold:p,baseImage:await ul(`base`,n,a,s)};if(!n||!r)throw Error(`Invalid manifest pair for ${t}`);if(n.viewport.width!==r.viewport.width||n.viewport.height!==r.viewport.height)return{...f,status:`error`,threshold:p,error:`Viewport contract differs: base=${n.viewport.width}x${n.viewport.height}, head=${r.viewport.width}x${r.viewport.height}`};if(n.sha256===r.sha256)return{...f,status:`unchanged`,threshold:p};let m=`images/diff/${i(n.imageFile)}`;try{let e=await Vc(c(a,n.imageFile),c(o,r.imageFile),c(s,m),p.pixelColorThreshold,{base:n.ignoredRegions??[],head:r.ignoredRegions??[]});if(e.diffRatio<=p.maxChangedPixelRatio)return await re(c(s,m),{force:!0}),{...f,status:`unchanged`,threshold:p,changedPixels:e.changedPixels,diffRatio:e.diffRatio};let[i,l]=await Promise.all([ul(`base`,n,a,s),ul(`head`,r,o,s)]),d=u?await ll({id:t,base:n,head:r,baseRepeat:u.base,headRepeat:u.head,baseRoot:a,headRoot:o,baseRepeatRoot:u.baseRoot,headRepeatRoot:u.headRoot,outputDir:s,threshold:p}):void 0;return{...f,status:d?`unstable`:`changed`,threshold:p,baseImage:i,headImage:l,diffImage:m,changedPixels:e.changedPixels,diffRatio:e.diffRatio,ignoredRegions:e.ignoredRegions,...d?{instability:d}:{}}}catch(e){return{...f,status:`error`,threshold:p,error:e instanceof Error?e.message:String(e)}}}async function ll(e){let t={};for(let n of[`base`,`head`]){let r=e[n],a=n===`base`?e.baseRepeat:e.headRepeat;if(!a)throw Error(`Kapture ${n} stability recapture is missing for ${e.id}`);if(a.error)throw Error(`Kapture ${n} stability recapture failed: ${a.error}`);if(r.sha256===a.sha256)continue;let o=n===`base`?e.baseRepeatRoot:e.headRepeatRoot,s=n===`base`?e.baseRoot:e.headRoot,l=`images/${n}-instability-diff/${i(r.imageFile)}`,u=await Vc(c(s,r.imageFile),c(o,a.imageFile),c(e.outputDir,l),e.threshold.pixelColorThreshold,{base:r.ignoredRegions??[],head:a.ignoredRegions??[]});if(u.diffRatio<=e.threshold.maxChangedPixelRatio){await re(c(e.outputDir,l),{force:!0});continue}t[n]={repeatImage:await ul(`${n}-repeat`,a,o,e.outputDir),diffImage:l,changedPixels:u.changedPixels,diffRatio:u.diffRatio}}return t.base||t.head?t:void 0}async function ul(e,t,n,r){let a=`images/${e}/${i(t.imageFile)}`;return await y(c(r,`images`,e),{recursive:!0}),await g(c(n,t.imageFile),c(r,a)),a}async function dl(e){let t=await te(f(e)),n=le(async(e,n)=>{try{let r=decodeURIComponent(new URL(e.url??`/`,`http://localhost`).pathname),i=f(t,`.${r}`);if(!fl(t,i)){n.writeHead(403).end(`Forbidden`);return}let a=await te(i);if(!fl(t,a)){n.writeHead(403).end(`Forbidden`);return}if((await C(a)).isDirectory()&&(a=await te(f(a,`index.html`)),!fl(t,a))){n.writeHead(403).end(`Forbidden`);return}let s=await x(a);n.writeHead(200,{"cache-control":`no-store`,"content-type":cd[o(a)]??`application/octet-stream`}),n.end(s)}catch{n.writeHead(404).end(`Not found`)}});await pl(n);let r=n.address();if(!r||typeof r==`string`)throw Error(`Static server has no TCP address`);return{url:`http://127.0.0.1:${r.port}/`,close:()=>ml(n)}}function fl(e,t){return t===e||t.startsWith(`${e}${p}`)}function pl(e){return new Promise((t,n)=>{e.once(`error`,n),e.listen(0,`127.0.0.1`,()=>{e.off(`error`,n),t()})})}function ml(e){return new Promise((t,n)=>{e.close(e=>e?n(e):t())})}async function hl(e,t){await y(a(e),{recursive:!0}),await w(e,`${JSON.stringify(t,null,2)}\n`)}async function gl(e){return fd.parse(JSON.parse(await x(e,`utf8`)))}async function _l(e,t){let n=T(`sha256`).update(`kapture-capture-cache\0${t}\0`);async function r(e,t){let i=await v(e);if(i.isSymbolicLink())throw Error(`Capture cache cannot fingerprint symlinks`);if(i.isDirectory())for(let n of(await S(e)).sort())await r(c(e,n),`${t}/${n}`);else if(i.isFile()){n.update(`${t}\0${i.size}\0`);for await(let t of de(e))n.update(t)}else throw Error(`Unsupported Storybook file type`)}return await r(e,``),n.digest(`hex`)}async function vl(e,t){let n=pd.parse(JSON.parse(await x(c(e,`cache.json`),`utf8`)));if(n.buildDigest!==t)throw Error(`Capture cache build mismatch`);if(await al(c(e,`manifest.json`))!==n.manifestDigest)throw Error(`Capture cache manifest digest mismatch`);let r=await gl(c(e,`manifest.json`));if(Object.values(r.snapshots).some(e=>e.error))throw Error(`Capture cache contains errors`);return r}async function yl(e,t,n,r){if(!(!Object.keys(r.snapshots).length||Object.values(r.snapshots).some(e=>e.error))){await y(c(e,`images`),{recursive:!0});for(let n of Object.values(r.snapshots)){let r=c(t,n.imageFile);if(await al(r)!==n.sha256)throw Error(`Capture cache image digest mismatch`);await g(r,c(e,n.imageFile))}await hl(c(e,`manifest.json`),r),await w(c(e,`cache.json`),JSON.stringify({version:1,buildDigest:n,manifestDigest:await al(c(e,`manifest.json`))}))}}function bl(e){return Td.parse(e)}async function xl(e){let t=c(e,md),n;try{n=await x(t)}catch(e){return Al(e)?{evidence:{state:`missing`}}:{evidence:{state:`invalid`}}}try{let t=await Sl(e,bl(JSON.parse(n.toString(`utf8`))));return{manifest:t,evidence:{state:`valid`,digest:Tl(t)}}}catch{return{evidence:{state:`invalid`,digest:Ol(n)}}}}async function Sl(e,t){let n=!0;for(let[r,i]of Object.entries(t.outputInventory))try{let t=c(e,r),a=await v(t);if(!a.isFile()||a.isSymbolicLink()){n=!1;break}let o=await x(t);if(o.byteLength!==i.size||Ol(o)!==i.sha256){n=!1;break}}catch{n=!1;break}if(n)for(let r of t.outputInventoryPrefixes){let i=await Cl(e,r),a=Object.keys(t.outputInventory).filter(e=>e.startsWith(r)).sort();if(!i||!wl(i,a)){n=!1;break}}return n?t:Td.parse({...t,complete:!1,diagnostics:[...new Set([...t.diagnostics,`output-inventory-mismatch`])].sort()})}async function Cl(e,t){let n=[],r=[t===``?``:t.slice(0,-1)];try{for(;r.length>0;){let t=r.pop(),i=await S(c(e,t),{withFileTypes:!0});for(let e of i){let i=t?`${t}/${e.name}`:e.name;if(e.isSymbolicLink())return null;if(e.isDirectory())r.push(i);else if(e.isFile())i!==`kapture-dependencies.json`&&n.push(i);else return null;if(n.length+r.length>1e5)return null}}}catch{return null}return n.sort()}function wl(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Tl(e){return Ol(JSON.stringify(kl(e)))}function El(e,t){return{base:e?{state:`valid`,digest:Tl(e)}:{state:`missing`},head:t?{state:`valid`,digest:Tl(t)}:{state:`missing`}}}function Dl(e){return e!==``&&!e.includes(`\\`)&&!e.includes(`\0`)&&!e.startsWith(`/`)&&!/^[A-Za-z]:\//.test(e)&&e!==`.`&&e!==`..`&&!e.startsWith(`./`)&&!e.startsWith(`../`)&&!e.split(`/`).some(e=>e===`.`||e===`..`)&&!e.includes(`//`)&&!e.endsWith(`/`)}function Ol(e){return T(`sha256`).update(e).digest(`hex`)}function kl(e){return Array.isArray(e)?e.map(kl):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,kl(t)]))}function Al(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}async function jl({baseDir:e,headDir:t,changedFiles:n,changedFilesComplete:r=!0,changedFilesEvidence:i}){let[a,o,s,c]=await Promise.all([Nl(e),Nl(t),Kl(e,`base`),Kl(t,`head`)]);return Ml({baseIndex:a,headIndex:o,baseManifest:s.manifest,headManifest:c.manifest,changedFiles:n,changedFilesComplete:r,changedFilesEvidence:i,dependencyManifests:{base:s.evidence,head:c.evidence},initialFallbackReasons:[...s.reason?[s.reason]:[],...c.reason?[c.reason]:[]]})}function Ml(e){let t=Wl(e.changedFiles.map(Ll)),n=Pl(e.baseIndex),r=Pl(e.headIndex),i=Wl([...n.keys(),...r.keys()]),a=[...r.keys()].filter(e=>!n.has(e)).sort(),o=[...n.keys()].filter(e=>!r.has(e)).sort(),s=[...e.initialFallbackReasons??[],...e.changedFilesComplete===!1?[{code:`changed-files-incomplete`}]:[]],{baseManifest:c,headManifest:l}=e,u=e.dependencyManifests??El(c,l),d=new Set,f=new Set;!c&&!s.some(e=>e.code.startsWith(`base-manifest`))&&s.push({code:`base-manifest-missing`,side:`base`}),!l&&!s.some(e=>e.code.startsWith(`head-manifest`))&&s.push({code:`head-manifest-missing`,side:`head`}),c&&!c.complete&&s.push({code:`manifest-incomplete`,side:`base`}),l&&!l.complete&&s.push({code:`manifest-incomplete`,side:`head`});let p=new Map;if(c&&l){c.globalRuntimeFingerprint!==l.globalRuntimeFingerprint&&s.push({code:`global-runtime`});for(let e of new Set([...Object.keys(c.globalOutputFingerprints),...Object.keys(l.globalOutputFingerprints)]))(c.globalOutputFingerprints[e]!==l.globalOutputFingerprints[e]||!Ul(new Set(c.globalOutputStories[e]??[]),new Set(l.globalOutputStories[e]??[])))&&f.add(e);for(let e of new Set([...Object.keys(c.renderedOutputFingerprints),...Object.keys(l.renderedOutputFingerprints)]))c.renderedOutputFingerprints[e]!==l.renderedOutputFingerprints[e]&&d.add(e);if(c.moduleFingerprints&&l.moduleFingerprints)for(let e of new Set([...Object.keys(c.moduleFingerprints),...Object.keys(l.moduleFingerprints)]))c.moduleFingerprints[e]!==l.moduleFingerprints[e]&&d.add(e);for(let e of i){let t=n.get(e),i=r.get(e),a=t?Fl(t,c,`base`,s):void 0,o=i?Fl(i,l,`head`,s):void 0;p.set(e,{base:a,head:o})}let e=new Set,a=new Set;for(let t of[c,l])for(let[n,r]of Object.entries(t.modules)){e.add(n);for(let t of r)e.add(t)}for(let e of p.values()){if(e.base)for(let t of Bl(c,e.base))a.add(t);if(e.head)for(let t of Bl(l,e.head))a.add(t)}for(let e of f){let t=Vl(c,l,e);if(!t||[...t].some(e=>!a.has(e))){s.push({code:`global-output`,path:e});continue}for(let e of t)d.add(e)}for(let e of d)(Rl(e,c.globalInputs)||Rl(e,l.globalInputs))&&s.push({code:`global-input`,path:e});for(let n of t){if(Rl(n,c.globalInputs)||Rl(n,l.globalInputs)){s.push({code:`global-input`,path:n});continue}let t=Rl(n,c.ignoredInputs)&&Rl(n,l.ignoredInputs),r=zl(c)&&zl(l)&&Rl(n,c.fingerprintedInputs??[])&&Rl(n,l.fingerprintedInputs??[]);!t&&!r&&(!e.has(n)||!a.has(n))&&s.push({code:`unknown-input`,path:n})}}let m=Gl(s);if(m.length>0||!c||!l)return{version:1,selectionMode:`full-fallback`,changedFiles:t,...e.changedFilesEvidence?{changedFilesEvidence:{...e.changedFilesEvidence}}:{},dependencyManifests:Yl(u),totalStoryIds:i,selectedStoryIds:i,skippedStoryIds:[],addedStoryIds:a,removedStoryIds:o,fallbackReasons:m};let h=new Set([...a,...o]);for(let e of i){let n=p.get(e);if(!n)continue;if(n.base!==n.head){h.add(e);continue}let r=n.base?Bl(c,n.base):new Set,i=n.head?Bl(l,n.head):new Set;if(!Ul(r,i)){h.add(e);continue}let a=new Set([...r,...i]);(t.some(e=>a.has(e))||[...a].some(e=>d.has(e)))&&h.add(e)}let g=[...h].sort();return{version:1,selectionMode:`affected`,changedFiles:t,...e.changedFilesEvidence?{changedFilesEvidence:{...e.changedFilesEvidence}}:{},dependencyManifests:Yl(u),totalStoryIds:i,selectedStoryIds:g,skippedStoryIds:i.filter(e=>!h.has(e)),addedStoryIds:a,removedStoryIds:o,fallbackReasons:[]}}async function Nl(e){return Od.parse(JSON.parse(await x(c(e,`index.json`),`utf8`)))}function Pl(e){return new Map(Object.values(e.entries).filter(e=>e.type===`story`).sort((e,t)=>e.id.localeCompare(t.id)).map(e=>[e.id,e]))}function Fl(e,t,n,r){if(!e.importPath){r.push({code:`story-import-missing`,storyId:e.id,side:n});return}let i;try{i=Il(t.storybookRoot,e.importPath)}catch{r.push({code:`story-import-missing`,storyId:e.id,side:n});return}if(!t.modules[i]){r.push({code:`story-module-missing`,storyId:e.id,side:n});return}if(t.renderedModules&&!t.renderedModules[i]?.includes(i)){r.push({code:`story-module-missing`,storyId:e.id,side:n});return}return i}function Il(e,t){let n=t.replaceAll(`\\`,`/`).replace(/^\.\//,``);if(s(n)||/^[A-Za-z]:\//.test(n))throw Error(`Story importPath must be relative`);let r=u.normalize(u.join(e,n));if(r===`..`||r.startsWith(`../`)||r===`.`)throw Error(`Story importPath must stay within project root`);return r}function Ll(e){let t=e.replaceAll(`\\`,`/`).replace(/^\.\//,``);if(t.length===0||t.includes(`\0`)||s(t)||/^[A-Za-z]:\//.test(t)||t===`..`||t.startsWith(`../`)||t.split(`/`).some(e=>e===`.`||e===`..`)||t.includes(`//`)||t.endsWith(`/`))throw Error(`Changed file must be a normalized project-relative path: ${e}`);return t}function Rl(e,t){return t.some(t=>e===t||l(e,t))}function zl(e){return!e.complete||!e.moduleFingerprints?!1:Object.keys(e.modules).every(t=>e.moduleFingerprints?.[t]!==void 0)}function Bl(e,t){let n=Hl(e,t),r=e.renderedModules?.[t];return r?new Set(r):n}function Vl(e,t,n){let r=e.globalOutputFingerprints[n]!==void 0,i=t.globalOutputFingerprints[n]!==void 0;if(r&&i&&e.globalOutputFingerprints[n]!==t.globalOutputFingerprints[n])return null;let a=new Set(e.globalOutputStories[n]??[]),o=new Set(t.globalOutputStories[n]??[]);if(r&&a.size===0||i&&o.size===0)return null;let s=new Set([...a,...o]);return s.size>0?s:null}function Hl(e,t){let n=new Set,r=[t];for(;r.length>0;){let t=r.pop();if(!(!t||n.has(t))){n.add(t);for(let i of e.modules[t]??[])n.has(i)||r.push(i)}}return n}function Ul(e,t){return e.size===t.size&&[...e].every(e=>t.has(e))}function Wl(e){return[...new Set(e)].sort()}function Gl(e){let t=new Map;for(let n of e)t.set(Jl(n),n);let n=[...t.values()].sort(ql);return n.length<=1e3?n:[...n.filter(e=>e.code!==`fallback-reasons-truncated`).slice(0,999),{code:`fallback-reasons-truncated`}].sort(ql)}async function Kl(e,t){let n=await xl(e);if(n.manifest)return n;let r=`${t}-manifest-${n.evidence.state}`;return{evidence:n.evidence,reason:{code:r,side:t}}}function ql(e,t){return Jl(e).localeCompare(Jl(t))}function Jl(e){return`${e.code}:${e.side??``}:${e.path??``}:${e.storyId??``}`}function Yl(e){return{base:{...e.base},head:{...e.head}}}async function Xl(e){let t=await fetch(new URL(`index.json`,$l(e)));if(!t.ok)throw Error(`Failed to read Storybook index (${t.status}) from ${e}`);return Ad.parse(await t.json())}function Zl(e){return Object.values(e.entries).filter(e=>e.type===`story`).sort((e,t)=>e.id.localeCompare(t.id))}function Ql(e,t){let n=new URL(`iframe.html`,$l(e));return n.searchParams.set(`id`,t),n.searchParams.set(`viewMode`,`story`),n.toString()}function $l(e){return e.endsWith(`/`)?e:`${e}/`}function eu(e){let t=uu(e,`bridge`);if(t.protocolVersion!==4)throw Error(`Unsupported Kapture Storybook protocol ${String(t.protocolVersion)}; expected 4`);let n=fu(t.adapterVersion,`adapterVersion`),r=t.state;if(r===`booting`)return{protocolVersion:4,adapterVersion:n,state:r};if(![`rendering`,`ready`,`error`].includes(r))throw Error(`Invalid Kapture Storybook bridge state: ${String(r)}`);let i=fu(t.storyId,`storyId`),a=yu(t.generation,`generation`),o=hu(t.renderId,`renderId`);if(r===`rendering`)return{protocolVersion:4,adapterVersion:n,state:r,storyId:i,generation:a,renderId:o,parameters:t.parameters===void 0?void 0:tu(t.parameters)};if(r===`ready`){if(o===void 0)throw Error(`Kapture ready bridge requires renderId`);return{protocolVersion:4,adapterVersion:n,state:r,storyId:i,generation:a,renderId:o,parameters:tu(t.parameters)}}let s=uu(t.error,`error`);if(s.kind!==`configuration`&&s.kind!==`storybook`)throw Error(`Invalid Kapture bridge error kind: ${String(s.kind)}`);return{protocolVersion:4,adapterVersion:n,state:`error`,storyId:i,generation:a,renderId:o,error:{kind:s.kind,message:fu(s.message,`error.message`)}}}function tu(e){let t=uu(e,`parameters`);return Su({captureEnabled:mu(t.captureEnabled,`captureEnabled`),captureViewports:nu(t.captureViewports),captureArea:ru(t.captureArea),captureDelayMs:_u(t.captureDelayMs,`captureDelayMs`),waitForElement:au(t.waitForElement),animationState:ou(t.animationState),maskSelectors:lu(t.maskSelectors,`maskSelectors`),diffIgnoreSelectors:lu(t.diffIgnoreSelectors,`diffIgnoreSelectors`),waitForFonts:mu(t.waitForFonts,`waitForFonts`),fontAssertions:t.fontAssertions===void 0?void 0:du(t.fontAssertions,`fontAssertions`).map((e,t)=>su(e,`fontAssertions[${t}]`)),diff:cu(t.diff)})}function nu(e){if(e===void 0)return;let t=du(e,`captureViewports`);if(t.length===0)throw Error(`Kapture captureViewports must contain at least one viewport; use captureEnabled: false to skip`);return t.map((e,t)=>iu(e,`captureViewports[${t}]`))}function ru(e){if(e===void 0||e===`full-page`||e===`viewport`)return e;throw Error(`Invalid Kapture captureArea: ${String(e)}`)}function iu(e,t){let n=uu(e,t);return{name:fu(n.name,`${t}.name`),width:vu(n.width,`${t}.width`),height:vu(n.height,`${t}.height`)}}function au(e){if(e===void 0)return;let t=uu(e,`waitForElement`),n=t.state;if(n!==void 0&&n!==`attached`&&n!==`visible`&&n!==`hidden`&&n!==`detached`)throw Error(`Invalid Kapture waitForElement state: ${String(n)}`);return Su({selector:fu(t.selector,`waitForElement.selector`),state:n,timeoutMs:_u(t.timeoutMs,`waitForElement.timeoutMs`)})}function ou(e){if(e!==void 0)return e===`disabled`||e===`start`||e===`end`?e:{atMs:gu(uu(e,`animationState`).atMs,`animationState.atMs`)}}function su(e,t){let n=uu(e,t),r=n.weight;if(r!==void 0&&typeof r!=`string`&&typeof r!=`number`)throw Error(`${t}.weight must be a string or number`);return Su({family:fu(n.family,`${t}.family`),glyphs:fu(n.glyphs,`${t}.glyphs`),style:pu(n.style,`${t}.style`),weight:r})}function cu(e){if(e===void 0)return;let t=uu(e,`diff`);if(`maxChangedPixelRatio`in t)throw Error(`Kapture diff.maxChangedPixelRatio is not supported; use diff.maxChangedPixelPercentage with a value between 0 and 100`);return Su({pixelColorThreshold:bu(t.pixelColorThreshold,`diff.pixelColorThreshold`),maxChangedPixelPercentage:xu(t.maxChangedPixelPercentage,`diff.maxChangedPixelPercentage`)})}function lu(e,t){if(e!==void 0)return du(e,t).map((e,n)=>fu(e,`${t}[${n}]`))}function uu(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Kapture ${t} must be an object`);return e}function du(e,t){if(!Array.isArray(e))throw Error(`Kapture ${t} must be an array`);return e}function fu(e,t){if(typeof e!=`string`||!e.trim())throw Error(`Kapture ${t} must be a non-empty string`);return e}function pu(e,t){return e===void 0?void 0:fu(e,t)}function mu(e,t){if(e!==void 0){if(typeof e!=`boolean`)throw Error(`Kapture ${t} must be a boolean`);return e}}function hu(e,t){if(e!==void 0){if(typeof e!=`number`||!Number.isFinite(e))throw Error(`Kapture ${t} must be a finite number`);return e}}function gu(e,t){let n=hu(e,t);if(n===void 0||n<0)throw Error(`Kapture ${t} must be a non-negative number`);return n}function _u(e,t){return e===void 0?void 0:gu(e,t)}function vu(e,t){let n=hu(e,t);if(n===void 0||n<=0)throw Error(`Kapture ${t} must be positive`);return n}function yu(e,t){let n=gu(e,t);if(!Number.isInteger(n))throw Error(`Kapture ${t} must be an integer`);return n}function bu(e,t){if(e===void 0)return;let n=gu(e,t);if(n>1)throw Error(`Kapture ${t} must be between 0 and 1`);return n}function xu(e,t){if(e===void 0)return;let n=gu(e,t);if(n>100)throw Error(`Kapture ${t} must be between 0 and 100`);return n}function Su(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}async function Cu(e,t,n){let r=JSON.stringify(t),i=await e.evaluate(`(async () => {
|
|
570
570
|
const expectedStoryId = ${r};
|
|
571
571
|
const deadline = performance.now() + 10000;
|
|
572
572
|
let sawAdapter = false;
|
|
@@ -594,80 +594,80 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
594
594
|
}
|
|
595
595
|
await new Promise(resolve => setTimeout(resolve, 20));
|
|
596
596
|
}
|
|
597
|
-
})()`);if(i.kind===`timeout`)throw i.sawAdapter?Error(`Kapture Storybook adapter did not become ready for ${t} (last state: ${i.lastState??`unknown`}).`):Error(`Kapture Storybook adapter was not found for ${t}. Install @kaptures/storybook and register kapture() in .storybook/preview.`);let a;try{a=Jl(i.value)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${t}. Install matching versions of @kaptures/cli and @kaptures/storybook.`,{cause:e})}if(a.state===`error`){let e=a.error.kind===`configuration`?`configuration`:`lifecycle`;throw Error(`Kapture Storybook ${e} error for ${t}: ${a.error.message}`)}if(a.state!==`ready`||a.storyId!==t)throw Error(`Kapture Storybook returned invalid terminal state for ${t}`);if(a.adapterVersion!==n)throw Error(`Kapture adapter version mismatch for ${t}: CLI ${n}, Storybook ${a.adapterVersion}. Install matching exact versions of @kaptures/cli and @kaptures/storybook.`);return{adapterVersion:a.adapterVersion,generation:a.generation,parameters:a.parameters}}function vu(e,t){return e.adapterVersion===t.adapterVersion&&e.generation===t.generation}async function yu(e,t=wd){let n=e.workers??4;if(!Number.isInteger(n)||n<1||n>8)throw Error(`Kapture workers must be between 1 and 8`);let r=f(e.outputDir);await y(r),await y(c(r,`images`));let i=await cl(e.headDir);try{let a=Gl(await Wl(i.url));if(!a.length)throw Error(`Initial adoption requires at least one story`);let[o,s]=await Promise.all([t.getBrowserVersion(),t.getFontsFingerprint()]),l=Hc({browserVersion:o,fontsFingerprint:s,frozenTime:e.frozenTime,randomSeed:e.randomSeed,locale:e.locale,timezone:e.timezone}),u=c(r,`hermetic-init.js`);await w(u,Jc(l));let d=Su(e.headRevision,l);if(await xu({pairs:a.map(e=>({id:e.id,head:e})),requestedWorkers:n,namespace:`i-${process.pid.toString(36)}-${Date.now().toString(36)}`,initScriptPath:u,options:{...e,baseDir:e.headDir,baseRevision:e.headRevision},baseUrl:``,headUrl:i.url,baseOutput:r,headOutput:r,baseManifest:Su(e.headRevision,l),headManifest:d,environment:l,captureBase:!1}),await fl(c(r,`manifest.json`),d),!Object.keys(d.snapshots).length)throw Error(`Initial adoption requires at least one enabled snapshot`);return d}finally{await i.close()}}async function bu(e,t=wd){let n=f(e.outputDir),r=c(n,`capture`,`base`),i=c(n,`capture`,`head`),a=c(n,`report`);await re(n,{recursive:!0,force:!0}),await Promise.all([y(c(r,`images`),{recursive:!0}),y(c(i,`images`),{recursive:!0}),y(a,{recursive:!0})]);let[o,s]=await Promise.all([cl(e.baseDir),cl(e.headDir)]);try{let[l,u,d,f]=await Promise.all([Wl(o.url),Wl(s.url),hl(e.baseDir),hl(e.headDir)]),p=Gl(l),m=Gl(u),h=Tu(p,m,e,{base:d.evidence,head:f.evidence}),g=wu(p,m,h.selectedStoryIds),[_,v]=g.length===0?[`not-launched:no-affected-stories-v1`,`not-inspected:no-affected-stories-v1`]:await Promise.all([t.getBrowserVersion(),t.getFontsFingerprint()]),b=Hc({browserVersion:_,fontsFingerprint:v,frozenTime:e.frozenTime,randomSeed:e.randomSeed,locale:e.locale,timezone:e.timezone}),ee=c(n,`hermetic-init.js`);await w(ee,Jc(b));let x=`k-${process.pid.toString(36)}-${Date.now().toString(36)}`,S=e.baseCaptureDir?await Pu(e.baseCaptureDir,r,e.baseRevision,b,g):void 0;S&&(h.baseline={mode:`reused`,revision:S.manifest.revision,manifestDigest:S.manifestDigest});let te=S?.manifest??Su(e.baseRevision,b),ne=Su(e.headRevision,b),C=e.workers??4;if(!Number.isInteger(C)||C<1||C>8)throw Error(`Kapture workers must be between 1 and 8`);await xu({pairs:g,requestedWorkers:C,namespace:x,initScriptPath:ee,options:e,baseUrl:o.url,headUrl:s.url,baseOutput:r,headOutput:i,baseManifest:te,headManifest:ne,environment:b,captureBase:!S}),S&&await Fu({baseline:S.manifest,baselineRoot:S.root,headManifest:ne,headOutput:i,selectedStoryIds:h.selectedStoryIds,removedStoryIds:h.removedStoryIds??[]}),await Promise.all([fl(c(r,`manifest.json`),te),fl(c(i,`manifest.json`),ne)]);let ie={...$u,...e.threshold},ae=c(n,`stability-candidates`),oe=await il({baseManifest:te,headManifest:ne,baseRoot:r,headRoot:i,outputDir:ae,threshold:ie,coverage:h}),se=new Set(Object.values(oe.entries).filter(e=>e.status===`changed`).map(e=>e.id)),ce;if(se.size>0){let t=new Set(Object.values(oe.entries).filter(e=>se.has(e.id)).map(e=>e.storyId)),r=g.filter(e=>t.has(e.id)),i=c(n,`capture`,`base-repeat`),a=c(n,`capture`,`head-repeat`);await Promise.all([y(c(i,`images`),{recursive:!0}),y(c(a,`images`),{recursive:!0})]);let l=Su(e.baseRevision,b),u=Su(e.headRevision,b);await xu({pairs:r,requestedWorkers:C,namespace:`${x}-s`,initScriptPath:ee,options:e,baseUrl:o.url,headUrl:s.url,baseOutput:i,headOutput:a,baseManifest:l,headManifest:u,environment:b,captureBase:!0}),await Promise.all([fl(c(i,`manifest.json`),l),fl(c(a,`manifest.json`),u)]),ce={baseManifest:l,headManifest:u,baseRoot:i,headRoot:a}}return await re(ae,{recursive:!0,force:!0}),{baseManifest:te,headManifest:ne,report:await il({baseManifest:te,headManifest:ne,baseRoot:r,headRoot:i,outputDir:a,threshold:ie,coverage:h,stability:ce})}}finally{await Promise.allSettled([o.close(),s.close()])}}async function xu(e){let t=Math.min(e.requestedWorkers,e.pairs.length),n=e.captureBase&&e.pairs.some(e=>!!e.base),r=e.pairs.some(e=>!!e.head),i=[...e.pairs],a=[],o=[];try{for(let i=0;i<t;i+=1){let t={};n&&(t.base=Cu(i,`base`,e.options,{namespace:e.namespace,initScriptPath:e.initScriptPath,environment:e.environment}),o.push(t.base)),r&&(t.head=Cu(i,`head`,e.options,{namespace:e.namespace,initScriptPath:e.initScriptPath,environment:e.environment}),o.push(t.head)),a.push(t)}await Promise.all(a.map(async t=>{for(;i.length>0;){let n=i.shift();if(!n)return;await Au({workers:t,pair:n,baseUrl:e.baseUrl,headUrl:e.headUrl,baseOutput:e.baseOutput,headOutput:e.headOutput,baseManifest:e.baseManifest,headManifest:e.headManifest,environment:e.environment,adapterVersion:e.options.adapterVersion,captureBase:e.captureBase})}}))}finally{await Promise.allSettled(o.map(e=>Promise.resolve().then(()=>e.close())))}}function Su(e,t){return{version:2,revision:e,environment:t,createdAt:new Date().toISOString(),snapshots:{}}}function Cu(e,t,n,r){let i={...r,target:t};return n.workerFactory?n.workerFactory(e,i):new Xu({id:`${r.namespace}-${t}-${e}`,namespace:r.namespace,initScriptPath:r.initScriptPath,timezone:r.environment.timezone,locale:r.environment.locale,deviceScaleFactor:r.environment.deviceScaleFactor,allowedDomains:r.environment.network.allowedDomains})}function wu(e,t,n){let r=new Map(e.map(e=>[e.id,e])),i=new Map(t.map(e=>[e.id,e])),a=[...new Set([...r.keys(),...i.keys()])].sort(),o=n?[...new Set(n)].sort():a,s=new Set(a),c=o.filter(e=>!s.has(e));if(c.length>0)throw Error(`Unknown Kapture story IDs: ${c.join(`, `)}`);return o.map(e=>({id:e,base:r.get(e),head:i.get(e)}))}function Tu(e,t,n,r){if(n.selectionPlan&&n.storyIds)throw Error(`Kapture selectionPlan and storyIds cannot be provided together`);let i=[...new Set([...e,...t].map(e=>e.id))].sort(),a=new Set(e.map(e=>e.id)),o=new Set(t.map(e=>e.id)),s=i.filter(e=>!a.has(e)&&o.has(e)),c=i.filter(e=>a.has(e)&&!o.has(e)),l=Eu(r,n.baseRevision,n.headRevision),u=n.selectionPlan;if(u){if(ku(u.totalStoryIds,i,`selection plan catalog`),ku(u.addedStoryIds,s,`selection plan added stories`),ku(u.removedStoryIds,c,`selection plan removed stories`),Du(u.dependencyManifests,r),Ou(u.selectedStoryIds,u.skippedStoryIds,i),u.selectionMode===`full-fallback`&&u.fallbackReasons.length===0)throw Error(`Kapture full-fallback selection plan requires a fallback reason`);if(u.selectionMode===`affected`&&u.fallbackReasons.length>0)throw Error(`Kapture affected selection plan cannot contain fallback reasons`);return{plannerVersion:1,mode:u.selectionMode,...u.changedFilesEvidence?{changedFilesEvidence:{...u.changedFilesEvidence}}:{},dependencyManifests:l,storyIds:i,selectedStoryIds:[...u.selectedStoryIds],skippedStoryIds:[...u.skippedStoryIds],addedStoryIds:s,removedStoryIds:c,fallbackReasons:u.fallbackReasons.map(e=>({...e}))}}if(n.storyIds){let e=[...new Set(n.storyIds)].sort(),t=new Set(i),r=e.filter(e=>!t.has(e));if(r.length>0)throw Error(`Unknown Kapture story IDs: ${r.join(`, `)}`);let a=new Set(e);return{plannerVersion:1,mode:`affected`,dependencyManifests:l,storyIds:i,selectedStoryIds:e,skippedStoryIds:i.filter(e=>!a.has(e)),addedStoryIds:s,removedStoryIds:c,fallbackReasons:[]}}return{plannerVersion:1,mode:`full`,dependencyManifests:l,storyIds:i,selectedStoryIds:i,skippedStoryIds:[],addedStoryIds:s,removedStoryIds:c,fallbackReasons:[]}}function Eu(e,t,n){return{base:{...e.base,revision:t},head:{...e.head,revision:n}}}function Du(e,t){if(JSON.stringify(e)!==JSON.stringify(t))throw Error(`Kapture selection plan dependency manifests do not match the built Storybook artifacts`)}function Ou(e,t,n){ku(e,[...new Set(e)].sort(),`selected stories`),ku(t,[...new Set(t)].sort(),`skipped stories`);let r=new Set(e),i=[...e,...t].sort();if(t.some(e=>r.has(e)))throw Error(`Kapture selection plan cannot select and skip the same story`);ku(i,n,`selection plan partition`)}function ku(e,t,n){if(e.length!==t.length||e.some((e,n)=>e!==t[n]))throw Error(`Kapture ${n} does not match the built Storybook catalog`)}async function Au(e){let t={base:ju(!!e.pair.base&&e.captureBase),head:ju(!!e.pair.head)},n=[];e.pair.base&&e.captureBase&&n.push(Mu(e,`base`,t)),e.pair.head&&n.push(Mu(e,`head`,t)),await Promise.all(n)}function ju(e){if(!e)return{promise:Promise.resolve(void 0),resolve:()=>void 0};let t=()=>void 0,n=!1;return{promise:new Promise(e=>{t=e}),resolve(e){n||(n=!0,t(e))}}}async function Mu(e,t,n){let r=e.pair[t];if(!r)return;let i=e.workers[t];if(!i)throw Error(`Kapture ${t} browser worker was not initialized`);let a=t===`base`?e.baseManifest:e.headManifest,o=t===`base`?e.baseUrl:e.headUrl,s=t===`base`?e.baseOutput:e.headOutput,c=t===`base`?`head`:`base`;try{await i.runAttempt({target:t,storyId:r.id},async i=>{let l=await Iu(i,o,r,e.environment,e.adapterVersion).catch(Uu);if(n[t].resolve(l),l instanceof Error){Vu(a,r,l);return}let u=await n[c].promise;if(u instanceof Error)return;let d=t===`base`?l.parameters:u?.parameters,f=t===`head`?l.parameters:u?.parameters,p=e.captureBase?Lu(d,f,!!e.pair.base,!!e.pair.head):Nu(e.baseManifest,e.pair.id,f,!!e.pair.head);for(let n of p){let c=n[t];!c||l.parameters.captureEnabled===!1||await Ru({driver:i,story:r,baseUrl:o,outputRoot:s,manifest:a,viewport:c,parameters:l.parameters,captureArea:l.parameters.captureArea,threshold:zu(l.parameters.diff),adapterVersion:e.adapterVersion})}})}catch(e){let i=Uu(e);n[t].resolve(i),Hu(a,r,i)}}function Nu(e,t,n,r=!0){let i=Object.values(e.snapshots).filter(e=>e.storyId===t).map(e=>e.viewport),a=!r||n?.captureEnabled===!1?[]:n?.captureViewports??[Qu],o=new Map(i.map(e=>[e.name,e])),s=new Map(a.map(e=>[e.name,e]));return[...new Set([...o.keys(),...s.keys()])].sort().map(e=>({base:o.get(e),head:s.get(e)}))}async function Pu(e,t,n,r,i){let a=f(e),o=c(a,`manifest.json`),s=await pl(o);if(s.revision!==n)throw Error(`Kapture baseline revision ${s.revision} does not match requested base ${n}`);Gc(s.environment,r);let l=new Set(i.filter(e=>e.base).map(e=>e.id)),u={...s.snapshots};for(let e of l)if(!Object.values(u).some(t=>t.storyId===e))throw Error(`Kapture baseline does not contain selected base story ${e}`);return await Promise.all(Object.values(u).map(async e=>{if(e.error)return;let n=c(a,e.imageFile);if(await nl(n)!==e.sha256)throw Error(`Kapture baseline image digest mismatch for ${e.id}`);await g(n,c(t,e.imageFile))})),{root:t,manifest:{...s,snapshots:u},manifestDigest:await nl(o)}}async function Fu(e){let t=new Set(e.selectedStoryIds),n=new Set(e.removedStoryIds);await Promise.all(Object.values(e.baseline.snapshots).map(async r=>{t.has(r.storyId)||n.has(r.storyId)||(e.headManifest.snapshots[r.id]={...r,sourceRevision:r.sourceRevision??e.baseline.revision},!r.error&&await g(c(e.baselineRoot,r.imageFile),c(e.headOutput,r.imageFile)))}))}async function Iu(e,t,n,r,i){return await e.setViewport(Qu),await e.setMedia(r.colorScheme,r.reducedMotion===`reduce`),await e.open(Kl(t,n.id)),_u(e,n.id,i)}function Lu(e,t,n=!0,r=!0){let i=!n||e?.captureEnabled===!1?[]:e?.captureViewports??[Qu],a=!r||t?.captureEnabled===!1?[]:t?.captureViewports??[Qu],o=new Map(i.map(e=>[e.name,e])),s=new Map(a.map(e=>[e.name,e]));return[...new Set([...o.keys(),...s.keys()])].sort().map(e=>({base:o.get(e),head:s.get(e)}))}async function Ru(e){let{driver:t,story:n,baseUrl:r,outputRoot:i,manifest:a,viewport:o,parameters:s,captureArea:l,threshold:u,adapterVersion:f}=e,p=`${n.id}@${o.name}`,m=c(`images`,rl(p)),h=c(i,m),g=performance.now();try{await t.setViewport(o),await t.setMedia(a.environment.colorScheme,a.environment.reducedMotion===`reduce`),await t.open(Kl(r,n.id));let e=await _u(t,n.id,f);Bu(e,s,n.id);let c;for(let r=1;r<=3;r+=1){c=await Lc(t,a.environment,e.parameters);let i=await _u(t,n.id,f);if(Bu(i,s,n.id),vu(e,i))break;if(r===3)throw Error(`Kapture story ${n.id} kept rerendering while the capture was stabilizing`);e=i,c=void 0}if(!c)throw Error(`Kapture could not stabilize ${n.id}`);await t.screenshot(h,{fullPage:l!==`viewport`}),a.snapshots[p]={id:p,storyId:n.id,title:n.title,name:n.name,viewport:o,imageFile:d(i,h),sha256:await nl(h),capturedAt:new Date().toISOString(),durationMs:Math.round(performance.now()-g),ignoredRegions:c.ignoredRegions.length>0?c.ignoredRegions:void 0,threshold:u}}catch(e){a.snapshots[p]={id:p,storyId:n.id,title:n.title,name:n.name,viewport:o,imageFile:m,sha256:``,capturedAt:new Date().toISOString(),durationMs:Math.round(performance.now()-g),threshold:u,error:e instanceof Error?e.message:String(e)}}}function zu(e){if(e)return{...e.pixelColorThreshold===void 0?{}:{pixelColorThreshold:e.pixelColorThreshold},...e.maxChangedPixelPercentage===void 0?{}:{maxChangedPixelRatio:e.maxChangedPixelPercentage/100}}}function Bu(e,t,n){if(JSON.stringify(e.parameters)!==JSON.stringify(t))throw Error(`Kapture parameters changed between metadata and capture for ${n}`)}function Vu(e,t,n){let r=`${t.id}@metadata`;e.snapshots[r]={id:r,storyId:t.id,title:t.title,name:t.name,viewport:Qu,imageFile:``,sha256:``,capturedAt:new Date().toISOString(),durationMs:0,error:n.message}}function Hu(e,t,n){let r=`${t.id}@attempt`;e.snapshots[r]={id:r,storyId:t.id,title:t.title,name:t.name,viewport:Qu,imageFile:``,sha256:``,capturedAt:new Date().toISOString(),durationMs:0,error:n.message}}function Uu(e){return e instanceof Error?e:Error(String(e))}async function Wu(e,t){if(!(await C(e)).isDirectory())throw Error(`Dashboard build is not a directory: ${e}`);await _(e,t,{recursive:!0,force:!0});let n=f(t,`index.html`),r=f(t,`report.json`),[i,a]=await Promise.all([x(n,`utf8`),x(r,`utf8`)]),o=Gu(i,/<link\b[^>]*\brel=["']stylesheet["'][^>]*\bhref=["']([^"']+)["'][^>]*>/i,`stylesheet`),s=Gu(i,/<script\b[^>]*\bsrc=["']([^"']+)["'][^>]*><\/script>/i,`module script`),[c,l]=await Promise.all([Ku(t,o.url),Ku(t,s.url)]),u=qu(c,o.url),d=`<script id="kapture-report-data" type="application/json">${a.trim().replaceAll(`<`,`\\u003c`)}<\/script>\n<script data-kapture-dashboard>"use strict";\n${l.replace(/<\/script/gi,`<\\/script`)}<\/script>`,p=i.replace(o.tag,()=>`<style>${u}</style>`).replace(s.tag,``);if(!p.includes(`</body>`))throw Error(`Dashboard index is missing its closing body tag`);let m=p.replace(`</body>`,()=>`${d}\n</body>`);await w(n,m)}function Gu(e,t,n){let r=e.match(t);if(!r?.[1])throw Error(`Dashboard index is missing its ${n}`);return{tag:r[0],url:r[1]}}async function Ku(e,t){if(/^[a-z]+:/i.test(t)||t.startsWith(`/`)||t.includes(`?`))throw Error(`Dashboard asset must be a relative local path: ${t}`);let n=f(e),r=f(n,t);if(!r.startsWith(`${n}${p}`))throw Error(`Dashboard asset resolves outside the report directory: ${t}`);return x(r,`utf8`)}function qu(e,t){let n=u.dirname(t);return e.replace(/url\((["']?)(\.\/[^"')]+)\1\)/g,(e,t,r)=>{let i=u.join(n,r);return`url(${t}${i.startsWith(`.`)?i:`./${i}`}${t})`})}var Ju,Yu,Xu,Zu,Qu,$u,ed,td,nd,rd,id,ad,od,sd,cd,ld,ud,dd,fd,pd,md,hd,gd,_d,vd,yd,bd,xd,Sd,Cd,wd,Td=T((()=>{_t(),Ju=zt(),Mc(),Yu=class{session;isolation=`browser-process`;namespace;initScriptPath;timezone;locale;deviceScaleFactor;allowedDomains;timeoutMs;bin;commandStarted=!1;closePromise;constructor(e){this.session=e.session,this.namespace=e.namespace,this.initScriptPath=e.initScriptPath,this.timezone=e.timezone,this.locale=e.locale,this.deviceScaleFactor=e.deviceScaleFactor,this.allowedDomains=e.allowedDomains,this.timeoutMs=e.timeoutMs??3e4,this.bin=Ic()}open(e){return this.execVoid([`open`,e])}setViewport(e){return this.execVoid([`set`,`viewport`,String(e.width),String(e.height)])}setMedia(e,t){let n=[`set`,`media`,e];return t&&n.push(`reduced-motion`),this.execVoid(n)}async evaluate(e){let t=await this.exec([`eval`,e]),n=JSON.parse(t);if(n.success===!1)throw Error(n.error??`agent-browser eval failed`);return n.data&&typeof n.data==`object`&&`result`in n.data?n.data.result:n.data===void 0?n.result===void 0?n:n.result:n.data}screenshot(e,t){return this.execVoid([`screenshot`,...t.fullPage?[`--full`]:[],e])}close(){return this.closePromise?this.closePromise:this.commandStarted?(this.closePromise=this.execVoid([`close`],!0),this.closePromise):(this.closePromise=Promise.resolve(),this.closePromise)}async execVoid(e,t=!1){let n=await this.exec(e,t);try{let t=JSON.parse(n);if(t.success===!1)throw Error(t.error??`agent-browser command failed: ${e.join(` `)}`)}catch(e){if(e instanceof SyntaxError)return;throw e}}exec(e,t=!1){if(this.closePromise&&!t)return Promise.reject(Error(`agent-browser session ${this.session} is closed`));t||(this.commandStarted=!0);let n=[`--session`,this.session,`--namespace`,this.namespace,`--init-script`,this.initScriptPath,`--allowed-domains`,this.allowedDomains.join(`,`),`--args`,`--force-device-scale-factor=${this.deviceScaleFactor},--lang=${this.locale}`,`--json`,...e];return new Promise((t,i)=>{let a=r(this.bin,n,{env:{...process.env,LANG:`${this.locale}.UTF-8`,TZ:this.timezone},stdio:[`ignore`,`pipe`,`pipe`]}),o=[],s=[];a.stdout.on(`data`,e=>o.push(e)),a.stderr.on(`data`,e=>s.push(e));let c=setTimeout(()=>{a.kill(),i(Error(`agent-browser timed out after ${this.timeoutMs}ms: ${e.join(` `)}`))},this.timeoutMs);a.once(`error`,e=>{clearTimeout(c),i(e)}),a.once(`close`,e=>{clearTimeout(c);let n=Buffer.concat(o).toString(`utf8`).trim(),r=Buffer.concat(s).toString(`utf8`).trim();if(e!==0){i(Error(`agent-browser failed (${e}): ${r||n}`));return}t(n)})})}},Xu=class{id;options;attemptFactory;sessionPrefix;attemptNumber=0;activeAttempt;closed=!1;constructor(e,t=e=>new Yu(e)){this.id=e.id,this.sessionPrefix=`kw-${ie(`sha256`).update(e.id).digest(`hex`).slice(0,8)}`;let{id:n,...r}=e;this.options=r,this.attemptFactory=t}async runAttempt(e,t){if(this.closed)throw Error(`Browser worker ${this.id} is closed`);if(this.activeAttempt)throw Error(`Browser worker ${this.id} already has an active attempt`);let n=++this.attemptNumber,r=new Zu(e,this.attemptFactory({...this.options,session:`${this.sessionPrefix}-${e.target[0]}-${n.toString(36)}`}));this.activeAttempt=r;let i,a,o=!1;try{i=await t(r)}catch(e){o=!0,a=e}let s,c=!1;try{await r.close()}catch(e){c=!0,s=e}finally{this.activeAttempt===r&&(this.activeAttempt=void 0)}if(o&&c)throw AggregateError([a,s],`Browser attempt ${r.session} failed and could not be closed`);if(o)throw a;if(c)throw s;return i}async close(){if(this.closed)return;this.closed=!0;let e=this.activeAttempt;e&&(await e.close(),this.activeAttempt===e&&(this.activeAttempt=void 0))}},Zu=class{scope;driver;isolation=`browser-process`;closePromise;constructor(e,t){this.scope=e,this.driver=t}get session(){return this.driver.session}open(e){return this.driver.open(e)}setViewport(e){return this.driver.setViewport(e)}setMedia(e,t){return this.driver.setMedia(e,t)}evaluate(e){return this.driver.evaluate(e)}screenshot(e,t){return this.driver.screenshot(e,t)}close(){return this.closePromise??=this.driver.close(),this.closePromise}},Qu={name:`default`,width:1280,height:800},$u={pixelColorThreshold:.2,maxChangedPixelRatio:0},ed=[`baseImage`,`headImage`,`diffImage`],td=/^[0-9a-f]{64}$/,nd={".css":`text/css; charset=utf-8`,".html":`text/html; charset=utf-8`,".ico":`image/x-icon`,".jpeg":`image/jpeg`,".jpg":`image/jpeg`,".js":`text/javascript; charset=utf-8`,".json":`application/json; charset=utf-8`,".mjs":`text/javascript; charset=utf-8`,".png":`image/png`,".svg":`image/svg+xml`,".woff":`font/woff`,".woff2":`font/woff2`},rd=V({name:z(),width:B(),height:B()}),id=V({id:z(),browser:z(),browserVersion:z(),orchestratorRuntime:z(),operatingSystem:z(),architecture:z(),deviceScaleFactor:B(),locale:z(),timezone:z(),colorScheme:Ts([`light`,`dark`]),reducedMotion:Ts([`reduce`,`no-preference`]),frozenTime:z(),randomSeed:B(),fontsFingerprint:z(),stateIsolation:U(`fresh-browser-process-per-story-side-v1`).optional(),network:V({mode:U(`allowlist`),allowedDomains:bs(z()),webRtc:U(`disabled`)})}),ad=V({id:z(),storyId:z(),title:z(),name:z(),viewport:rd,imageFile:z(),sha256:z(),capturedAt:z(),durationMs:B(),sourceRevision:z().optional(),ignoredRegions:bs(V({x:B().int().nonnegative(),y:B().int().nonnegative(),width:B().int().positive(),height:B().int().positive()})).optional(),threshold:V({pixelColorThreshold:B().optional(),maxChangedPixelRatio:B().optional()}).optional(),error:z().optional()}).superRefine((e,t)=>{e.error||(/^images\/[A-Za-z0-9._-]+\.png$/.test(e.imageFile)||t.addIssue({code:`custom`,path:[`imageFile`],message:`must be a safe image path`}),/^[0-9a-f]{64}$/.test(e.sha256)||t.addIssue({code:`custom`,path:[`sha256`],message:`must be a SHA-256 digest`}))}),od=V({version:U(2),revision:z(),environment:id,createdAt:z(),snapshots:H(z(),ad)}),sd=`kapture-dependencies.json`,cd=z().min(1).max(4096).refine(xl,`must be a normalized project-relative path`),ld=z().max(4096).refine(e=>e===``||xl(e),{message:`must be empty or a normalized project-relative path`}),ud=bs(cd).max(1e5).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),dd=z().regex(/^[0-9a-f]{64}$/),fd=xs({type:Ts([`asset`,`chunk`]),size:B().int().nonnegative().max(1e9),sha256:dd}).strict(),pd=z().max(4096).refine(e=>e===``||e.endsWith(`/`)&&xl(e.slice(0,-1)),`must be empty or a normalized project-relative directory prefix`),md=z().min(1).max(1024),hd=bs(md).max(1e4).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),gd=H(cd,H(cd,hd)),_d=H(cd,H(md,xs({module:cd,imported:md}).strict())),vd=xs({kind:U(`kapture-storybook-dependencies`),version:U(1),complete:_s(),storybookRoot:ld,globalInputs:ud,ignoredInputs:ud,fingerprintedInputs:ud.optional(),diagnostics:bs(Ts([`module-outside-project-root`,`module-fingerprint-missing`,`unresolved-virtual-module`,`unresolved-project-module`,`rendered-output-fingerprint-missing`,`global-output-fingerprint-missing`,`global-runtime-fingerprint-missing`,`unowned-output-chunk`,`output-inventory-mismatch`])).max(20).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),modules:H(cd,ud),moduleFingerprints:H(cd,dd).optional(),globalOutputFingerprints:H(cd,dd),globalOutputStories:H(cd,ud),globalRuntimeFingerprint:dd,outputInventory:H(cd,fd),outputInventoryPrefixes:bs(pd).max(100).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),importBindings:gd.optional(),reexportBindings:_d.optional(),renderedModules:H(cd,ud),renderedOutputFingerprints:H(cd,dd)}).strict().superRefine((e,t)=>{let n=Object.entries(e.modules),r=new Set(n.map(([e])=>e));n.length>1e5&&t.addIssue({code:`custom`,path:[`modules`],message:`contains too many modules`});for(let[i,a]of n)a.includes(i)||t.addIssue({code:`custom`,path:[`modules`,i],message:`must include the module itself`}),e.complete&&a.some(e=>!r.has(e))&&t.addIssue({code:`custom`,path:[`modules`,i],message:`must resolve every project dependency when the manifest is complete`});Object.keys(e.globalOutputFingerprints).length>1e5&&t.addIssue({code:`custom`,path:[`globalOutputFingerprints`],message:`contains too many global output fingerprints`});let i=new Set(Object.keys(e.globalOutputFingerprints)),a=Object.entries(e.globalOutputStories);a.length>1e5&&t.addIssue({code:`custom`,path:[`globalOutputStories`],message:`contains too many global output story lists`});for(let[e,n]of a){i.has(e)||t.addIssue({code:`custom`,path:[`globalOutputStories`,e],message:`must identify a fingerprinted global output`});for(let i of n)if(!r.has(i)){t.addIssue({code:`custom`,path:[`globalOutputStories`,e],message:`must contain only rendered story modules`});break}}for(let n of i)n in e.globalOutputStories||t.addIssue({code:`custom`,path:[`globalOutputStories`,n],message:`must cover every fingerprinted global output`});let o=Object.entries(e.outputInventory);o.length>1e5&&t.addIssue({code:`custom`,path:[`outputInventory`],message:`contains too many output files`}),`kapture-dependencies.json`in e.outputInventory&&t.addIssue({code:`custom`,path:[`outputInventory`,sd],message:`must not inventory the manifest itself`});for(let n of e.outputInventoryPrefixes)o.some(([e])=>e.startsWith(n))||t.addIssue({code:`custom`,path:[`outputInventoryPrefixes`],message:`must cover at least one inventoried output`});let s=Object.entries(e.moduleFingerprints??{});s.length>1e5&&t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`contains too many module fingerprints`});for(let[e]of s)r.has(e)||t.addIssue({code:`custom`,path:[`moduleFingerprints`,e],message:`must identify a rendered module`});(e.fingerprintedInputs?.length??0)>0&&(e.moduleFingerprints?e.complete&&n.some(([t])=>!e.moduleFingerprints?.[t])&&t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`must cover every rendered module when the manifest is complete`}):t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`is required when fingerprintedInputs are configured`}));let c=0;for(let[n,i]of Object.entries(e.importBindings??{})){c+=Object.keys(i).length,r.has(n)||t.addIssue({code:`custom`,path:[`importBindings`,n],message:`must identify a rendered importer`});for(let r of Object.keys(i))e.modules[n]?.includes(r)||t.addIssue({code:`custom`,path:[`importBindings`,n,r],message:`must identify a direct project dependency`})}for(let[n,i]of Object.entries(e.reexportBindings??{})){c+=Object.keys(i).length,r.has(n)||t.addIssue({code:`custom`,path:[`reexportBindings`,n],message:`must identify a rendered barrel`});for(let[r,a]of Object.entries(i))e.modules[n]?.includes(a.module)||t.addIssue({code:`custom`,path:[`reexportBindings`,n,r],message:`must identify a direct project dependency`})}c>1e6&&t.addIssue({code:`custom`,path:[`importBindings`],message:`contains too many import and re-export bindings`});let l=Object.entries(e.renderedModules??{});l.length>1e5&&t.addIssue({code:`custom`,path:[`renderedModules`],message:`contains too many rendered module closures`});let u=0;for(let[e,n]of l){u+=n.length,r.has(e)||t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must identify a rendered entry module`}),n.includes(e)||t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must include the entry module itself`});for(let i of n)if(!r.has(i)){t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must contain only rendered project modules`});break}}u>5e6&&t.addIssue({code:`custom`,path:[`renderedModules`],message:`contains too many rendered module references`});let d=Object.entries(e.renderedOutputFingerprints);d.length>1e5&&t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`],message:`contains too many rendered output fingerprints`});for(let[e]of d)r.has(e)||t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`,e],message:`must identify a rendered entry module`});e.complete&&l.some(([t])=>e.renderedOutputFingerprints[t]===void 0)&&t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`],message:`must cover every rendered entry module when the manifest is complete`}),e.complete!==(e.diagnostics.length===0)&&t.addIssue({code:`custom`,path:[`complete`],message:`must agree with diagnostics`})}),yd=1e3,bd=xs({id:z().min(1),type:Ts([`story`,`docs`]),importPath:z().min(1).optional()}).passthrough(),xd=xs({entries:H(z(),bd)}).passthrough(),Sd=xs({id:z().min(1),title:z(),name:z(),type:Ts([`story`,`docs`])}),Cd=xs({v:B(),entries:H(z(),Sd)}),wd={getBrowserVersion:Nc,getFontsFingerprint:Kc}}));Td();const Ed={executionErrors:e=>`❌ **${e} execution error(s)** must be fixed.`,clean:`✅ No visual changes.`,changes:e=>`🔍 **${e} visual change(s)** require review.`,unstableWarning:e=>`⚠️ **${e} unstable snapshot(s)** changed between same-revision captures and do not block this build.`,comparison:(e,t)=>`**${e} stories · ${t} snapshots compared**`,coverage:(e,t,n,r,i,a)=>e===`affected`?`**${n} of ${t} affected stories selected · ${r} stories / ${i} snapshots compared · ${a} proven unaffected**`:`**${n} stories selected · ${r} stories / ${i} snapshots compared**`,fallback:e=>`- Safe full-capture fallback: ${e.join(`, `)}`,counts:e=>`- Unchanged ${e.unchanged} · Changed ${e.changed} · Unstable ${e.unstable} · Added ${e.added} · Removed ${e.removed} · Errors ${e.errors}`,branch:`Branch`,environment:`Environment`,reportDownload:`Download the full comparison report`,reportOpen:`Open the full comparison report`,storyOpen:`Open captured story`,sections:{error:`🚨 Execution errors`,removed:`⚠️ Removed snapshots`,changed:`🔍 Visual changes`,unstable:`⚠️ Unstable snapshots`,added:`➕ Added snapshots`},hidden:e=>`${e} more item(s) are available in the full comparison report.`,errorAdvice:`⚠️ Capture or comparison errors must be fixed before approval.`,approvalPrompt:`A reviewer with write permission can approve the full head build with:`,captureError:`Capture or comparison failed.`,removedEntry:`Not found in the head Storybook`,addedEntry:`New snapshot`,approval:(e,t)=>`✅ @${e} approved Kapture report \`${t.slice(0,12)}\`.`},Dd={executionErrors:e=>`❌ **${e}개의 실행 오류**를 해결해 주세요.`,clean:`✅ 시각적 변경이 없습니다.`,changes:e=>`🔍 **${e}개의 시각적 변경**을 검토해 주세요.`,unstableWarning:e=>`⚠️ **${e}개의 불안정한 스냅샷**이 동일 리비전 재캡처에서 달라졌습니다. 이 항목은 빌드를 막지 않습니다.`,comparison:(e,t)=>`**${e}개 스토리 · ${t}개 스냅샷 비교**`,coverage:(e,t,n,r,i,a)=>e===`affected`?`**전체 ${t}개 Story 중 영향받은 ${n}개 선택 · ${r}개 Story / ${i}개 스냅샷 비교 · ${a}개는 dependency graph로 제외**`:`**${n}개 Story 선택 · ${r}개 Story / ${i}개 스냅샷 비교**`,fallback:e=>`- 누락 방지를 위해 전체 캡처로 전환: ${e.join(`, `)}`,counts:e=>`- 동일 ${e.unchanged} · 변경 ${e.changed} · 불안정 ${e.unstable} · 추가 ${e.added} · 삭제 ${e.removed} · 오류 ${e.errors}`,branch:`브랜치`,environment:`환경`,reportDownload:`전체 비교 리포트 다운로드`,reportOpen:`전체 비교 리포트 열기`,storyOpen:`캡처한 Story 열기`,sections:{error:`🚨 실행 오류`,removed:`⚠️ 삭제된 스냅샷`,changed:`🔍 시각 변경`,unstable:`⚠️ 불안정한 스냅샷`,added:`➕ 추가된 스냅샷`},hidden:e=>`그 외 ${e}개 항목은 전체 비교 리포트에서 확인해 주세요.`,errorAdvice:`⚠️ 캡처 또는 비교 오류를 해결해야 합니다. 승인할 수 없습니다.`,approvalPrompt:`전체 head 빌드를 승인하려면 쓰기 권한이 있는 리뷰어가 다음 명령을 남겨 주세요.`,captureError:`캡처 또는 비교에 실패했습니다.`,removedEntry:`head Storybook에서 찾을 수 없음`,addedEntry:`새 스냅샷`,approval:(e,t)=>`✅ @${e} 님이 Kapture 리포트 \`${t.slice(0,12)}\`를 승인했습니다.`};function Od(e){if(e===`en`||e===`ko`)return e;throw Error(`Comment language must be en or ko`)}function kd(e){return e===`ko`?Dd:Ed}const Ad=`<!-- kapture-report:`,jd={error:0,removed:1,changed:2,unstable:3,added:4,unchanged:5};function Md(e){return e.contentDigest??Xc(e)}function Nd(e){return`${Ad}${Buffer.from(JSON.stringify(e)).toString(`base64url`)} -->`}function Pd(e){let t=e.indexOf(Ad);if(t<0)return null;let n=t+20,r=e.indexOf(` -->`,n);if(r<0)return null;try{let t=JSON.parse(Buffer.from(e.slice(n,r),`base64url`).toString());return t.version!==3||!Ld(t.baseSha)||!Ld(t.headSha)||!/^[0-9a-f]{64}$/.test(t.digest)||!Yd(t.captureRunId)||!Yd(t.captureRunAttempt)||!Yd(t.captureWorkflowId)||!Xd(t.captureRunHeadBranch)||!Yd(t.captureRunHeadRepositoryId)||![`clean`,`changed`,`error`].includes(t.status)||t.reportUrl!==void 0&&Rd(t.reportUrl)!==t.reportUrl?null:t}catch{return null}}function Fd(e,t,n=`Kapture Visual Review`,r=`en`){let{summary:i}=e,a=i.changed+i.added+i.removed,o=new Set(Object.values(e.entries).map(e=>e.storyId)).size,s=Wd(n,100),c=kd(r),l=[Nd(t),`## ${s}`,``,i.errors>0?c.executionErrors(i.errors):a===0?c.clean:c.changes(a),``,e.coverage?c.coverage(e.coverage.mode,e.coverage.storyIds.length,e.coverage.selectedStoryIds.length,o,i.total,e.coverage.skippedStoryIds.length):c.comparison(o,i.total),``,c.counts(i),`- ${c.branch} \`${Kd(t.captureRunHeadBranch)}\` · ${c.environment} \`${Kd(e.environment.id)}\` · base \`${Jd(e.baseRevision)}\` → head \`${Jd(e.headRevision)}\``];if(e.coverage?.mode===`full-fallback`&&l.push(c.fallback([...new Set(e.coverage.fallbackReasons.map(e=>e.code))])),i.unstable>0&&l.push(``,c.unstableWarning(i.unstable)),t.reportUrl){let e=qd(t.reportUrl)?c.reportDownload:c.reportOpen;l.push(``,`[${e}](${t.reportUrl})`)}let u=Object.values(e.entries).filter(e=>e.status!==`unchanged`).sort(Ud),d=u.slice(0,20);for(let n of[`error`,`removed`,`changed`,`unstable`,`added`]){let r=u.filter(e=>e.status===n),i=d.filter(e=>e.status===n);if(i.length!==0){l.push(``,`### ${c.sections[n]} (${r.length})`,``);for(let n of i)l.push(Vd(n,c,e.storybookUrl,t.reportUrl))}}let f=u.length-d.length;return f>0&&l.push(``,c.hidden(f)),i.errors>0?l.push(``,c.errorAdvice):a>0&&l.push(``,c.approvalPrompt,``,`\`/kapture approve ${e.headRevision} ${t.digest}\``),`${l.join(`
|
|
598
|
-
`)}\n`}function Id(e){let t=e.trim().match(/^\/kapture\s+approve\s+([0-9a-f]{40})\s+([0-9a-f]{64})$/i);return!t?.[1]||!t[2]?null:{headSha:t[1].toLowerCase(),reportDigest:t[2].toLowerCase()}}function Ld(e){return/^[0-9a-f]{40}$/i.test(e)}function Rd(e){if(!e)return;if(e.length>2048)throw Error(`Report URL is too long`);let t;try{t=new URL(e)}catch{throw Error(`Report URL must be a valid HTTPS URL`)}if(t.protocol!==`https:`||t.username||t.password)throw Error(`Report URL must be an HTTPS URL without credentials`);return t.toString().replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/\[/g,`%5B`).replace(/\]/g,`%5D`)}function zd(e){if(e){if(e===`./storybook/`)return e;try{return Rd(e)}catch{throw Error(`Storybook URL must be a valid HTTPS URL or ./storybook/`)}}}function Bd(e){let t=Gd(e).replace(/\s+/g,` `).trim();if(!t||t.length>100)throw Error(`Status context must contain between 1 and 100 characters`);return t}function Vd(e,t,n,r){let i=`**${Wd(e.title)} / ${Wd(e.name)}** · ${Wd(e.viewport.name)}`,a=n?Hd(n,e.storyId,r):void 0,o=a?` · [${t.storyOpen}](${a})`:``;return e.status===`error`?`- ${i} — ${Wd(e.error??t.captureError,180)}${o}`:e.status===`removed`?`- ${i} — ${t.removedEntry}`:e.status===`added`?`- ${i} — ${t.addedEntry}${o}`:`- ${i}${o}`}function Hd(e,t,n){if(e===`./storybook/`&&!n)return;let r=new URL(e,n);return r.searchParams.set(`path`,`/story/${t}`),Rd(r.toString())}function Ud(e,t){let n=jd[e.status]-jd[t.status];return n===0?`${e.title}/${e.name}/${e.viewport.name}`.localeCompare(`${t.title}/${t.name}/${t.viewport.name}`):n}function Wd(e,t=240){let n=Gd(e).replace(/\s+/g,` `).trim();return(n.length>t?`${n.slice(0,t-3)}...`:n).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/\\/g,`\\\\`).replace(/([`*_[\]{}|])/g,`\\$1`).replace(/@/g,`@`)}function Gd(e){return Array.from(e,e=>{let t=e.codePointAt(0)??0;return t<=31||t===127?` `:e}).join(``)}function Kd(e){return e.replace(/`/g,`ˋ`).replace(/[\r\n]/g,` `).replace(/@/g,`@`)}function qd(e){return e.includes(`/actions/runs/`)&&e.includes(`/artifacts/`)}function Jd(e){return e.slice(0,8)}function Yd(e){return typeof e==`number`&&Number.isInteger(e)&&e>0}function Xd(e){return typeof e!=`string`||e.length<1||e.length>512?!1:Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127})}var Zd=class{#e;#t;#n;constructor(e,t){if(!e)throw Error(`GITHUB_TOKEN is required`);this.#e=e,this.#t=t,this.#n=Qd(process.env.GITHUB_API_URL)}async setReviewStatus(e,t,n,r,i){await this.#i(`POST`,`/statuses/${encodeURIComponent(e)}`,{state:t,description:n.slice(0,140),context:r,target_url:i})}async postOrUpdateReportComment(e,t,n=Ad){let r=(await this.#r(e)).find(e=>e.user?.login===`github-actions[bot]`&&e.body?.includes(n));return r?(await this.#i(`PATCH`,`/issues/comments/${r.id}`,{body:t})).id:this.createIssueComment(e,t)}async findCurrentReportMarker(e,t,n){let r=await this.#r(e);for(let e of r.reverse()){if(e.user?.login!==`github-actions[bot]`||!e.body)continue;let r=Pd(e.body);if(r?.baseSha===t&&r.headSha===n)return r}return null}async assertCurrentCaptureRun(e,t,n,r,i){let a=await this.#i(`GET`,`/actions/runs/${e}`);if(a.id!==e||a.run_attempt!==t||a.workflow_id!==n||a.head_branch!==r||a.head_repository.id!==i||a.status!==`completed`||a.conclusion!==`success`||a.event!==`pull_request`)throw Error(`Kapture report does not belong to the current successful capture run`);let o;for(let e=1;e<=10;e+=1){let t=await this.#i(`GET`,`/actions/workflows/${n}/runs?event=pull_request&branch=${encodeURIComponent(r)}&per_page=100&page=${e}`);for(let e of t.workflow_runs)e.head_repository.id===i&&(!o||e.run_number>o.run_number||e.run_number===o.run_number&&e.id>o.id)&&(o=e);if(t.workflow_runs.length<100)break}if(o?.id!==e)throw Error(`A newer Kapture capture run exists for this pull request`)}async getLatestReviewStatus(e,t){for(let n=1;n<=10;n+=1){let r=await this.#i(`GET`,`/commits/${encodeURIComponent(e)}/status?per_page=100&page=${n}`),i=r.statuses.find(e=>e.context===t);if(i)return $d(i.state)?{state:i.state,description:i.description??void 0,targetUrl:i.target_url??void 0}:null;if(r.statuses.length<100)break}return null}async assertWritePermission(e){let t=await this.#i(`GET`,`/collaborators/${encodeURIComponent(e)}/permission`);if(!t.permission||![`admin`,`maintain`,`write`].includes(t.permission))throw Error(`@${e} does not have write permission for this repository`)}async getPullRequest(e){return this.#i(`GET`,`/pulls/${e}`)}async readPackageManifest(e,t){if(!/^[0-9a-f]{40}$/.test(t)||!/^[A-Za-z0-9._/-]+$/.test(e)||e.split(`/`).some(e=>!e||e===`.`||e===`..`))throw Error(`Package manifest requires a project-relative path and exact revision`);let n=await this.#i(`GET`,`/contents/${e.split(`/`).map(encodeURIComponent).join(`/`)}?ref=${t}`);if(n.type!==`file`||n.encoding!==`base64`||typeof n.content!=`string`||!Number.isSafeInteger(n.size)||n.size<0||n.size>1048576||n.content.length>2097152)throw Error(`Expected a bounded package.json file at the exact base revision`);return JSON.parse(Buffer.from(n.content,`base64`).toString(`utf8`))}async getPullRequestForCapture(e){return this.#i(`GET`,`/pulls/${e}`)}async listPullRequestFilesPage(e,t,n){return this.#i(`GET`,`/pulls/${e}/files?per_page=${n}&page=${t}`)}async createIssueComment(e,t){return(await this.#i(`POST`,`/issues/${e}/comments`,{body:t})).id}async#r(e){let t=[];for(let n=1;n<=10;n+=1){let r=await this.#i(`GET`,`/issues/${e}/comments?per_page=100&page=${n}`);if(t.push(...r),r.length<100)break}return t}async#i(e,t,n){let{owner:r,repo:i}=this.#t,a=`/repos/${encodeURIComponent(r)}/${encodeURIComponent(i)}${t}`,o=await fetch(`${this.#n}${a}`,{method:e,headers:{Accept:`application/vnd.github+json`,Authorization:`Bearer ${this.#e}`,"X-GitHub-Api-Version":`2022-11-28`,"User-Agent":`kapture-cli`,...n?{"Content-Type":`application/json`}:{}},body:n?JSON.stringify(n):void 0});if(!o.ok)throw Error(`GitHub API ${e} ${t} failed with status ${o.status}`);return await o.json()}};function Qd(e){let t=e?.trim()||`https://api.github.com`,n;try{n=new URL(t)}catch{throw Error(`GITHUB_API_URL must be a valid absolute URL`)}let r=[`127.0.0.1`,`localhost`,`[::1]`].includes(n.hostname);if(n.protocol!==`https:`&&!(n.protocol===`http:`&&r))throw Error(`GITHUB_API_URL must use HTTPS (HTTP is allowed only for loopback tests)`);if(n.username||n.password||n.search||n.hash)throw Error(`GITHUB_API_URL must not contain credentials, a query, or a fragment`);return n.toString().replace(/\/+$/,``)}function $d(e){return[`error`,`failure`,`pending`,`success`].includes(e)}async function ef(){let e=process.env.GITHUB_EVENT_PATH;if(!e)throw Error(`GITHUB_EVENT_PATH is required`);let t=await C(e);if(!t.isFile()||t.size>10485760)throw Error(`GitHub event payload is missing or too large`);try{return JSON.parse(await x(e,`utf8`))}catch{throw Error(`GITHUB_EVENT_PATH does not contain valid JSON`)}}function tf(e){let t=lf(e,`GitHub event payload`);if(t.action!==`completed`)throw Error(`Kapture report requires a completed normalized event`);let n=lf(t.kapture,`kapture normalized event`);if(n.schemaVersion!==1)throw Error(`Kapture report requires normalized event schemaVersion 1`);let r=lf(n.pullRequest,`kapture.pullRequest`),i=lf(n.captureRun,`kapture.captureRun`),a=af(r.headSha,`kapture.pullRequest.headSha`),o=sf(i.headBranch);if(!cf(o))throw Error(`kapture.captureRun.headBranch is invalid`);return{repository:rf(t),issueNumber:of(r.number,`pull request number`),headSha:a,captureRunId:of(i.id,`capture run ID`),captureRunAttempt:of(i.attempt,`capture run attempt`),captureWorkflowId:of(i.workflowId,`capture workflow ID`),captureRunHeadBranch:o,captureRunHeadRepositoryId:of(i.headRepositoryId,`capture run head repository ID`)}}function nf(e){let t=lf(e,`GitHub event payload`);if(t.action!==`created`)throw Error(`Kapture approval only accepts newly created issue comments`);let n=lf(t.issue,`issue`);if(!n.pull_request)throw Error(`Kapture approval must be posted on a pull request`);let r=Id(sf(lf(t.comment,`comment`).body));if(!r)throw Error(`Expected /kapture approve <full-head-sha> <64-character-report-digest>`);let i=sf(lf(t.sender,`sender`).login);if(!/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(i))throw Error(`GitHub event contains an invalid sender login`);return{repository:rf(t),issueNumber:of(n.number,`pull request number`),headSha:r.headSha,reportDigest:r.reportDigest,sender:i}}function rf(e){let t=sf(lf(e.repository,`repository`).full_name).match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!t?.[1]||!t[2])throw Error(`GitHub event contains an invalid repository`);return{owner:t[1],repo:t[2]}}function af(e,t){let n=sf(e).toLowerCase();if(!Ld(n))throw Error(`${t} must be a full 40-character SHA`);return n}function of(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function sf(e){if(typeof e!=`string`)throw Error(`GitHub event contains an invalid string value`);return e}function cf(e){return e.length<1||e.length>512?!1:Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127})}function lf(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}const uf=`Publishing verified visual report`;async function df(e,t,n){let r=pf(n.baseRevision,`Report base`),i=pf(n.headRevision,`Report head`);if(i!==t.headSha)throw Error(`Report head ${n.headRevision} does not match workflow head ${t.headSha}`);let a=await e.getPullRequest(t.issueNumber);if(a.number!==t.issueNumber)throw Error(`GitHub returned PR #${a.number} instead of requested PR #${t.issueNumber}`);if(a.state!==`open`)throw Error(`Pull request #${t.issueNumber} is not open`);let o=pf(a.head.sha,`Current PR head`),s=pf(a.base.sha,`Current PR base`);if(o!==i)throw Error(`Report head ${n.headRevision} is stale; current PR head is ${a.head.sha}`);if(s!==r)throw Error(`Report base ${n.baseRevision} is stale; current PR base is ${a.base.sha}`);return a}async function ff(e,t,n,r,i,a=`en`){if(await df(e,t,n),!n.contentDigest)throw Error("GitHub report publishing requires an image-bound contentDigest; run `kapture report build` first");let o=Md(n),s=n.summary.changed+n.summary.added+n.summary.removed,c=n.summary.errors>0?`error`:s>0?`changed`:`clean`,l={version:3,baseSha:n.baseRevision.toLowerCase(),headSha:n.headRevision.toLowerCase(),digest:o,captureRunId:t.captureRunId,captureRunAttempt:t.captureRunAttempt,captureWorkflowId:t.captureWorkflowId,captureRunHeadBranch:t.captureRunHeadBranch,captureRunHeadRepositoryId:t.captureRunHeadRepositoryId,status:c,reportUrl:i},u=c===`error`?`failure`:c===`changed`?`pending`:`success`,d=c===`error`?`${n.summary.errors} visual capture error(s)`:c===`changed`?`Visual changes require approval`:n.summary.unstable>0?`${n.summary.unstable} unstable snapshot(s), non-blocking`:`No visual changes`;await e.assertCurrentCaptureRun(t.captureRunId,t.captureRunAttempt,t.captureWorkflowId,t.captureRunHeadBranch,t.captureRunHeadRepositoryId),await e.setReviewStatus(t.headSha,`pending`,uf,r,i);let f=await e.postOrUpdateReportComment(t.issueNumber,Fd(n,l,r,a));await df(e,t,n),await e.assertCurrentCaptureRun(t.captureRunId,t.captureRunAttempt,t.captureWorkflowId,t.captureRunHeadBranch,t.captureRunHeadRepositoryId);let p=await e.getLatestReviewStatus(t.headSha,r);if(!p||p.state!==`pending`||p.description!==uf||p.targetUrl!==i)throw Error(`Kapture status changed while the report was being published; retry report`);return await e.setReviewStatus(t.headSha,u,d,r,i),{status:c,changedCount:s,commentId:f,reportDigest:o}}function pf(e,t){if(!Ld(e))throw Error(`${t} ${e} must be a full 40-character SHA`);return e.toLowerCase()}async function mf(e,t,n,r=`en`){await e.assertWritePermission(t.sender);let i=await e.getPullRequest(t.issueNumber);if(i.number!==t.issueNumber)throw Error(`GitHub returned PR #${i.number} instead of requested PR #${t.issueNumber}`);if(i.state!==`open`)throw Error(`Pull request #${t.issueNumber} is not open`);let a=pf(i.base.sha,`Current PR base`),o=pf(i.head.sha,`Current PR head`);if(o!==t.headSha)throw Error(`Approval SHA ${t.headSha} is stale; current PR head is ${i.head.sha}`);let s=await e.findCurrentReportMarker(t.issueNumber,a,o);if(!s)throw Error(`No Kapture report exists for current base ${a} and head ${o}`);if(s.status!==`changed`)throw Error(`Kapture report for ${t.headSha} is not eligible for approval (${s.status})`);if(s.digest!==t.reportDigest)throw Error(`Approval digest ${t.reportDigest} does not match current report ${s.digest}`);await e.assertCurrentCaptureRun(s.captureRunId,s.captureRunAttempt,s.captureWorkflowId,s.captureRunHeadBranch,s.captureRunHeadRepositoryId);let c=await e.getLatestReviewStatus(o,n);if(!c||c.state!==`pending`||c.description!==`Visual changes require approval`||c.targetUrl!==s.reportUrl)throw Error(`Current Kapture status is not awaiting approval for this report`);let l=await e.findCurrentReportMarker(t.issueNumber,a,o);if(!l||l.digest!==t.reportDigest||l.status!==`changed`||l.captureRunId!==s.captureRunId||l.captureRunAttempt!==s.captureRunAttempt||l.captureWorkflowId!==s.captureWorkflowId||l.captureRunHeadBranch!==s.captureRunHeadBranch||l.captureRunHeadRepositoryId!==s.captureRunHeadRepositoryId||l.reportUrl!==s.reportUrl)throw Error(`Kapture report changed while approval was being applied; retry approval`);await e.assertCurrentCaptureRun(s.captureRunId,s.captureRunAttempt,s.captureWorkflowId,s.captureRunHeadBranch,s.captureRunHeadRepositoryId);let u=await e.getLatestReviewStatus(o,n);if(!u||u.state!==`pending`||u.description!==`Visual changes require approval`||u.targetUrl!==s.reportUrl)throw Error(`Current Kapture status changed while approval was being applied; retry approval`);let d=await e.getPullRequest(t.issueNumber);if(d.number!==t.issueNumber||d.state!==`open`||pf(d.base.sha,`Current PR base`)!==a||pf(d.head.sha,`Current PR head`)!==o)throw Error(`Pull request changed while approval was being applied; retry approval`);return await e.setReviewStatus(t.headSha,`success`,`Approved by @${t.sender}`,n,s.reportUrl),await e.createIssueComment(t.issueNumber,kd(r).approval(t.sender,s.digest)),{status:`approved`,reportDigest:s.digest}}async function K(e){let t=process.env.GITHUB_OUTPUT;if(!t)return;let n=[];for(let[t,r]of Object.entries(e)){let e=String(r),i=`kapture_${ae()}`;n.push(`${t}<<${i}\n${e}\n${i}\n`)}await h(t,n.join(``),`utf8`)}k();const hf=O({meta:{name:`approve`,description:`Approve the current full-SHA Kapture report`},args:{"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`Approval comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=nf(await ef()),r=await mf(new Zd(t,n.repository),n,Bd(e[`status-context`]),Od(e[`comment-language`]));await K({status:r.status,"report-digest":r.reportDigest})}catch(e){throw await K({status:`error`}),e}}}),q={silent:-1/0,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:1/0},gf={silent:{level:-1},fatal:{level:q.fatal},error:{level:q.error},warn:{level:q.warn},log:{level:q.log},info:{level:q.info},success:{level:q.success},fail:{level:q.fail},ready:{level:q.info},start:{level:q.info},box:{level:q.info},debug:{level:q.debug},trace:{level:q.trace},verbose:{level:q.verbose}};function _f(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function vf(e,t,n=`.`,r){if(!_f(t))return vf(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:_f(a)&&_f(i[t])?vf(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function yf(e){return(...t)=>t.reduce((t,n)=>vf(t,n,``,e),{})}const bf=yf();function xf(e){return Object.prototype.toString.call(e)===`[object Object]`}function Sf(e){return!(!xf(e)||!e.message&&!e.args||e.stack)}let Cf=!1;const wf=[];var Tf=class e{options;_lastLog;_mockFn;constructor(e={}){let t=e.types||gf;this.options=bf({...e,defaults:{...e.defaults},level:Ef(e.level,t),reporters:[...e.reporters||[]]},{types:gf,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let e in t){let n={type:e,...this.options.defaults,...t[e]};this[e]=this._wrapLogFn(n),this[e].raw=this._wrapLogFn(n,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(e){this.options.level=Ef(e,this.options.types,this.options.level)}prompt(e,t){if(!this.options.prompt)throw Error(`prompt is not supported!`);return this.options.prompt(e,t)}create(t){let n=new e({...this.options,...t});return this._mockFn&&n.mockTypes(this._mockFn),n}withDefaults(e){return this.create({...this.options,defaults:{...this.options.defaults,...e}})}withTag(e){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+`:`+e:e})}addReporter(e){return this.options.reporters.push(e),this}removeReporter(e){if(e){let t=this.options.reporters.indexOf(e);if(t!==-1)return this.options.reporters.splice(t,1)}else this.options.reporters.splice(0);return this}setReporters(e){return this.options.reporters=Array.isArray(e)?e:[e],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let e in this.options.types)console[`__`+e]||(console[`__`+e]=console[e]),console[e]=this[e].raw}restoreConsole(){for(let e in this.options.types)console[`__`+e]&&(console[e]=console[`__`+e],delete console[`__`+e])}wrapStd(){this._wrapStream(this.options.stdout,`log`),this._wrapStream(this.options.stderr,`log`)}_wrapStream(e,t){e&&(e.__write||=e.write,e.write=e=>{this[t].raw(String(e).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(e){e&&e.__write&&(e.write=e.__write,delete e.__write)}pauseLogs(){Cf=!0}resumeLogs(){Cf=!1;let e=wf.splice(0);for(let t of e)t[0]._logFn(t[1],t[2])}mockTypes(e){let t=e||this.options.mockFn;if(this._mockFn=t,typeof t==`function`)for(let e in this.options.types)this[e]=t(e,this.options.types[e])||this[e],this[e].raw=this[e]}_wrapLogFn(e,t){return(...n)=>{if(Cf){wf.push([this,e,n,t]);return}return this._logFn(e,n,t)}}_logFn(e,t,n){if((e.level||0)>this.level)return!1;let r={date:new Date,args:[],...e,level:Ef(e.level,this.options.types)};!n&&t.length===1&&Sf(t[0])?Object.assign(r,t[0]):r.args=[...t],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
|
|
597
|
+
})()`);if(i.kind===`timeout`)throw i.sawAdapter?Error(`Kapture Storybook adapter did not become ready for ${t} (last state: ${i.lastState??`unknown`}).`):Error(`Kapture Storybook adapter was not found for ${t}. Install @kaptures/storybook and register kapture() in .storybook/preview.`);let a;try{a=eu(i.value)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${t}. Install matching versions of @kaptures/cli and @kaptures/storybook.`,{cause:e})}if(a.state===`error`){let e=a.error.kind===`configuration`?`configuration`:`lifecycle`;throw Error(`Kapture Storybook ${e} error for ${t}: ${a.error.message}`)}if(a.state!==`ready`||a.storyId!==t)throw Error(`Kapture Storybook returned invalid terminal state for ${t}`);if(a.adapterVersion!==n)throw Error(`Kapture adapter version mismatch for ${t}: CLI ${n}, Storybook ${a.adapterVersion}. Install matching exact versions of @kaptures/cli and @kaptures/storybook.`);return{adapterVersion:a.adapterVersion,generation:a.generation,parameters:a.parameters}}function wu(e,t){return e.adapterVersion===t.adapterVersion&&e.generation===t.generation}async function Tu(e,t=jd){let n=e.workers??4;if(!Number.isInteger(n)||n<1||n>8)throw Error(`Kapture workers must be between 1 and 8`);let r=f(e.outputDir);await y(r),await y(c(r,`images`));let i=await dl(e.headDir);try{let a=Zl(await Xl(i.url));if(!a.length)throw Error(`Initial adoption requires at least one story`);let[o,s]=await Promise.all([t.getBrowserVersion(),t.getFontsFingerprint()]),l=Gc({browserVersion:o,fontsFingerprint:s,frozenTime:e.frozenTime,randomSeed:e.randomSeed,locale:e.locale,timezone:e.timezone}),u=c(r,`hermetic-init.js`);await w(u,Zc(l));let d=Ou(e.headRevision,l);if(await Du({pairs:a.map(e=>({id:e.id,head:e})),requestedWorkers:n,namespace:`i-${process.pid.toString(36)}-${Date.now().toString(36)}`,initScriptPath:u,options:{...e,baseDir:e.headDir,baseRevision:e.headRevision},baseUrl:``,headUrl:i.url,baseOutput:r,headOutput:r,baseManifest:Ou(e.headRevision,l),headManifest:d,environment:l,captureBase:!1}),await hl(c(r,`manifest.json`),d),!Object.keys(d.snapshots).length)throw Error(`Initial adoption requires at least one enabled snapshot`);return d}finally{await i.close()}}async function Eu(e,t=jd){let n=f(e.outputDir),r=c(n,`capture`,`base`),i=c(n,`capture`,`head`),a=c(n,`report`);await re(n,{recursive:!0,force:!0}),await Promise.all([y(c(r,`images`),{recursive:!0}),y(c(i,`images`),{recursive:!0}),y(a,{recursive:!0})]);let[o,s]=await Promise.all([dl(e.baseDir),dl(e.headDir)]);try{let[l,u,d,f]=await Promise.all([Xl(o.url),Xl(s.url),xl(e.baseDir),xl(e.headDir)]),p=Zl(l),m=Zl(u),h=ju(p,m,e,{base:d.evidence,head:f.evidence}),g=Au(p,m,h.selectedStoryIds),[_,v]=g.length===0?[`not-launched:no-affected-stories-v1`,`not-inspected:no-affected-stories-v1`]:await Promise.all([t.getBrowserVersion(),t.getFontsFingerprint()]),b=Gc({browserVersion:_,fontsFingerprint:v,frozenTime:e.frozenTime,randomSeed:e.randomSeed,locale:e.locale,timezone:e.timezone}),ee=c(n,`hermetic-init.js`);await w(ee,Zc(b));let x=`k-${process.pid.toString(36)}-${Date.now().toString(36)}`,S=e.baseCaptureDir?await Bu(e.baseCaptureDir,r,e.baseRevision,b,g):void 0;if(!S&&e.captureCacheDir&&g.length>0)try{let t=await _l(e.baseDir,e.adapterVersion),n=await vl(e.captureCacheDir,t),i=await Bu(e.captureCacheDir,r,n.revision,b,g,!0);for(let e of Object.values(i.manifest.snapshots))e.sourceRevision??=n.revision;i.manifest.revision=e.baseRevision,S=i}catch(e){console.warn(`Kapture capture cache miss: ${e instanceof Error?e.message:String(e)}`)}S&&(h.baseline={mode:`reused`,revision:S.manifest.revision,manifestDigest:S.manifestDigest});let te=S?.manifest??Ou(e.baseRevision,b),ne=Ou(e.headRevision,b),C=e.workers??4;if(!Number.isInteger(C)||C<1||C>8)throw Error(`Kapture workers must be between 1 and 8`);await Du({pairs:g,requestedWorkers:C,namespace:x,initScriptPath:ee,options:e,baseUrl:o.url,headUrl:s.url,baseOutput:r,headOutput:i,baseManifest:te,headManifest:ne,environment:b,captureBase:!S||!!e.captureCacheDir,cachedBaseStoryIds:S?new Set(Object.values(S.manifest.snapshots).map(e=>e.storyId)):void 0}),S&&await Vu({baseline:S.manifest,baselineRoot:S.root,headManifest:ne,headOutput:i,selectedStoryIds:h.selectedStoryIds,removedStoryIds:h.removedStoryIds??[]}),await Promise.all([hl(c(r,`manifest.json`),te),hl(c(i,`manifest.json`),ne)]);let T={...ad,...e.threshold},ie=c(n,`stability-candidates`),ae=await sl({baseManifest:te,headManifest:ne,baseRoot:r,headRoot:i,outputDir:ie,threshold:T,coverage:h}),oe=new Set(Object.values(ae.entries).filter(e=>e.status===`changed`).map(e=>e.id)),se;if(oe.size>0){let t=new Set(Object.values(ae.entries).filter(e=>oe.has(e.id)).map(e=>e.storyId)),r=g.filter(e=>t.has(e.id)),i=c(n,`capture`,`base-repeat`),a=c(n,`capture`,`head-repeat`);await Promise.all([y(c(i,`images`),{recursive:!0}),y(c(a,`images`),{recursive:!0})]);let l=Ou(e.baseRevision,b),u=Ou(e.headRevision,b);await Du({pairs:r,requestedWorkers:C,namespace:`${x}-s`,initScriptPath:ee,options:e,baseUrl:o.url,headUrl:s.url,baseOutput:i,headOutput:a,baseManifest:l,headManifest:u,environment:b,captureBase:!0}),await Promise.all([hl(c(i,`manifest.json`),l),hl(c(a,`manifest.json`),u)]),se={baseManifest:l,headManifest:u,baseRoot:i,headRoot:a}}await re(ie,{recursive:!0,force:!0});let ce=await sl({baseManifest:te,headManifest:ne,baseRoot:r,headRoot:i,outputDir:a,threshold:T,coverage:h,stability:se});if(e.captureCacheOutput&&ce.summary.errors===0&&ce.summary.unstable===0)try{let t=await _l(e.headDir,e.adapterVersion);await yl(e.captureCacheOutput,i,t,ne)}catch(e){console.warn(`Kapture capture cache export unavailable: ${e instanceof Error?e.message:String(e)}`)}return{baseManifest:te,headManifest:ne,report:ce}}finally{await Promise.allSettled([o.close(),s.close()])}}async function Du(e){let t=Math.min(e.requestedWorkers,e.pairs.length),n=e.captureBase&&e.pairs.some(t=>!!t.base&&!e.cachedBaseStoryIds?.has(t.id)),r=e.pairs.some(e=>!!e.head),i=[...e.pairs],a=[],o=[];try{for(let i=0;i<t;i+=1){let t={};n&&(t.base=ku(i,`base`,e.options,{namespace:e.namespace,initScriptPath:e.initScriptPath,environment:e.environment}),o.push(t.base)),r&&(t.head=ku(i,`head`,e.options,{namespace:e.namespace,initScriptPath:e.initScriptPath,environment:e.environment}),o.push(t.head)),a.push(t)}await Promise.all(a.map(async t=>{for(;i.length>0;){let n=i.shift();if(!n)return;await Iu({workers:t,pair:n,baseUrl:e.baseUrl,headUrl:e.headUrl,baseOutput:e.baseOutput,headOutput:e.headOutput,baseManifest:e.baseManifest,headManifest:e.headManifest,environment:e.environment,adapterVersion:e.options.adapterVersion,captureBase:e.captureBase&&!e.cachedBaseStoryIds?.has(n.id)})}}))}finally{await Promise.allSettled(o.map(e=>Promise.resolve().then(()=>e.close())))}}function Ou(e,t){return{version:2,revision:e,environment:t,createdAt:new Date().toISOString(),snapshots:{}}}function ku(e,t,n,r){let i={...r,target:t};return n.workerFactory?n.workerFactory(e,i):new nd({id:`${r.namespace}-${t}-${e}`,namespace:r.namespace,initScriptPath:r.initScriptPath,timezone:r.environment.timezone,locale:r.environment.locale,deviceScaleFactor:r.environment.deviceScaleFactor,allowedDomains:r.environment.network.allowedDomains})}function Au(e,t,n){let r=new Map(e.map(e=>[e.id,e])),i=new Map(t.map(e=>[e.id,e])),a=[...new Set([...r.keys(),...i.keys()])].sort(),o=n?[...new Set(n)].sort():a,s=new Set(a),c=o.filter(e=>!s.has(e));if(c.length>0)throw Error(`Unknown Kapture story IDs: ${c.join(`, `)}`);return o.map(e=>({id:e,base:r.get(e),head:i.get(e)}))}function ju(e,t,n,r){if(n.selectionPlan&&n.storyIds)throw Error(`Kapture selectionPlan and storyIds cannot be provided together`);let i=[...new Set([...e,...t].map(e=>e.id))].sort(),a=new Set(e.map(e=>e.id)),o=new Set(t.map(e=>e.id)),s=i.filter(e=>!a.has(e)&&o.has(e)),c=i.filter(e=>a.has(e)&&!o.has(e)),l=Mu(r,n.baseRevision,n.headRevision),u=n.selectionPlan;if(u){if(Fu(u.totalStoryIds,i,`selection plan catalog`),Fu(u.addedStoryIds,s,`selection plan added stories`),Fu(u.removedStoryIds,c,`selection plan removed stories`),Nu(u.dependencyManifests,r),Pu(u.selectedStoryIds,u.skippedStoryIds,i),u.selectionMode===`full-fallback`&&u.fallbackReasons.length===0)throw Error(`Kapture full-fallback selection plan requires a fallback reason`);if(u.selectionMode===`affected`&&u.fallbackReasons.length>0)throw Error(`Kapture affected selection plan cannot contain fallback reasons`);return{plannerVersion:1,mode:u.selectionMode,...u.changedFilesEvidence?{changedFilesEvidence:{...u.changedFilesEvidence}}:{},dependencyManifests:l,storyIds:i,selectedStoryIds:[...u.selectedStoryIds],skippedStoryIds:[...u.skippedStoryIds],addedStoryIds:s,removedStoryIds:c,fallbackReasons:u.fallbackReasons.map(e=>({...e}))}}if(n.storyIds){let e=[...new Set(n.storyIds)].sort(),t=new Set(i),r=e.filter(e=>!t.has(e));if(r.length>0)throw Error(`Unknown Kapture story IDs: ${r.join(`, `)}`);let a=new Set(e);return{plannerVersion:1,mode:`affected`,dependencyManifests:l,storyIds:i,selectedStoryIds:e,skippedStoryIds:i.filter(e=>!a.has(e)),addedStoryIds:s,removedStoryIds:c,fallbackReasons:[]}}return{plannerVersion:1,mode:`full`,dependencyManifests:l,storyIds:i,selectedStoryIds:i,skippedStoryIds:[],addedStoryIds:s,removedStoryIds:c,fallbackReasons:[]}}function Mu(e,t,n){return{base:{...e.base,revision:t},head:{...e.head,revision:n}}}function Nu(e,t){if(JSON.stringify(e)!==JSON.stringify(t))throw Error(`Kapture selection plan dependency manifests do not match the built Storybook artifacts`)}function Pu(e,t,n){Fu(e,[...new Set(e)].sort(),`selected stories`),Fu(t,[...new Set(t)].sort(),`skipped stories`);let r=new Set(e),i=[...e,...t].sort();if(t.some(e=>r.has(e)))throw Error(`Kapture selection plan cannot select and skip the same story`);Fu(i,n,`selection plan partition`)}function Fu(e,t,n){if(e.length!==t.length||e.some((e,n)=>e!==t[n]))throw Error(`Kapture ${n} does not match the built Storybook catalog`)}async function Iu(e){let t={base:Lu(!!e.pair.base&&e.captureBase),head:Lu(!!e.pair.head)},n=[];e.pair.base&&e.captureBase&&n.push(Ru(e,`base`,t)),e.pair.head&&n.push(Ru(e,`head`,t)),await Promise.all(n)}function Lu(e){if(!e)return{promise:Promise.resolve(void 0),resolve:()=>void 0};let t=()=>void 0,n=!1;return{promise:new Promise(e=>{t=e}),resolve(e){n||(n=!0,t(e))}}}async function Ru(e,t,n){let r=e.pair[t];if(!r)return;let i=e.workers[t];if(!i)throw Error(`Kapture ${t} browser worker was not initialized`);let a=t===`base`?e.baseManifest:e.headManifest,o=t===`base`?e.baseUrl:e.headUrl,s=t===`base`?e.baseOutput:e.headOutput,c=t===`base`?`head`:`base`;try{await i.runAttempt({target:t,storyId:r.id},async i=>{let l=await Hu(i,o,r,e.environment,e.adapterVersion).catch(Yu);if(n[t].resolve(l),l instanceof Error){qu(a,r,l);return}let u=await n[c].promise;if(u instanceof Error)return;let d=t===`base`?l.parameters:u?.parameters,f=t===`head`?l.parameters:u?.parameters,p=e.captureBase?Uu(d,f,!!e.pair.base,!!e.pair.head):zu(e.baseManifest,e.pair.id,f,!!e.pair.head);for(let n of p){let c=n[t];!c||l.parameters.captureEnabled===!1||await Wu({driver:i,story:r,baseUrl:o,outputRoot:s,manifest:a,viewport:c,parameters:l.parameters,captureArea:l.parameters.captureArea,threshold:Gu(l.parameters.diff),adapterVersion:e.adapterVersion})}})}catch(e){let i=Yu(e);n[t].resolve(i),Ju(a,r,i)}}function zu(e,t,n,r=!0){let i=Object.values(e.snapshots).filter(e=>e.storyId===t).map(e=>e.viewport),a=!r||n?.captureEnabled===!1?[]:n?.captureViewports??[id],o=new Map(i.map(e=>[e.name,e])),s=new Map(a.map(e=>[e.name,e]));return[...new Set([...o.keys(),...s.keys()])].sort().map(e=>({base:o.get(e),head:s.get(e)}))}async function Bu(e,t,n,r,i,a=!1){let o=f(e),s=c(o,`manifest.json`),l=await gl(s);if(l.revision!==n)throw Error(`Kapture baseline revision ${l.revision} does not match requested base ${n}`);Jc(l.environment,r);let u=new Set(i.filter(e=>e.base).map(e=>e.id)),d={...l.snapshots};for(let e of u)if(!a&&!Object.values(d).some(t=>t.storyId===e))throw Error(`Kapture baseline does not contain selected base story ${e}`);return await Promise.all(Object.values(d).map(async e=>{if(e.error)return;let n=c(o,e.imageFile);if(await al(n)!==e.sha256)throw Error(`Kapture baseline image digest mismatch for ${e.id}`);await g(n,c(t,e.imageFile))})),{root:t,manifest:{...l,snapshots:d},manifestDigest:await al(s)}}async function Vu(e){let t=new Set(e.selectedStoryIds),n=new Set(e.removedStoryIds);await Promise.all(Object.values(e.baseline.snapshots).map(async r=>{t.has(r.storyId)||n.has(r.storyId)||(e.headManifest.snapshots[r.id]={...r,sourceRevision:r.sourceRevision??e.baseline.revision},!r.error&&await g(c(e.baselineRoot,r.imageFile),c(e.headOutput,r.imageFile)))}))}async function Hu(e,t,n,r,i){return await e.setViewport(id),await e.setMedia(r.colorScheme,r.reducedMotion===`reduce`),await e.open(Ql(t,n.id)),Cu(e,n.id,i)}function Uu(e,t,n=!0,r=!0){let i=!n||e?.captureEnabled===!1?[]:e?.captureViewports??[id],a=!r||t?.captureEnabled===!1?[]:t?.captureViewports??[id],o=new Map(i.map(e=>[e.name,e])),s=new Map(a.map(e=>[e.name,e]));return[...new Set([...o.keys(),...s.keys()])].sort().map(e=>({base:o.get(e),head:s.get(e)}))}async function Wu(e){let{driver:t,story:n,baseUrl:r,outputRoot:i,manifest:a,viewport:o,parameters:s,captureArea:l,threshold:u,adapterVersion:f}=e,p=`${n.id}@${o.name}`,m=c(`images`,ol(p)),h=c(i,m),g=performance.now();try{await t.setViewport(o),await t.setMedia(a.environment.colorScheme,a.environment.reducedMotion===`reduce`),await t.open(Ql(r,n.id));let e=await Cu(t,n.id,f);Ku(e,s,n.id);let c;for(let r=1;r<=3;r+=1){c=await Bc(t,a.environment,e.parameters);let i=await Cu(t,n.id,f);if(Ku(i,s,n.id),wu(e,i))break;if(r===3)throw Error(`Kapture story ${n.id} kept rerendering while the capture was stabilizing`);e=i,c=void 0}if(!c)throw Error(`Kapture could not stabilize ${n.id}`);await t.screenshot(h,{fullPage:l!==`viewport`}),a.snapshots[p]={id:p,storyId:n.id,title:n.title,name:n.name,viewport:o,imageFile:d(i,h),sha256:await al(h),capturedAt:new Date().toISOString(),durationMs:Math.round(performance.now()-g),ignoredRegions:c.ignoredRegions.length>0?c.ignoredRegions:void 0,threshold:u}}catch(e){a.snapshots[p]={id:p,storyId:n.id,title:n.title,name:n.name,viewport:o,imageFile:m,sha256:``,capturedAt:new Date().toISOString(),durationMs:Math.round(performance.now()-g),threshold:u,error:e instanceof Error?e.message:String(e)}}}function Gu(e){if(e)return{...e.pixelColorThreshold===void 0?{}:{pixelColorThreshold:e.pixelColorThreshold},...e.maxChangedPixelPercentage===void 0?{}:{maxChangedPixelRatio:e.maxChangedPixelPercentage/100}}}function Ku(e,t,n){if(JSON.stringify(e.parameters)!==JSON.stringify(t))throw Error(`Kapture parameters changed between metadata and capture for ${n}`)}function qu(e,t,n){let r=`${t.id}@metadata`;e.snapshots[r]={id:r,storyId:t.id,title:t.title,name:t.name,viewport:id,imageFile:``,sha256:``,capturedAt:new Date().toISOString(),durationMs:0,error:n.message}}function Ju(e,t,n){let r=`${t.id}@attempt`;e.snapshots[r]={id:r,storyId:t.id,title:t.title,name:t.name,viewport:id,imageFile:``,sha256:``,capturedAt:new Date().toISOString(),durationMs:0,error:n.message}}function Yu(e){return e instanceof Error?e:Error(String(e))}async function Xu(e,t){if(!(await C(e)).isDirectory())throw Error(`Dashboard build is not a directory: ${e}`);await _(e,t,{recursive:!0,force:!0});let n=f(t,`index.html`),r=f(t,`report.json`),[i,a]=await Promise.all([x(n,`utf8`),x(r,`utf8`)]),o=Zu(i,/<link\b[^>]*\brel=["']stylesheet["'][^>]*\bhref=["']([^"']+)["'][^>]*>/i,`stylesheet`),s=Zu(i,/<script\b[^>]*\bsrc=["']([^"']+)["'][^>]*><\/script>/i,`module script`),[c,l]=await Promise.all([Qu(t,o.url),Qu(t,s.url)]),u=$u(c,o.url),d=`<script id="kapture-report-data" type="application/json">${a.trim().replaceAll(`<`,`\\u003c`)}<\/script>\n<script data-kapture-dashboard>"use strict";\n${l.replace(/<\/script/gi,`<\\/script`)}<\/script>`,p=i.replace(o.tag,()=>`<style>${u}</style>`).replace(s.tag,``);if(!p.includes(`</body>`))throw Error(`Dashboard index is missing its closing body tag`);let m=p.replace(`</body>`,()=>`${d}\n</body>`);await w(n,m)}function Zu(e,t,n){let r=e.match(t);if(!r?.[1])throw Error(`Dashboard index is missing its ${n}`);return{tag:r[0],url:r[1]}}async function Qu(e,t){if(/^[a-z]+:/i.test(t)||t.startsWith(`/`)||t.includes(`?`))throw Error(`Dashboard asset must be a relative local path: ${t}`);let n=f(e),r=f(n,t);if(!r.startsWith(`${n}${p}`))throw Error(`Dashboard asset resolves outside the report directory: ${t}`);return x(r,`utf8`)}function $u(e,t){let n=u.dirname(t);return e.replace(/url\((["']?)(\.\/[^"')]+)\1\)/g,(e,t,r)=>{let i=u.join(n,r);return`url(${t}${i.startsWith(`.`)?i:`./${i}`}${t})`})}var ed,td,nd,rd,id,ad,od,sd,cd,ld,ud,dd,fd,pd,md,hd,gd,_d,vd,yd,bd,xd,Sd,Cd,wd,Td,Ed,Dd,Od,kd,Ad,jd,Md=E((()=>{_t(),ed=zt(),Fc(),td=class{session;isolation=`browser-process`;namespace;initScriptPath;timezone;locale;deviceScaleFactor;allowedDomains;timeoutMs;bin;commandStarted=!1;closePromise;constructor(e){this.session=e.session,this.namespace=e.namespace,this.initScriptPath=e.initScriptPath,this.timezone=e.timezone,this.locale=e.locale,this.deviceScaleFactor=e.deviceScaleFactor,this.allowedDomains=e.allowedDomains,this.timeoutMs=e.timeoutMs??3e4,this.bin=zc()}open(e){return this.execVoid([`open`,e])}setViewport(e){return this.execVoid([`set`,`viewport`,String(e.width),String(e.height)])}setMedia(e,t){let n=[`set`,`media`,e];return t&&n.push(`reduced-motion`),this.execVoid(n)}async evaluate(e){let t=await this.exec([`eval`,e]),n=JSON.parse(t);if(n.success===!1)throw Error(n.error??`agent-browser eval failed`);return n.data&&typeof n.data==`object`&&`result`in n.data?n.data.result:n.data===void 0?n.result===void 0?n:n.result:n.data}screenshot(e,t){return this.execVoid([`screenshot`,...t.fullPage?[`--full`]:[],e])}close(){return this.closePromise?this.closePromise:this.commandStarted?(this.closePromise=this.execVoid([`close`],!0),this.closePromise):(this.closePromise=Promise.resolve(),this.closePromise)}async execVoid(e,t=!1){let n=await this.exec(e,t);try{let t=JSON.parse(n);if(t.success===!1)throw Error(t.error??`agent-browser command failed: ${e.join(` `)}`)}catch(e){if(e instanceof SyntaxError)return;throw e}}exec(e,t=!1){if(this.closePromise&&!t)return Promise.reject(Error(`agent-browser session ${this.session} is closed`));t||(this.commandStarted=!0);let n=[`--session`,this.session,`--namespace`,this.namespace,`--init-script`,this.initScriptPath,`--allowed-domains`,this.allowedDomains.join(`,`),`--args`,`--force-device-scale-factor=${this.deviceScaleFactor},--lang=${this.locale}`,`--json`,...e];return new Promise((t,i)=>{let a=r(this.bin,n,{env:{...process.env,LANG:`${this.locale}.UTF-8`,TZ:this.timezone},stdio:[`ignore`,`pipe`,`pipe`]}),o=[],s=[];a.stdout.on(`data`,e=>o.push(e)),a.stderr.on(`data`,e=>s.push(e));let c=setTimeout(()=>{a.kill(),i(Error(`agent-browser timed out after ${this.timeoutMs}ms: ${e.join(` `)}`))},this.timeoutMs);a.once(`error`,e=>{clearTimeout(c),i(e)}),a.once(`close`,e=>{clearTimeout(c);let n=Buffer.concat(o).toString(`utf8`).trim(),r=Buffer.concat(s).toString(`utf8`).trim();if(e!==0){i(Error(`agent-browser failed (${e}): ${r||n}`));return}t(n)})})}},nd=class{id;options;attemptFactory;sessionPrefix;attemptNumber=0;activeAttempt;closed=!1;constructor(e,t=e=>new td(e)){this.id=e.id,this.sessionPrefix=`kw-${T(`sha256`).update(e.id).digest(`hex`).slice(0,8)}`;let{id:n,...r}=e;this.options=r,this.attemptFactory=t}async runAttempt(e,t){if(this.closed)throw Error(`Browser worker ${this.id} is closed`);if(this.activeAttempt)throw Error(`Browser worker ${this.id} already has an active attempt`);let n=++this.attemptNumber,r=new rd(e,this.attemptFactory({...this.options,session:`${this.sessionPrefix}-${e.target[0]}-${n.toString(36)}`}));this.activeAttempt=r;let i,a,o=!1;try{i=await t(r)}catch(e){o=!0,a=e}let s,c=!1;try{await r.close()}catch(e){c=!0,s=e}finally{this.activeAttempt===r&&(this.activeAttempt=void 0)}if(o&&c)throw AggregateError([a,s],`Browser attempt ${r.session} failed and could not be closed`);if(o)throw a;if(c)throw s;return i}async close(){if(this.closed)return;this.closed=!0;let e=this.activeAttempt;e&&(await e.close(),this.activeAttempt===e&&(this.activeAttempt=void 0))}},rd=class{scope;driver;isolation=`browser-process`;closePromise;constructor(e,t){this.scope=e,this.driver=t}get session(){return this.driver.session}open(e){return this.driver.open(e)}setViewport(e){return this.driver.setViewport(e)}setMedia(e,t){return this.driver.setMedia(e,t)}evaluate(e){return this.driver.evaluate(e)}screenshot(e,t){return this.driver.screenshot(e,t)}close(){return this.closePromise??=this.driver.close(),this.closePromise}},id={name:`default`,width:1280,height:800},ad={pixelColorThreshold:.2,maxChangedPixelRatio:0},od=[`baseImage`,`headImage`,`diffImage`],sd=/^[0-9a-f]{64}$/,cd={".css":`text/css; charset=utf-8`,".html":`text/html; charset=utf-8`,".ico":`image/x-icon`,".jpeg":`image/jpeg`,".jpg":`image/jpeg`,".js":`text/javascript; charset=utf-8`,".json":`application/json; charset=utf-8`,".mjs":`text/javascript; charset=utf-8`,".png":`image/png`,".svg":`image/svg+xml`,".woff":`font/woff`,".woff2":`font/woff2`},ld=B({name:R(),width:z(),height:z()}),ud=B({id:R(),browser:R(),browserVersion:R(),orchestratorRuntime:R(),operatingSystem:R(),architecture:R(),deviceScaleFactor:z(),locale:R(),timezone:R(),colorScheme:Os([`light`,`dark`]),reducedMotion:Os([`reduce`,`no-preference`]),frozenTime:R(),randomSeed:z(),fontsFingerprint:R(),stateIsolation:V(`fresh-browser-process-per-story-side-v1`).optional(),network:B({mode:V(`allowlist`),allowedDomains:Ss(R()),webRtc:V(`disabled`)})}),dd=B({id:R(),storyId:R(),title:R(),name:R(),viewport:ld,imageFile:R(),sha256:R(),capturedAt:R(),durationMs:z(),sourceRevision:R().optional(),ignoredRegions:Ss(B({x:z().int().nonnegative(),y:z().int().nonnegative(),width:z().int().positive(),height:z().int().positive()})).optional(),threshold:B({pixelColorThreshold:z().optional(),maxChangedPixelRatio:z().optional()}).optional(),error:R().optional()}).superRefine((e,t)=>{e.error||(/^images\/[A-Za-z0-9._-]+\.png$/.test(e.imageFile)||t.addIssue({code:`custom`,path:[`imageFile`],message:`must be a safe image path`}),/^[0-9a-f]{64}$/.test(e.sha256)||t.addIssue({code:`custom`,path:[`sha256`],message:`must be a SHA-256 digest`}))}),fd=B({version:V(2),revision:R(),environment:ud,createdAt:R(),snapshots:Ds(R(),dd)}),pd=B({version:V(1),buildDigest:R().regex(/^[a-f0-9]{64}$/),manifestDigest:R().regex(/^[a-f0-9]{64}$/)}),md=`kapture-dependencies.json`,hd=R().min(1).max(4096).refine(Dl,`must be a normalized project-relative path`),gd=R().max(4096).refine(e=>e===``||Dl(e),{message:`must be empty or a normalized project-relative path`}),_d=Ss(hd).max(1e5).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),vd=R().regex(/^[0-9a-f]{64}$/),yd=Cs({type:Os([`asset`,`chunk`]),size:z().int().nonnegative().max(1e9),sha256:vd}).strict(),bd=R().max(4096).refine(e=>e===``||e.endsWith(`/`)&&Dl(e.slice(0,-1)),`must be empty or a normalized project-relative directory prefix`),xd=R().min(1).max(1024),Sd=Ss(xd).max(1e4).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),Cd=Ds(hd,Ds(hd,Sd)),wd=Ds(hd,Ds(xd,Cs({module:hd,imported:xd}).strict())),Td=Cs({kind:V(`kapture-storybook-dependencies`),version:V(1),complete:ys(),storybookRoot:gd,globalInputs:_d,ignoredInputs:_d,fingerprintedInputs:_d.optional(),diagnostics:Ss(Os([`module-outside-project-root`,`module-fingerprint-missing`,`unresolved-virtual-module`,`unresolved-project-module`,`rendered-output-fingerprint-missing`,`global-output-fingerprint-missing`,`global-runtime-fingerprint-missing`,`unowned-output-chunk`,`output-inventory-mismatch`])).max(20).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),modules:Ds(hd,_d),moduleFingerprints:Ds(hd,vd).optional(),globalOutputFingerprints:Ds(hd,vd),globalOutputStories:Ds(hd,_d),globalRuntimeFingerprint:vd,outputInventory:Ds(hd,yd),outputInventoryPrefixes:Ss(bd).max(100).refine(e=>new Set(e).size===e.length,`must not contain duplicates`),importBindings:Cd.optional(),reexportBindings:wd.optional(),renderedModules:Ds(hd,_d),renderedOutputFingerprints:Ds(hd,vd)}).strict().superRefine((e,t)=>{let n=Object.entries(e.modules),r=new Set(n.map(([e])=>e));n.length>1e5&&t.addIssue({code:`custom`,path:[`modules`],message:`contains too many modules`});for(let[i,a]of n)a.includes(i)||t.addIssue({code:`custom`,path:[`modules`,i],message:`must include the module itself`}),e.complete&&a.some(e=>!r.has(e))&&t.addIssue({code:`custom`,path:[`modules`,i],message:`must resolve every project dependency when the manifest is complete`});Object.keys(e.globalOutputFingerprints).length>1e5&&t.addIssue({code:`custom`,path:[`globalOutputFingerprints`],message:`contains too many global output fingerprints`});let i=new Set(Object.keys(e.globalOutputFingerprints)),a=Object.entries(e.globalOutputStories);a.length>1e5&&t.addIssue({code:`custom`,path:[`globalOutputStories`],message:`contains too many global output story lists`});for(let[e,n]of a){i.has(e)||t.addIssue({code:`custom`,path:[`globalOutputStories`,e],message:`must identify a fingerprinted global output`});for(let i of n)if(!r.has(i)){t.addIssue({code:`custom`,path:[`globalOutputStories`,e],message:`must contain only rendered story modules`});break}}for(let n of i)n in e.globalOutputStories||t.addIssue({code:`custom`,path:[`globalOutputStories`,n],message:`must cover every fingerprinted global output`});let o=Object.entries(e.outputInventory);o.length>1e5&&t.addIssue({code:`custom`,path:[`outputInventory`],message:`contains too many output files`}),`kapture-dependencies.json`in e.outputInventory&&t.addIssue({code:`custom`,path:[`outputInventory`,md],message:`must not inventory the manifest itself`});for(let n of e.outputInventoryPrefixes)o.some(([e])=>e.startsWith(n))||t.addIssue({code:`custom`,path:[`outputInventoryPrefixes`],message:`must cover at least one inventoried output`});let s=Object.entries(e.moduleFingerprints??{});s.length>1e5&&t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`contains too many module fingerprints`});for(let[e]of s)r.has(e)||t.addIssue({code:`custom`,path:[`moduleFingerprints`,e],message:`must identify a rendered module`});(e.fingerprintedInputs?.length??0)>0&&(e.moduleFingerprints?e.complete&&n.some(([t])=>!e.moduleFingerprints?.[t])&&t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`must cover every rendered module when the manifest is complete`}):t.addIssue({code:`custom`,path:[`moduleFingerprints`],message:`is required when fingerprintedInputs are configured`}));let c=0;for(let[n,i]of Object.entries(e.importBindings??{})){c+=Object.keys(i).length,r.has(n)||t.addIssue({code:`custom`,path:[`importBindings`,n],message:`must identify a rendered importer`});for(let r of Object.keys(i))e.modules[n]?.includes(r)||t.addIssue({code:`custom`,path:[`importBindings`,n,r],message:`must identify a direct project dependency`})}for(let[n,i]of Object.entries(e.reexportBindings??{})){c+=Object.keys(i).length,r.has(n)||t.addIssue({code:`custom`,path:[`reexportBindings`,n],message:`must identify a rendered barrel`});for(let[r,a]of Object.entries(i))e.modules[n]?.includes(a.module)||t.addIssue({code:`custom`,path:[`reexportBindings`,n,r],message:`must identify a direct project dependency`})}c>1e6&&t.addIssue({code:`custom`,path:[`importBindings`],message:`contains too many import and re-export bindings`});let l=Object.entries(e.renderedModules??{});l.length>1e5&&t.addIssue({code:`custom`,path:[`renderedModules`],message:`contains too many rendered module closures`});let u=0;for(let[e,n]of l){u+=n.length,r.has(e)||t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must identify a rendered entry module`}),n.includes(e)||t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must include the entry module itself`});for(let i of n)if(!r.has(i)){t.addIssue({code:`custom`,path:[`renderedModules`,e],message:`must contain only rendered project modules`});break}}u>5e6&&t.addIssue({code:`custom`,path:[`renderedModules`],message:`contains too many rendered module references`});let d=Object.entries(e.renderedOutputFingerprints);d.length>1e5&&t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`],message:`contains too many rendered output fingerprints`});for(let[e]of d)r.has(e)||t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`,e],message:`must identify a rendered entry module`});e.complete&&l.some(([t])=>e.renderedOutputFingerprints[t]===void 0)&&t.addIssue({code:`custom`,path:[`renderedOutputFingerprints`],message:`must cover every rendered entry module when the manifest is complete`}),e.complete!==(e.diagnostics.length===0)&&t.addIssue({code:`custom`,path:[`complete`],message:`must agree with diagnostics`})}),Ed=1e3,Dd=Cs({id:R().min(1),type:Os([`story`,`docs`]),importPath:R().min(1).optional()}).passthrough(),Od=Cs({entries:Ds(R(),Dd)}).passthrough(),kd=Cs({id:R().min(1),title:R(),name:R(),type:Os([`story`,`docs`])}),Ad=Cs({v:z(),entries:Ds(R(),kd)}),jd={getBrowserVersion:Ic,getFontsFingerprint:Yc}}));Md();const Nd={executionErrors:e=>`❌ **${e} execution error(s)** must be fixed.`,clean:`✅ No visual changes.`,changes:e=>`🔍 **${e} visual change(s)** require review.`,unstableWarning:e=>`⚠️ **${e} unstable snapshot(s)** changed between same-revision captures and do not block this build.`,comparison:(e,t)=>`**${e} stories · ${t} snapshots compared**`,coverage:(e,t,n,r,i,a)=>e===`affected`?`**${n} of ${t} affected stories selected · ${r} stories / ${i} snapshots compared · ${a} proven unaffected**`:`**${n} stories selected · ${r} stories / ${i} snapshots compared**`,fallback:e=>`- Safe full-capture fallback: ${e.join(`, `)}`,counts:e=>`- Unchanged ${e.unchanged} · Changed ${e.changed} · Unstable ${e.unstable} · Added ${e.added} · Removed ${e.removed} · Errors ${e.errors}`,branch:`Branch`,environment:`Environment`,reportDownload:`Download the full comparison report`,reportOpen:`Open the full comparison report`,storyOpen:`Open captured story`,sections:{error:`🚨 Execution errors`,removed:`⚠️ Removed snapshots`,changed:`🔍 Visual changes`,unstable:`⚠️ Unstable snapshots`,added:`➕ Added snapshots`},hidden:e=>`${e} more item(s) are available in the full comparison report.`,errorAdvice:`⚠️ Capture or comparison errors must be fixed before approval.`,approvalPrompt:`A reviewer with write permission can approve the full head build with:`,captureError:`Capture or comparison failed.`,removedEntry:`Not found in the head Storybook`,addedEntry:`New snapshot`,approval:(e,t)=>`✅ @${e} approved Kapture report \`${t.slice(0,12)}\`.`},Pd={executionErrors:e=>`❌ **${e}개의 실행 오류**를 해결해 주세요.`,clean:`✅ 시각적 변경이 없습니다.`,changes:e=>`🔍 **${e}개의 시각적 변경**을 검토해 주세요.`,unstableWarning:e=>`⚠️ **${e}개의 불안정한 스냅샷**이 동일 리비전 재캡처에서 달라졌습니다. 이 항목은 빌드를 막지 않습니다.`,comparison:(e,t)=>`**${e}개 스토리 · ${t}개 스냅샷 비교**`,coverage:(e,t,n,r,i,a)=>e===`affected`?`**전체 ${t}개 Story 중 영향받은 ${n}개 선택 · ${r}개 Story / ${i}개 스냅샷 비교 · ${a}개는 dependency graph로 제외**`:`**${n}개 Story 선택 · ${r}개 Story / ${i}개 스냅샷 비교**`,fallback:e=>`- 누락 방지를 위해 전체 캡처로 전환: ${e.join(`, `)}`,counts:e=>`- 동일 ${e.unchanged} · 변경 ${e.changed} · 불안정 ${e.unstable} · 추가 ${e.added} · 삭제 ${e.removed} · 오류 ${e.errors}`,branch:`브랜치`,environment:`환경`,reportDownload:`전체 비교 리포트 다운로드`,reportOpen:`전체 비교 리포트 열기`,storyOpen:`캡처한 Story 열기`,sections:{error:`🚨 실행 오류`,removed:`⚠️ 삭제된 스냅샷`,changed:`🔍 시각 변경`,unstable:`⚠️ 불안정한 스냅샷`,added:`➕ 추가된 스냅샷`},hidden:e=>`그 외 ${e}개 항목은 전체 비교 리포트에서 확인해 주세요.`,errorAdvice:`⚠️ 캡처 또는 비교 오류를 해결해야 합니다. 승인할 수 없습니다.`,approvalPrompt:`전체 head 빌드를 승인하려면 쓰기 권한이 있는 리뷰어가 다음 명령을 남겨 주세요.`,captureError:`캡처 또는 비교에 실패했습니다.`,removedEntry:`head Storybook에서 찾을 수 없음`,addedEntry:`새 스냅샷`,approval:(e,t)=>`✅ @${e} 님이 Kapture 리포트 \`${t.slice(0,12)}\`를 승인했습니다.`};function Fd(e){if(e===`en`||e===`ko`)return e;throw Error(`Comment language must be en or ko`)}function Id(e){return e===`ko`?Pd:Nd}const Ld=`<!-- kapture-report:`,Rd={error:0,removed:1,changed:2,unstable:3,added:4,unchanged:5};function zd(e){return e.contentDigest??$c(e)}function Bd(e){return`${Ld}${Buffer.from(JSON.stringify(e)).toString(`base64url`)} -->`}function Vd(e){let t=e.indexOf(Ld);if(t<0)return null;let n=t+20,r=e.indexOf(` -->`,n);if(r<0)return null;try{let t=JSON.parse(Buffer.from(e.slice(n,r),`base64url`).toString());return t.version!==3||!Wd(t.baseSha)||!Wd(t.headSha)||!/^[0-9a-f]{64}$/.test(t.digest)||!nf(t.captureRunId)||!nf(t.captureRunAttempt)||!nf(t.captureWorkflowId)||!rf(t.captureRunHeadBranch)||!nf(t.captureRunHeadRepositoryId)||![`clean`,`changed`,`error`].includes(t.status)||t.reportUrl!==void 0&&Gd(t.reportUrl)!==t.reportUrl?null:t}catch{return null}}function Hd(e,t,n=`Kapture Visual Review`,r=`en`){let{summary:i}=e,a=i.changed+i.added+i.removed,o=new Set(Object.values(e.entries).map(e=>e.storyId)).size,s=Zd(n,100),c=Id(r),l=[Bd(t),`## ${s}`,``,i.errors>0?c.executionErrors(i.errors):a===0?c.clean:c.changes(a),``,e.coverage?c.coverage(e.coverage.mode,e.coverage.storyIds.length,e.coverage.selectedStoryIds.length,o,i.total,e.coverage.skippedStoryIds.length):c.comparison(o,i.total),``,c.counts(i),`- ${c.branch} \`${$d(t.captureRunHeadBranch)}\` · ${c.environment} \`${$d(e.environment.id)}\` · base \`${tf(e.baseRevision)}\` → head \`${tf(e.headRevision)}\``];if(e.coverage?.mode===`full-fallback`&&l.push(c.fallback([...new Set(e.coverage.fallbackReasons.map(e=>e.code))])),i.unstable>0&&l.push(``,c.unstableWarning(i.unstable)),t.reportUrl){let e=ef(t.reportUrl)?c.reportDownload:c.reportOpen;l.push(``,`[${e}](${t.reportUrl})`)}let u=Object.values(e.entries).filter(e=>e.status!==`unchanged`).sort(Xd),d=u.slice(0,20);for(let n of[`error`,`removed`,`changed`,`unstable`,`added`]){let r=u.filter(e=>e.status===n),i=d.filter(e=>e.status===n);if(i.length!==0){l.push(``,`### ${c.sections[n]} (${r.length})`,``);for(let n of i)l.push(Jd(n,c,e.storybookUrl,t.reportUrl))}}let f=u.length-d.length;return f>0&&l.push(``,c.hidden(f)),i.errors>0?l.push(``,c.errorAdvice):a>0&&l.push(``,c.approvalPrompt,``,`\`/kapture approve ${e.headRevision} ${t.digest}\``),`${l.join(`
|
|
598
|
+
`)}\n`}function Ud(e){let t=e.trim().match(/^\/kapture\s+approve\s+([0-9a-f]{40})\s+([0-9a-f]{64})$/i);return!t?.[1]||!t[2]?null:{headSha:t[1].toLowerCase(),reportDigest:t[2].toLowerCase()}}function Wd(e){return/^[0-9a-f]{40}$/i.test(e)}function Gd(e){if(!e)return;if(e.length>2048)throw Error(`Report URL is too long`);let t;try{t=new URL(e)}catch{throw Error(`Report URL must be a valid HTTPS URL`)}if(t.protocol!==`https:`||t.username||t.password)throw Error(`Report URL must be an HTTPS URL without credentials`);return t.toString().replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/\[/g,`%5B`).replace(/\]/g,`%5D`)}function Kd(e){if(e){if(e===`./storybook/`)return e;try{return Gd(e)}catch{throw Error(`Storybook URL must be a valid HTTPS URL or ./storybook/`)}}}function qd(e){let t=Qd(e).replace(/\s+/g,` `).trim();if(!t||t.length>100)throw Error(`Status context must contain between 1 and 100 characters`);return t}function Jd(e,t,n,r){let i=`**${Zd(e.title)} / ${Zd(e.name)}** · ${Zd(e.viewport.name)}`,a=n?Yd(n,e.storyId,r):void 0,o=a?` · [${t.storyOpen}](${a})`:``;return e.status===`error`?`- ${i} — ${Zd(e.error??t.captureError,180)}${o}`:e.status===`removed`?`- ${i} — ${t.removedEntry}`:e.status===`added`?`- ${i} — ${t.addedEntry}${o}`:`- ${i}${o}`}function Yd(e,t,n){if(e===`./storybook/`&&!n)return;let r=new URL(e,n);return r.searchParams.set(`path`,`/story/${t}`),Gd(r.toString())}function Xd(e,t){let n=Rd[e.status]-Rd[t.status];return n===0?`${e.title}/${e.name}/${e.viewport.name}`.localeCompare(`${t.title}/${t.name}/${t.viewport.name}`):n}function Zd(e,t=240){let n=Qd(e).replace(/\s+/g,` `).trim();return(n.length>t?`${n.slice(0,t-3)}...`:n).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/\\/g,`\\\\`).replace(/([`*_[\]{}|])/g,`\\$1`).replace(/@/g,`@`)}function Qd(e){return Array.from(e,e=>{let t=e.codePointAt(0)??0;return t<=31||t===127?` `:e}).join(``)}function $d(e){return e.replace(/`/g,`ˋ`).replace(/[\r\n]/g,` `).replace(/@/g,`@`)}function ef(e){return e.includes(`/actions/runs/`)&&e.includes(`/artifacts/`)}function tf(e){return e.slice(0,8)}function nf(e){return typeof e==`number`&&Number.isInteger(e)&&e>0}function rf(e){return typeof e!=`string`||e.length<1||e.length>512?!1:Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127})}var af=class{#e;#t;#n;constructor(e,t){if(!e)throw Error(`GITHUB_TOKEN is required`);this.#e=e,this.#t=t,this.#n=of(process.env.GITHUB_API_URL)}async setReviewStatus(e,t,n,r,i){await this.#i(`POST`,`/statuses/${encodeURIComponent(e)}`,{state:t,description:n.slice(0,140),context:r,target_url:i})}async postOrUpdateReportComment(e,t,n=Ld){let r=(await this.#r(e)).find(e=>e.user?.login===`github-actions[bot]`&&e.body?.includes(n));return r?(await this.#i(`PATCH`,`/issues/comments/${r.id}`,{body:t})).id:this.createIssueComment(e,t)}async findCurrentReportMarker(e,t,n){let r=await this.#r(e);for(let e of r.reverse()){if(e.user?.login!==`github-actions[bot]`||!e.body)continue;let r=Vd(e.body);if(r?.baseSha===t&&r.headSha===n)return r}return null}async assertCurrentCaptureRun(e,t,n,r,i){let a=await this.#i(`GET`,`/actions/runs/${e}`);if(a.id!==e||a.run_attempt!==t||a.workflow_id!==n||a.head_branch!==r||a.head_repository.id!==i||a.status!==`completed`||a.conclusion!==`success`||a.event!==`pull_request`)throw Error(`Kapture report does not belong to the current successful capture run`);let o;for(let e=1;e<=10;e+=1){let t=await this.#i(`GET`,`/actions/workflows/${n}/runs?event=pull_request&branch=${encodeURIComponent(r)}&per_page=100&page=${e}`);for(let e of t.workflow_runs)e.head_repository.id===i&&(!o||e.run_number>o.run_number||e.run_number===o.run_number&&e.id>o.id)&&(o=e);if(t.workflow_runs.length<100)break}if(o?.id!==e)throw Error(`A newer Kapture capture run exists for this pull request`)}async getLatestReviewStatus(e,t){for(let n=1;n<=10;n+=1){let r=await this.#i(`GET`,`/commits/${encodeURIComponent(e)}/status?per_page=100&page=${n}`),i=r.statuses.find(e=>e.context===t);if(i)return sf(i.state)?{state:i.state,description:i.description??void 0,targetUrl:i.target_url??void 0}:null;if(r.statuses.length<100)break}return null}async assertWritePermission(e){let t=await this.#i(`GET`,`/collaborators/${encodeURIComponent(e)}/permission`);if(!t.permission||![`admin`,`maintain`,`write`].includes(t.permission))throw Error(`@${e} does not have write permission for this repository`)}async getPullRequest(e){return this.#i(`GET`,`/pulls/${e}`)}async readPackageManifest(e,t){if(!/^[0-9a-f]{40}$/.test(t)||!/^[A-Za-z0-9._/-]+$/.test(e)||e.split(`/`).some(e=>!e||e===`.`||e===`..`))throw Error(`Package manifest requires a project-relative path and exact revision`);let n=await this.#i(`GET`,`/contents/${e.split(`/`).map(encodeURIComponent).join(`/`)}?ref=${t}`);if(n.type!==`file`||n.encoding!==`base64`||typeof n.content!=`string`||!Number.isSafeInteger(n.size)||n.size<0||n.size>1048576||n.content.length>2097152)throw Error(`Expected a bounded package.json file at the exact base revision`);return JSON.parse(Buffer.from(n.content,`base64`).toString(`utf8`))}async getPullRequestForCapture(e){return this.#i(`GET`,`/pulls/${e}`)}async listPullRequestFilesPage(e,t,n){return this.#i(`GET`,`/pulls/${e}/files?per_page=${n}&page=${t}`)}async createIssueComment(e,t){return(await this.#i(`POST`,`/issues/${e}/comments`,{body:t})).id}async#r(e){let t=[];for(let n=1;n<=10;n+=1){let r=await this.#i(`GET`,`/issues/${e}/comments?per_page=100&page=${n}`);if(t.push(...r),r.length<100)break}return t}async#i(e,t,n){let{owner:r,repo:i}=this.#t,a=`/repos/${encodeURIComponent(r)}/${encodeURIComponent(i)}${t}`,o=await fetch(`${this.#n}${a}`,{method:e,headers:{Accept:`application/vnd.github+json`,Authorization:`Bearer ${this.#e}`,"X-GitHub-Api-Version":`2022-11-28`,"User-Agent":`kapture-cli`,...n?{"Content-Type":`application/json`}:{}},body:n?JSON.stringify(n):void 0});if(!o.ok)throw Error(`GitHub API ${e} ${t} failed with status ${o.status}`);return await o.json()}};function of(e){let t=e?.trim()||`https://api.github.com`,n;try{n=new URL(t)}catch{throw Error(`GITHUB_API_URL must be a valid absolute URL`)}let r=[`127.0.0.1`,`localhost`,`[::1]`].includes(n.hostname);if(n.protocol!==`https:`&&!(n.protocol===`http:`&&r))throw Error(`GITHUB_API_URL must use HTTPS (HTTP is allowed only for loopback tests)`);if(n.username||n.password||n.search||n.hash)throw Error(`GITHUB_API_URL must not contain credentials, a query, or a fragment`);return n.toString().replace(/\/+$/,``)}function sf(e){return[`error`,`failure`,`pending`,`success`].includes(e)}async function cf(){let e=process.env.GITHUB_EVENT_PATH;if(!e)throw Error(`GITHUB_EVENT_PATH is required`);let t=await C(e);if(!t.isFile()||t.size>10485760)throw Error(`GitHub event payload is missing or too large`);try{return JSON.parse(await x(e,`utf8`))}catch{throw Error(`GITHUB_EVENT_PATH does not contain valid JSON`)}}function lf(e){let t=gf(e,`GitHub event payload`);if(t.action!==`completed`)throw Error(`Kapture report requires a completed normalized event`);let n=gf(t.kapture,`kapture normalized event`);if(n.schemaVersion!==1)throw Error(`Kapture report requires normalized event schemaVersion 1`);let r=gf(n.pullRequest,`kapture.pullRequest`),i=gf(n.captureRun,`kapture.captureRun`),a=ff(r.headSha,`kapture.pullRequest.headSha`),o=mf(i.headBranch);if(!hf(o))throw Error(`kapture.captureRun.headBranch is invalid`);return{repository:df(t),issueNumber:pf(r.number,`pull request number`),headSha:a,captureRunId:pf(i.id,`capture run ID`),captureRunAttempt:pf(i.attempt,`capture run attempt`),captureWorkflowId:pf(i.workflowId,`capture workflow ID`),captureRunHeadBranch:o,captureRunHeadRepositoryId:pf(i.headRepositoryId,`capture run head repository ID`)}}function uf(e){let t=gf(e,`GitHub event payload`);if(t.action!==`created`)throw Error(`Kapture approval only accepts newly created issue comments`);let n=gf(t.issue,`issue`);if(!n.pull_request)throw Error(`Kapture approval must be posted on a pull request`);let r=Ud(mf(gf(t.comment,`comment`).body));if(!r)throw Error(`Expected /kapture approve <full-head-sha> <64-character-report-digest>`);let i=mf(gf(t.sender,`sender`).login);if(!/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(i))throw Error(`GitHub event contains an invalid sender login`);return{repository:df(t),issueNumber:pf(n.number,`pull request number`),headSha:r.headSha,reportDigest:r.reportDigest,sender:i}}function df(e){let t=mf(gf(e.repository,`repository`).full_name).match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!t?.[1]||!t[2])throw Error(`GitHub event contains an invalid repository`);return{owner:t[1],repo:t[2]}}function ff(e,t){let n=mf(e).toLowerCase();if(!Wd(n))throw Error(`${t} must be a full 40-character SHA`);return n}function pf(e,t){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function mf(e){if(typeof e!=`string`)throw Error(`GitHub event contains an invalid string value`);return e}function hf(e){return e.length<1||e.length>512?!1:Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127})}function gf(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}const _f=`Publishing verified visual report`;async function vf(e,t,n){let r=bf(n.baseRevision,`Report base`),i=bf(n.headRevision,`Report head`);if(i!==t.headSha)throw Error(`Report head ${n.headRevision} does not match workflow head ${t.headSha}`);let a=await e.getPullRequest(t.issueNumber);if(a.number!==t.issueNumber)throw Error(`GitHub returned PR #${a.number} instead of requested PR #${t.issueNumber}`);if(a.state!==`open`)throw Error(`Pull request #${t.issueNumber} is not open`);let o=bf(a.head.sha,`Current PR head`),s=bf(a.base.sha,`Current PR base`);if(o!==i)throw Error(`Report head ${n.headRevision} is stale; current PR head is ${a.head.sha}`);if(s!==r)throw Error(`Report base ${n.baseRevision} is stale; current PR base is ${a.base.sha}`);return a}async function yf(e,t,n,r,i,a=`en`){if(await vf(e,t,n),!n.contentDigest)throw Error("GitHub report publishing requires an image-bound contentDigest; run `kapture report build` first");let o=zd(n),s=n.summary.changed+n.summary.added+n.summary.removed,c=n.summary.errors>0?`error`:s>0?`changed`:`clean`,l={version:3,baseSha:n.baseRevision.toLowerCase(),headSha:n.headRevision.toLowerCase(),digest:o,captureRunId:t.captureRunId,captureRunAttempt:t.captureRunAttempt,captureWorkflowId:t.captureWorkflowId,captureRunHeadBranch:t.captureRunHeadBranch,captureRunHeadRepositoryId:t.captureRunHeadRepositoryId,status:c,reportUrl:i},u=c===`error`?`failure`:c===`changed`?`pending`:`success`,d=c===`error`?`${n.summary.errors} visual capture error(s)`:c===`changed`?`Visual changes require approval`:n.summary.unstable>0?`${n.summary.unstable} unstable snapshot(s), non-blocking`:`No visual changes`;await e.assertCurrentCaptureRun(t.captureRunId,t.captureRunAttempt,t.captureWorkflowId,t.captureRunHeadBranch,t.captureRunHeadRepositoryId),await e.setReviewStatus(t.headSha,`pending`,_f,r,i);let f=await e.postOrUpdateReportComment(t.issueNumber,Hd(n,l,r,a));await vf(e,t,n),await e.assertCurrentCaptureRun(t.captureRunId,t.captureRunAttempt,t.captureWorkflowId,t.captureRunHeadBranch,t.captureRunHeadRepositoryId);let p=await e.getLatestReviewStatus(t.headSha,r);if(!p||p.state!==`pending`||p.description!==_f||p.targetUrl!==i)throw Error(`Kapture status changed while the report was being published; retry report`);return await e.setReviewStatus(t.headSha,u,d,r,i),{status:c,changedCount:s,commentId:f,reportDigest:o}}function bf(e,t){if(!Wd(e))throw Error(`${t} ${e} must be a full 40-character SHA`);return e.toLowerCase()}async function xf(e,t,n,r=`en`){await e.assertWritePermission(t.sender);let i=await e.getPullRequest(t.issueNumber);if(i.number!==t.issueNumber)throw Error(`GitHub returned PR #${i.number} instead of requested PR #${t.issueNumber}`);if(i.state!==`open`)throw Error(`Pull request #${t.issueNumber} is not open`);let a=bf(i.base.sha,`Current PR base`),o=bf(i.head.sha,`Current PR head`);if(o!==t.headSha)throw Error(`Approval SHA ${t.headSha} is stale; current PR head is ${i.head.sha}`);let s=await e.findCurrentReportMarker(t.issueNumber,a,o);if(!s)throw Error(`No Kapture report exists for current base ${a} and head ${o}`);if(s.status!==`changed`)throw Error(`Kapture report for ${t.headSha} is not eligible for approval (${s.status})`);if(s.digest!==t.reportDigest)throw Error(`Approval digest ${t.reportDigest} does not match current report ${s.digest}`);await e.assertCurrentCaptureRun(s.captureRunId,s.captureRunAttempt,s.captureWorkflowId,s.captureRunHeadBranch,s.captureRunHeadRepositoryId);let c=await e.getLatestReviewStatus(o,n);if(!c||c.state!==`pending`||c.description!==`Visual changes require approval`||c.targetUrl!==s.reportUrl)throw Error(`Current Kapture status is not awaiting approval for this report`);let l=await e.findCurrentReportMarker(t.issueNumber,a,o);if(!l||l.digest!==t.reportDigest||l.status!==`changed`||l.captureRunId!==s.captureRunId||l.captureRunAttempt!==s.captureRunAttempt||l.captureWorkflowId!==s.captureWorkflowId||l.captureRunHeadBranch!==s.captureRunHeadBranch||l.captureRunHeadRepositoryId!==s.captureRunHeadRepositoryId||l.reportUrl!==s.reportUrl)throw Error(`Kapture report changed while approval was being applied; retry approval`);await e.assertCurrentCaptureRun(s.captureRunId,s.captureRunAttempt,s.captureWorkflowId,s.captureRunHeadBranch,s.captureRunHeadRepositoryId);let u=await e.getLatestReviewStatus(o,n);if(!u||u.state!==`pending`||u.description!==`Visual changes require approval`||u.targetUrl!==s.reportUrl)throw Error(`Current Kapture status changed while approval was being applied; retry approval`);let d=await e.getPullRequest(t.issueNumber);if(d.number!==t.issueNumber||d.state!==`open`||bf(d.base.sha,`Current PR base`)!==a||bf(d.head.sha,`Current PR head`)!==o)throw Error(`Pull request changed while approval was being applied; retry approval`);return await e.setReviewStatus(t.headSha,`success`,`Approved by @${t.sender}`,n,s.reportUrl),await e.createIssueComment(t.issueNumber,Id(r).approval(t.sender,s.digest)),{status:`approved`,reportDigest:s.digest}}async function W(e){let t=process.env.GITHUB_OUTPUT;if(!t)return;let n=[];for(let[t,r]of Object.entries(e)){let e=String(r),i=`kapture_${ie()}`;n.push(`${t}<<${i}\n${e}\n${i}\n`)}await h(t,n.join(``),`utf8`)}A();const Sf=k({meta:{name:`approve`,description:`Approve the current full-SHA Kapture report`},args:{"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`Approval comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=uf(await cf()),r=await xf(new af(t,n.repository),n,qd(e[`status-context`]),Fd(e[`comment-language`]));await W({status:r.status,"report-digest":r.reportDigest})}catch(e){throw await W({status:`error`}),e}}}),G={silent:-1/0,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:1/0},Cf={silent:{level:-1},fatal:{level:G.fatal},error:{level:G.error},warn:{level:G.warn},log:{level:G.log},info:{level:G.info},success:{level:G.success},fail:{level:G.fail},ready:{level:G.info},start:{level:G.info},box:{level:G.info},debug:{level:G.debug},trace:{level:G.trace},verbose:{level:G.verbose}};function wf(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function Tf(e,t,n=`.`,r){if(!wf(t))return Tf(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:wf(a)&&wf(i[t])?Tf(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function Ef(e){return(...t)=>t.reduce((t,n)=>Tf(t,n,``,e),{})}const Df=Ef();function Of(e){return Object.prototype.toString.call(e)===`[object Object]`}function kf(e){return!(!Of(e)||!e.message&&!e.args||e.stack)}let Af=!1;const jf=[];var Mf=class e{options;_lastLog;_mockFn;constructor(e={}){let t=e.types||Cf;this.options=Df({...e,defaults:{...e.defaults},level:Nf(e.level,t),reporters:[...e.reporters||[]]},{types:Cf,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let e in t){let n={type:e,...this.options.defaults,...t[e]};this[e]=this._wrapLogFn(n),this[e].raw=this._wrapLogFn(n,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(e){this.options.level=Nf(e,this.options.types,this.options.level)}prompt(e,t){if(!this.options.prompt)throw Error(`prompt is not supported!`);return this.options.prompt(e,t)}create(t){let n=new e({...this.options,...t});return this._mockFn&&n.mockTypes(this._mockFn),n}withDefaults(e){return this.create({...this.options,defaults:{...this.options.defaults,...e}})}withTag(e){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+`:`+e:e})}addReporter(e){return this.options.reporters.push(e),this}removeReporter(e){if(e){let t=this.options.reporters.indexOf(e);if(t!==-1)return this.options.reporters.splice(t,1)}else this.options.reporters.splice(0);return this}setReporters(e){return this.options.reporters=Array.isArray(e)?e:[e],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let e in this.options.types)console[`__`+e]||(console[`__`+e]=console[e]),console[e]=this[e].raw}restoreConsole(){for(let e in this.options.types)console[`__`+e]&&(console[e]=console[`__`+e],delete console[`__`+e])}wrapStd(){this._wrapStream(this.options.stdout,`log`),this._wrapStream(this.options.stderr,`log`)}_wrapStream(e,t){e&&(e.__write||=e.write,e.write=e=>{this[t].raw(String(e).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(e){e&&e.__write&&(e.write=e.__write,delete e.__write)}pauseLogs(){Af=!0}resumeLogs(){Af=!1;let e=jf.splice(0);for(let t of e)t[0]._logFn(t[1],t[2])}mockTypes(e){let t=e||this.options.mockFn;if(this._mockFn=t,typeof t==`function`)for(let e in this.options.types)this[e]=t(e,this.options.types[e])||this[e],this[e].raw=this[e]}_wrapLogFn(e,t){return(...n)=>{if(Af){jf.push([this,e,n,t]);return}return this._logFn(e,n,t)}}_logFn(e,t,n){if((e.level||0)>this.level)return!1;let r={date:new Date,args:[],...e,level:Nf(e.level,this.options.types)};!n&&t.length===1&&kf(t[0])?Object.assign(r,t[0]):r.args=[...t],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
|
|
599
599
|
`)),r.args.push(`
|
|
600
600
|
`+r.additional.join(`
|
|
601
|
-
`)),delete r.additional),r.type=typeof r.type==`string`?r.type.toLowerCase():`log`,r.tag=typeof r.tag==`string`?r.tag:``;let i=(e=!1)=>{let t=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&t>0){let e=[...this._lastLog.object.args];t>1&&e.push(`(repeated ${t} times)`),this._log({...this._lastLog.object,args:e}),this._lastLog.count=1}e&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);let a=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,a<this.options.throttle)try{let e=JSON.stringify([r.type,r.tag,r.args]),t=this._lastLog.serialized===e;if(this._lastLog.serialized=e,t&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(i,this.options.throttle);return}}catch{}i(!0)}_log(e){for(let t of this.options.reporters)t.log(e,{options:this.options})}};function
|
|
601
|
+
`)),delete r.additional),r.type=typeof r.type==`string`?r.type.toLowerCase():`log`,r.tag=typeof r.tag==`string`?r.tag:``;let i=(e=!1)=>{let t=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&t>0){let e=[...this._lastLog.object.args];t>1&&e.push(`(repeated ${t} times)`),this._log({...this._lastLog.object,args:e}),this._lastLog.count=1}e&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);let a=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,a<this.options.throttle)try{let e=JSON.stringify([r.type,r.tag,r.args]),t=this._lastLog.serialized===e;if(this._lastLog.serialized=e,t&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(i,this.options.throttle);return}}catch{}i(!0)}_log(e){for(let t of this.options.reporters)t.log(e,{options:this.options})}};function Nf(e,t={},n=3){return e===void 0?n:typeof e==`number`?e:t[e]&&t[e].level!==void 0?t[e].level:n}Mf.prototype.add=Mf.prototype.addReporter,Mf.prototype.remove=Mf.prototype.removeReporter,Mf.prototype.clear=Mf.prototype.removeReporter,Mf.prototype.withScope=Mf.prototype.withTag,Mf.prototype.mock=Mf.prototype.mockTypes,Mf.prototype.pause=Mf.prototype.pauseLogs,Mf.prototype.resume=Mf.prototype.resumeLogs;function Pf(e={}){return new Mf(e)}function Ff(e,t){let n=process.cwd()+p;return e.split(`
|
|
602
602
|
`).splice(t.split(`
|
|
603
|
-
`).length).map(e=>e.trim().replace(`file://`,``).replace(n,``))}function
|
|
603
|
+
`).length).map(e=>e.trim().replace(`file://`,``).replace(n,``))}function If(e,t){return(t.__write||t.write).call(t,e)}const Lf=e=>e?`[${e}]`:``;var Rf=class{formatStack(e,t,n){let r=` `.repeat((n?.errorLevel||0)+1);return r+Ff(e,t).join(`
|
|
604
604
|
${r}`)}formatError(e,n){let r=e.message??t(n,e),i=e.stack?this.formatStack(e.stack,r,n):``,a=n?.errorLevel||0,o=a>0?`${` `.repeat(a)}[cause]: `:``,s=e.cause?`
|
|
605
605
|
|
|
606
606
|
`+this.formatError(e.cause,{...n,errorLevel:a+1}):``;return o+r+`
|
|
607
607
|
`+i+s}formatArgs(e,n){let r=e.map(e=>e&&typeof e.stack==`string`?this.formatError(e,n):e);return t(n,...r)}formatDate(e,t){return t.date?e.toLocaleTimeString():``}filterAndJoin(e){return e.filter(Boolean).join(` `)}formatLogObj(e,t){let n=this.formatArgs(e.args,t);return e.type===`box`?`
|
|
608
|
-
`+[
|
|
608
|
+
`+[Lf(e.tag),e.title&&e.title,...n.split(`
|
|
609
609
|
`)].filter(Boolean).map(e=>` > `+e).join(`
|
|
610
610
|
`)+`
|
|
611
|
-
`:this.filterAndJoin([
|
|
612
|
-
`,e.level<2?t.options.stderr||process.stderr:t.options.stdout||process.stdout)}};const{env:
|
|
613
|
-
`),i=[],a=
|
|
614
|
-
`)}var
|
|
611
|
+
`:this.filterAndJoin([Lf(e.type),Lf(e.tag),n])}log(e,t){return If(this.formatLogObj(e,{columns:t.options.stdout.columns||0,...t.options.formatOptions})+`
|
|
612
|
+
`,e.level<2?t.options.stderr||process.stderr:t.options.stdout||process.stdout)}};const{env:zf={},argv:Bf=[],platform:Vf=``}=typeof process>`u`?{}:process,Hf=`NO_COLOR`in zf||Bf.includes(`--no-color`),Uf=`FORCE_COLOR`in zf||Bf.includes(`--color`),Wf=Vf===`win32`,Gf=zf.TERM===`dumb`,Kf=ge&&ge.isatty&&ge.isatty(1)&&zf.TERM&&!Gf,qf=`CI`in zf&&(`GITHUB_ACTIONS`in zf||`GITLAB_CI`in zf||`CIRCLECI`in zf),Jf=!Hf&&(Uf||Wf&&!Gf||Kf||qf);function Yf(e,t,n,r,i=t.slice(0,Math.max(0,e))+r,a=t.slice(Math.max(0,e+n.length)),o=a.indexOf(n)){return i+(o<0?a:Yf(o,a,n,r))}function Xf(e,t,n,r,i){return e<0?n+t+r:n+Yf(e,t,r,i)+r}function Zf(e,t,n=e,r=e.length+1){return i=>i||i!==``&&i!==void 0?Xf((``+i).indexOf(t,r),i,e,t,n):``}function K(e,t,n){return Zf(`\x1B[${e}m`,`\x1B[${t}m`,n)}const Qf={reset:K(0,0),bold:K(1,22,`\x1B[22m\x1B[1m`),dim:K(2,22,`\x1B[22m\x1B[2m`),italic:K(3,23),underline:K(4,24),inverse:K(7,27),hidden:K(8,28),strikethrough:K(9,29),black:K(30,39),red:K(31,39),green:K(32,39),yellow:K(33,39),blue:K(34,39),magenta:K(35,39),cyan:K(36,39),white:K(37,39),gray:K(90,39),bgBlack:K(40,49),bgRed:K(41,49),bgGreen:K(42,49),bgYellow:K(43,49),bgBlue:K(44,49),bgMagenta:K(45,49),bgCyan:K(46,49),bgWhite:K(47,49),blackBright:K(90,39),redBright:K(91,39),greenBright:K(92,39),yellowBright:K(93,39),blueBright:K(94,39),magentaBright:K(95,39),cyanBright:K(96,39),whiteBright:K(97,39),bgBlackBright:K(100,49),bgRedBright:K(101,49),bgGreenBright:K(102,49),bgYellowBright:K(103,49),bgBlueBright:K(104,49),bgMagentaBright:K(105,49),bgCyanBright:K(106,49),bgWhiteBright:K(107,49)};function $f(e=Jf){return e?Qf:Object.fromEntries(Object.keys(Qf).map(e=>[e,String]))}const ep=$f();function tp(e,t=`reset`){return ep[e]||ep[t]}const np=[String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`,String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);function rp(e){return e.replace(new RegExp(np,`g`),``)}const ip={solid:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`,h:`─`,v:`│`},double:{tl:`╔`,tr:`╗`,bl:`╚`,br:`╝`,h:`═`,v:`║`},doubleSingle:{tl:`╓`,tr:`╖`,bl:`╙`,br:`╜`,h:`─`,v:`║`},doubleSingleRounded:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`,h:`─`,v:`║`},singleThick:{tl:`┏`,tr:`┓`,bl:`┗`,br:`┛`,h:`━`,v:`┃`},singleDouble:{tl:`╒`,tr:`╕`,bl:`╘`,br:`╛`,h:`═`,v:`│`},singleDoubleRounded:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`,h:`═`,v:`│`},rounded:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`,h:`─`,v:`│`}},ap={borderColor:`white`,borderStyle:`rounded`,valign:`center`,padding:2,marginLeft:1,marginTop:1,marginBottom:1};function op(e,t={}){let n={...t,style:{...ap,...t.style}},r=e.split(`
|
|
613
|
+
`),i=[],a=tp(n.style.borderColor),o={...typeof n.style.borderStyle==`string`?ip[n.style.borderStyle]||ip.solid:n.style.borderStyle};if(a)for(let e in o)o[e]=a(o[e]);let s=n.style.padding%2==0?n.style.padding:n.style.padding+1,c=r.length+s,l=Math.max(...r.map(e=>rp(e).length),n.title?rp(n.title).length:0)+s,u=l+s,d=n.style.marginLeft>0?` `.repeat(n.style.marginLeft):``;if(n.style.marginTop>0&&i.push(``.repeat(n.style.marginTop)),n.title){let e=a?a(n.title):n.title,t=o.h.repeat(Math.floor((l-rp(n.title).length)/2)),r=o.h.repeat(l-rp(n.title).length-rp(t).length+s);i.push(`${d}${o.tl}${t}${e}${r}${o.tr}`)}else i.push(`${d}${o.tl}${o.h.repeat(u)}${o.tr}`);let f=n.style.valign===`center`?Math.floor((c-r.length)/2):n.style.valign===`top`?c-r.length-s:c-r.length;for(let e=0;e<c;e++)if(e<f||e>=f+r.length)i.push(`${d}${o.v}${` `.repeat(u)}${o.v}`);else{let t=r[e-f],n=` `.repeat(s),a=` `.repeat(l-rp(t).length);i.push(`${d}${o.v}${n}${t}${a}${o.v}`)}return i.push(`${d}${o.bl}${o.h.repeat(u)}${o.br}`),n.style.marginBottom>0&&i.push(``.repeat(n.style.marginBottom)),i.join(`
|
|
614
|
+
`)}var sp=Se({kCancel:()=>Nm,prompt:()=>xp});function cp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}function lp(){if(Cp)return Sp;Cp=1;let e={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`};return Sp={cursor:e,scroll:{up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},erase:{screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(t){let n=``;for(let r=0;r<t;r++)n+=this.line+(r<t-1?e.up():``);return t&&(n+=e.left),n}},beep:`\x07`},Sp}function up(){if(Ep)return Tp.exports;Ep=1;let e=process||{},t=e.argv||[],n=e.env||{},r=!(n.NO_COLOR||t.includes(`--no-color`))&&(!!n.FORCE_COLOR||t.includes(`--color`)||e.platform===`win32`||(e.stdout||{}).isTTY&&n.TERM!==`dumb`||!!n.CI),i=(e,t,n=e)=>r=>{let i=``+r,o=i.indexOf(t,e.length);return~o?e+a(i,t,n,o)+t:e+i+t},a=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},o=(e=r)=>{let t=e?i:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};return Tp.exports=o(),Tp.exports.createColors=o,Tp.exports}function dp({onlyFirst:e=!1}={}){let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}function fp(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Dp,``)}function pp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}function mp(e,t={}){if(typeof e!=`string`||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=fp(e),e.length===0))return 0;e=e.replace(Mp(),` `);let n=t.ambiguousIsNarrow?1:2,r=0;for(let t of e){let e=t.codePointAt(0);if(!(e<=31||e>=127&&e<=159||e>=768&&e<=879))switch(Ap.eastAsianWidth(t)){case`F`:case`W`:r+=2;break;case`A`:r+=n;break;default:r+=1}}return r}function hp(){let e=new Map;for(let[t,n]of Object.entries(J)){for(let[t,r]of Object.entries(n))J[t]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},n[t]=J[t],e.set(r[0],r[1]);Object.defineProperty(J,t,{value:n,enumerable:!1})}return Object.defineProperty(J,"codes",{value:e,enumerable:!1}),J.color.close=`\x1B[39m`,J.bgColor.close=`\x1B[49m`,J.color.ansi=Pp(),J.color.ansi256=Fp(),J.color.ansi16m=Ip(),J.bgColor.ansi=Pp(Np),J.bgColor.ansi256=Fp(Np),J.bgColor.ansi16m=Ip(Np),Object.defineProperties(J,{rgbToAnsi256:{value:(e,t,n)=>e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>J.rgbToAnsi256(...J.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>J.ansi256ToAnsi(J.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>J.ansi256ToAnsi(J.hexToAnsi256(e)),enumerable:!1}}),J}function gp(e,t,n){return String(e).normalize().replace(/\r\n/g,`
|
|
615
615
|
`).split(`
|
|
616
|
-
`).map(e=>
|
|
617
|
-
`)}function
|
|
616
|
+
`).map(e=>Qp(e,t,n)).join(`
|
|
617
|
+
`)}function _p(e,t){if(typeof e==`string`)return $p.aliases.get(e)===t;for(let n of e)if(n!==void 0&&_p(n,t))return!0;return!1}function vp(e,t){if(e===t)return;let n=e.split(`
|
|
618
618
|
`),r=t.split(`
|
|
619
|
-
`),i=[];for(let e=0;e<Math.max(n.length,r.length);e++)n[e]!==r[e]&&i.push(e);return i}function fp(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function pp(){return pe.platform===`win32`?!!pe.env.CI||!!pe.env.WT_SESSION||!!pe.env.TERMINUS_SUBLIME||pe.env.ConEmuTask===`{cmd::Cmder}`||pe.env.TERM_PROGRAM===`Terminus-Sublime`||pe.env.TERM_PROGRAM===`vscode`||pe.env.TERM===`xterm-256color`||pe.env.TERM===`alacritty`||pe.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:pe.env.TERM!==`linux`}async function mp(e,t={}){let n=e=>{if(typeof e!=`symbol`||e.toString()!==`Symbol(clack:cancel)`)return e;switch(t.cancel){case`reject`:{let e=Error(`Prompt cancelled.`);throw e.name=`ConsolaPromptCancelledError`,Error.captureStackTrace&&Error.captureStackTrace(e,mp),e}case`undefined`:return;case`null`:return null;case`symbol`:return Em;default:case`default`:return t.default??t.initial}};if(!t.type||t.type===`text`)return await Sm({message:e,defaultValue:t.default,placeholder:t.placeholder,initialValue:t.initial}).then(n);if(t.type===`confirm`)return await Cm({message:e,initialValue:t.initial}).then(n);if(t.type===`select`)return await wm({message:e,options:t.options.map(e=>typeof e==`string`?{value:e,label:e}:e),initialValue:t.initial}).then(n);if(t.type===`multiselect`)return await Tm({message:e,options:t.options.map(e=>typeof e==`string`?{value:e,label:e}:e),required:t.required,initialValues:t.initial}).then(n);throw Error(`Unknown prompt type: ${t.type}`)}var hp,gp,_p,vp,yp,Y,bp,xp,Sp,Cp,wp,Tp,Ep,Dp,Op,kp,X,Ap,jp,Mp,Np,Pp,Fp,Ip,Lp,Rp,zp,Bp,Vp,Hp,Up,Wp,Gp,Kp,qp,Jp,Yp,Xp,Zp,Qp,$p,em,tm,nm,rm,im,am,om,sm,cm,lm,um,dm,fm,pm,Z,mm,hm,gm,_m,vm,ym,bm,xm,Sm,Cm,wm,Tm,Em,Dm=T((()=>{_p=np(),vp={exports:{}},Y=tp(rp()),bp=ip(),xp={exports:{}},(function(e){var t={};e.exports=t,t.eastAsianWidth=function(e){var t=e.charCodeAt(0),n=e.length==2?e.charCodeAt(1):0,r=t;return 55296<=t&&t<=56319&&56320<=n&&n<=57343&&(t&=1023,n&=1023,r=t<<10|n,r+=65536),r==12288||65281<=r&&r<=65376||65504<=r&&r<=65510?`F`:r==8361||65377<=r&&r<=65470||65474<=r&&r<=65479||65482<=r&&r<=65487||65490<=r&&r<=65495||65498<=r&&r<=65500||65512<=r&&r<=65518?`H`:4352<=r&&r<=4447||4515<=r&&r<=4519||4602<=r&&r<=4607||9001<=r&&r<=9002||11904<=r&&r<=11929||11931<=r&&r<=12019||12032<=r&&r<=12245||12272<=r&&r<=12283||12289<=r&&r<=12350||12353<=r&&r<=12438||12441<=r&&r<=12543||12549<=r&&r<=12589||12593<=r&&r<=12686||12688<=r&&r<=12730||12736<=r&&r<=12771||12784<=r&&r<=12830||12832<=r&&r<=12871||12880<=r&&r<=13054||13056<=r&&r<=19903||19968<=r&&r<=42124||42128<=r&&r<=42182||43360<=r&&r<=43388||44032<=r&&r<=55203||55216<=r&&r<=55238||55243<=r&&r<=55291||63744<=r&&r<=64255||65040<=r&&r<=65049||65072<=r&&r<=65106||65108<=r&&r<=65126||65128<=r&&r<=65131||110592<=r&&r<=110593||127488<=r&&r<=127490||127504<=r&&r<=127546||127552<=r&&r<=127560||127568<=r&&r<=127569||131072<=r&&r<=194367||177984<=r&&r<=196605||196608<=r&&r<=262141?`W`:32<=r&&r<=126||162<=r&&r<=163||165<=r&&r<=166||r==172||r==175||10214<=r&&r<=10221||10629<=r&&r<=10630?`Na`:r==161||r==164||167<=r&&r<=168||r==170||173<=r&&r<=174||176<=r&&r<=180||182<=r&&r<=186||188<=r&&r<=191||r==198||r==208||215<=r&&r<=216||222<=r&&r<=225||r==230||232<=r&&r<=234||236<=r&&r<=237||r==240||242<=r&&r<=243||247<=r&&r<=250||r==252||r==254||r==257||r==273||r==275||r==283||294<=r&&r<=295||r==299||305<=r&&r<=307||r==312||319<=r&&r<=322||r==324||328<=r&&r<=331||r==333||338<=r&&r<=339||358<=r&&r<=359||r==363||r==462||r==464||r==466||r==468||r==470||r==472||r==474||r==476||r==593||r==609||r==708||r==711||713<=r&&r<=715||r==717||r==720||728<=r&&r<=731||r==733||r==735||768<=r&&r<=879||913<=r&&r<=929||931<=r&&r<=937||945<=r&&r<=961||963<=r&&r<=969||r==1025||1040<=r&&r<=1103||r==1105||r==8208||8211<=r&&r<=8214||8216<=r&&r<=8217||8220<=r&&r<=8221||8224<=r&&r<=8226||8228<=r&&r<=8231||r==8240||8242<=r&&r<=8243||r==8245||r==8251||r==8254||r==8308||r==8319||8321<=r&&r<=8324||r==8364||r==8451||r==8453||r==8457||r==8467||r==8470||8481<=r&&r<=8482||r==8486||r==8491||8531<=r&&r<=8532||8539<=r&&r<=8542||8544<=r&&r<=8555||8560<=r&&r<=8569||r==8585||8592<=r&&r<=8601||8632<=r&&r<=8633||r==8658||r==8660||r==8679||r==8704||8706<=r&&r<=8707||8711<=r&&r<=8712||r==8715||r==8719||r==8721||r==8725||r==8730||8733<=r&&r<=8736||r==8739||r==8741||8743<=r&&r<=8748||r==8750||8756<=r&&r<=8759||8764<=r&&r<=8765||r==8776||r==8780||r==8786||8800<=r&&r<=8801||8804<=r&&r<=8807||8810<=r&&r<=8811||8814<=r&&r<=8815||8834<=r&&r<=8835||8838<=r&&r<=8839||r==8853||r==8857||r==8869||r==8895||r==8978||9312<=r&&r<=9449||9451<=r&&r<=9547||9552<=r&&r<=9587||9600<=r&&r<=9615||9618<=r&&r<=9621||9632<=r&&r<=9633||9635<=r&&r<=9641||9650<=r&&r<=9651||9654<=r&&r<=9655||9660<=r&&r<=9661||9664<=r&&r<=9665||9670<=r&&r<=9672||r==9675||9678<=r&&r<=9681||9698<=r&&r<=9701||r==9711||9733<=r&&r<=9734||r==9737||9742<=r&&r<=9743||9748<=r&&r<=9749||r==9756||r==9758||r==9792||r==9794||9824<=r&&r<=9825||9827<=r&&r<=9829||9831<=r&&r<=9834||9836<=r&&r<=9837||r==9839||9886<=r&&r<=9887||9918<=r&&r<=9919||9924<=r&&r<=9933||9935<=r&&r<=9953||r==9955||9960<=r&&r<=9983||r==10045||r==10071||10102<=r&&r<=10111||11093<=r&&r<=11097||12872<=r&&r<=12879||57344<=r&&r<=63743||65024<=r&&r<=65039||r==65533||127232<=r&&r<=127242||127248<=r&&r<=127277||127280<=r&&r<=127337||127344<=r&&r<=127386||917760<=r&&r<=917999||983040<=r&&r<=1048573||1048576<=r&&r<=1114109?`A`:`N`},t.characterLength=function(e){var t=this.eastAsianWidth(e);return t==`F`||t==`W`||t==`A`?2:1};function n(e){return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(e){for(var t=n(e),r=0,i=0;i<t.length;i++)r+=this.characterLength(t[i]);return r},t.slice=function(e,r,i){textLen=t.length(e),r||=0,i||=1,r<0&&(r=textLen+r),i<0&&(i=textLen+i);for(var a=``,o=0,s=n(e),c=0;c<s.length;c++){var l=s[c],u=t.length(l);if(o>=r-+(u==2)){if(o+u<=i)a+=l;else break}o+=u}return a}})(xp),Sp=xp.exports,Cp=op(Sp),wp=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Tp=op(wp),Ep=10,Dp=(e=0)=>t=>`\x1B[${t+e}m`,Op=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,kp=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,X={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Object.keys(X.modifier),Ap=Object.keys(X.color),jp=Object.keys(X.bgColor),[...Ap,...jp],Mp=cp(),Np=new Set([`\x1B`,``]),Pp=39,Fp=`\x07`,Ip=`[`,Lp=`]`,Rp=`m`,zp=`${Lp}8;;`,Bp=e=>`${Np.values().next().value}${Ip}${e}${Rp}`,Vp=e=>`${Np.values().next().value}${zp}${e}${Fp}`,Hp=e=>e.split(` `).map(e=>sp(e)),Up=(e,t,n)=>{let r=[...t],i=!1,a=!1,o=sp(ap(e[e.length-1]));for(let[t,s]of r.entries()){let c=sp(s);if(o+c<=n?e[e.length-1]+=s:(e.push(s),o=0),Np.has(s)&&(i=!0,a=r.slice(t+1).join(``).startsWith(zp)),i){a?s===Fp&&(i=!1,a=!1):s===Rp&&(i=!1);continue}o+=c,o===n&&t<r.length-1&&(e.push(``),o=0)}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},Wp=e=>{let t=e.split(` `),n=t.length;for(;n>0&&!(sp(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Gp=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=Hp(e),s=[``];for(let[r,i]of e.split(` `).entries()){n.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let e=sp(s[s.length-1]);if(r!==0&&(e>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),e=0),(e>0||n.trim===!1)&&(s[s.length-1]+=` `,e++)),n.hard&&o[r]>t){let n=t-e,a=1+Math.floor((o[r]-n-1)/t);Math.floor((o[r]-1)/t)<a&&s.push(``),Up(s,i,t);continue}if(e+o[r]>t&&e>0&&o[r]>0){if(n.wordWrap===!1&&e<t){Up(s,i,t);continue}s.push(``)}if(e+o[r]>t&&n.wordWrap===!1){Up(s,i,t);continue}s[s.length-1]+=i}n.trim!==!1&&(s=s.map(e=>Wp(e)));let c=[...s.join(`
|
|
620
|
-
`)];for(let[e,t]of c.entries()){if(r+=t,
|
|
621
|
-
`?(a&&(r+=
|
|
622
|
-
`&&(i&&n&&(r+=
|
|
623
|
-
`),
|
|
624
|
-
`).length-1;this.output.write(
|
|
625
|
-
`);this.output.write(r[n]),this._prevFrame=e,this.output.write(
|
|
619
|
+
`),i=[];for(let e=0;e<Math.max(n.length,r.length);e++)n[e]!==r[e]&&i.push(e);return i}function yp(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function bp(){return pe.platform===`win32`?!!pe.env.CI||!!pe.env.WT_SESSION||!!pe.env.TERMINUS_SUBLIME||pe.env.ConEmuTask===`{cmd::Cmder}`||pe.env.TERM_PROGRAM===`Terminus-Sublime`||pe.env.TERM_PROGRAM===`vscode`||pe.env.TERM===`xterm-256color`||pe.env.TERM===`alacritty`||pe.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:pe.env.TERM!==`linux`}async function xp(e,t={}){let n=e=>{if(typeof e!=`symbol`||e.toString()!==`Symbol(clack:cancel)`)return e;switch(t.cancel){case`reject`:{let e=Error(`Prompt cancelled.`);throw e.name=`ConsolaPromptCancelledError`,Error.captureStackTrace&&Error.captureStackTrace(e,xp),e}case`undefined`:return;case`null`:return null;case`symbol`:return Nm;default:case`default`:return t.default??t.initial}};if(!t.type||t.type===`text`)return await km({message:e,defaultValue:t.default,placeholder:t.placeholder,initialValue:t.initial}).then(n);if(t.type===`confirm`)return await Am({message:e,initialValue:t.initial}).then(n);if(t.type===`select`)return await jm({message:e,options:t.options.map(e=>typeof e==`string`?{value:e,label:e}:e),initialValue:t.initial}).then(n);if(t.type===`multiselect`)return await Mm({message:e,options:t.options.map(e=>typeof e==`string`?{value:e,label:e}:e),required:t.required,initialValues:t.initial}).then(n);throw Error(`Unknown prompt type: ${t.type}`)}var Sp,Cp,wp,Tp,Ep,q,Dp,Op,kp,Ap,jp,Mp,Np,Pp,Fp,Ip,J,Lp,Rp,zp,Bp,Vp,Hp,Up,Wp,Gp,Kp,qp,Jp,Yp,Xp,Zp,Qp,$p,em,tm,nm,rm,im,am,om,sm,cm,lm,um,dm,fm,pm,mm,hm,gm,_m,vm,ym,bm,Y,xm,Sm,Cm,wm,Tm,Em,Dm,Om,km,Am,jm,Mm,Nm,Pm=E((()=>{wp=lp(),Tp={exports:{}},q=cp(up()),Dp=dp(),Op={exports:{}},(function(e){var t={};e.exports=t,t.eastAsianWidth=function(e){var t=e.charCodeAt(0),n=e.length==2?e.charCodeAt(1):0,r=t;return 55296<=t&&t<=56319&&56320<=n&&n<=57343&&(t&=1023,n&=1023,r=t<<10|n,r+=65536),r==12288||65281<=r&&r<=65376||65504<=r&&r<=65510?`F`:r==8361||65377<=r&&r<=65470||65474<=r&&r<=65479||65482<=r&&r<=65487||65490<=r&&r<=65495||65498<=r&&r<=65500||65512<=r&&r<=65518?`H`:4352<=r&&r<=4447||4515<=r&&r<=4519||4602<=r&&r<=4607||9001<=r&&r<=9002||11904<=r&&r<=11929||11931<=r&&r<=12019||12032<=r&&r<=12245||12272<=r&&r<=12283||12289<=r&&r<=12350||12353<=r&&r<=12438||12441<=r&&r<=12543||12549<=r&&r<=12589||12593<=r&&r<=12686||12688<=r&&r<=12730||12736<=r&&r<=12771||12784<=r&&r<=12830||12832<=r&&r<=12871||12880<=r&&r<=13054||13056<=r&&r<=19903||19968<=r&&r<=42124||42128<=r&&r<=42182||43360<=r&&r<=43388||44032<=r&&r<=55203||55216<=r&&r<=55238||55243<=r&&r<=55291||63744<=r&&r<=64255||65040<=r&&r<=65049||65072<=r&&r<=65106||65108<=r&&r<=65126||65128<=r&&r<=65131||110592<=r&&r<=110593||127488<=r&&r<=127490||127504<=r&&r<=127546||127552<=r&&r<=127560||127568<=r&&r<=127569||131072<=r&&r<=194367||177984<=r&&r<=196605||196608<=r&&r<=262141?`W`:32<=r&&r<=126||162<=r&&r<=163||165<=r&&r<=166||r==172||r==175||10214<=r&&r<=10221||10629<=r&&r<=10630?`Na`:r==161||r==164||167<=r&&r<=168||r==170||173<=r&&r<=174||176<=r&&r<=180||182<=r&&r<=186||188<=r&&r<=191||r==198||r==208||215<=r&&r<=216||222<=r&&r<=225||r==230||232<=r&&r<=234||236<=r&&r<=237||r==240||242<=r&&r<=243||247<=r&&r<=250||r==252||r==254||r==257||r==273||r==275||r==283||294<=r&&r<=295||r==299||305<=r&&r<=307||r==312||319<=r&&r<=322||r==324||328<=r&&r<=331||r==333||338<=r&&r<=339||358<=r&&r<=359||r==363||r==462||r==464||r==466||r==468||r==470||r==472||r==474||r==476||r==593||r==609||r==708||r==711||713<=r&&r<=715||r==717||r==720||728<=r&&r<=731||r==733||r==735||768<=r&&r<=879||913<=r&&r<=929||931<=r&&r<=937||945<=r&&r<=961||963<=r&&r<=969||r==1025||1040<=r&&r<=1103||r==1105||r==8208||8211<=r&&r<=8214||8216<=r&&r<=8217||8220<=r&&r<=8221||8224<=r&&r<=8226||8228<=r&&r<=8231||r==8240||8242<=r&&r<=8243||r==8245||r==8251||r==8254||r==8308||r==8319||8321<=r&&r<=8324||r==8364||r==8451||r==8453||r==8457||r==8467||r==8470||8481<=r&&r<=8482||r==8486||r==8491||8531<=r&&r<=8532||8539<=r&&r<=8542||8544<=r&&r<=8555||8560<=r&&r<=8569||r==8585||8592<=r&&r<=8601||8632<=r&&r<=8633||r==8658||r==8660||r==8679||r==8704||8706<=r&&r<=8707||8711<=r&&r<=8712||r==8715||r==8719||r==8721||r==8725||r==8730||8733<=r&&r<=8736||r==8739||r==8741||8743<=r&&r<=8748||r==8750||8756<=r&&r<=8759||8764<=r&&r<=8765||r==8776||r==8780||r==8786||8800<=r&&r<=8801||8804<=r&&r<=8807||8810<=r&&r<=8811||8814<=r&&r<=8815||8834<=r&&r<=8835||8838<=r&&r<=8839||r==8853||r==8857||r==8869||r==8895||r==8978||9312<=r&&r<=9449||9451<=r&&r<=9547||9552<=r&&r<=9587||9600<=r&&r<=9615||9618<=r&&r<=9621||9632<=r&&r<=9633||9635<=r&&r<=9641||9650<=r&&r<=9651||9654<=r&&r<=9655||9660<=r&&r<=9661||9664<=r&&r<=9665||9670<=r&&r<=9672||r==9675||9678<=r&&r<=9681||9698<=r&&r<=9701||r==9711||9733<=r&&r<=9734||r==9737||9742<=r&&r<=9743||9748<=r&&r<=9749||r==9756||r==9758||r==9792||r==9794||9824<=r&&r<=9825||9827<=r&&r<=9829||9831<=r&&r<=9834||9836<=r&&r<=9837||r==9839||9886<=r&&r<=9887||9918<=r&&r<=9919||9924<=r&&r<=9933||9935<=r&&r<=9953||r==9955||9960<=r&&r<=9983||r==10045||r==10071||10102<=r&&r<=10111||11093<=r&&r<=11097||12872<=r&&r<=12879||57344<=r&&r<=63743||65024<=r&&r<=65039||r==65533||127232<=r&&r<=127242||127248<=r&&r<=127277||127280<=r&&r<=127337||127344<=r&&r<=127386||917760<=r&&r<=917999||983040<=r&&r<=1048573||1048576<=r&&r<=1114109?`A`:`N`},t.characterLength=function(e){var t=this.eastAsianWidth(e);return t==`F`||t==`W`||t==`A`?2:1};function n(e){return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(e){for(var t=n(e),r=0,i=0;i<t.length;i++)r+=this.characterLength(t[i]);return r},t.slice=function(e,r,i){textLen=t.length(e),r||=0,i||=1,r<0&&(r=textLen+r),i<0&&(i=textLen+i);for(var a=``,o=0,s=n(e),c=0;c<s.length;c++){var l=s[c],u=t.length(l);if(o>=r-+(u==2)){if(o+u<=i)a+=l;else break}o+=u}return a}})(Op),kp=Op.exports,Ap=pp(kp),jp=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},Mp=pp(jp),Np=10,Pp=(e=0)=>t=>`\x1B[${t+e}m`,Fp=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Ip=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,J={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Object.keys(J.modifier),Lp=Object.keys(J.color),Rp=Object.keys(J.bgColor),[...Lp,...Rp],zp=hp(),Bp=new Set([`\x1B`,``]),Vp=39,Hp=`\x07`,Up=`[`,Wp=`]`,Gp=`m`,Kp=`${Wp}8;;`,qp=e=>`${Bp.values().next().value}${Up}${e}${Gp}`,Jp=e=>`${Bp.values().next().value}${Kp}${e}${Hp}`,Yp=e=>e.split(` `).map(e=>mp(e)),Xp=(e,t,n)=>{let r=[...t],i=!1,a=!1,o=mp(fp(e[e.length-1]));for(let[t,s]of r.entries()){let c=mp(s);if(o+c<=n?e[e.length-1]+=s:(e.push(s),o=0),Bp.has(s)&&(i=!0,a=r.slice(t+1).join(``).startsWith(Kp)),i){a?s===Hp&&(i=!1,a=!1):s===Gp&&(i=!1);continue}o+=c,o===n&&t<r.length-1&&(e.push(``),o=0)}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},Zp=e=>{let t=e.split(` `),n=t.length;for(;n>0&&!(mp(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Qp=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=Yp(e),s=[``];for(let[r,i]of e.split(` `).entries()){n.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let e=mp(s[s.length-1]);if(r!==0&&(e>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),e=0),(e>0||n.trim===!1)&&(s[s.length-1]+=` `,e++)),n.hard&&o[r]>t){let n=t-e,a=1+Math.floor((o[r]-n-1)/t);Math.floor((o[r]-1)/t)<a&&s.push(``),Xp(s,i,t);continue}if(e+o[r]>t&&e>0&&o[r]>0){if(n.wordWrap===!1&&e<t){Xp(s,i,t);continue}s.push(``)}if(e+o[r]>t&&n.wordWrap===!1){Xp(s,i,t);continue}s[s.length-1]+=i}n.trim!==!1&&(s=s.map(e=>Zp(e)));let c=[...s.join(`
|
|
620
|
+
`)];for(let[e,t]of c.entries()){if(r+=t,Bp.has(t)){let{groups:t}=RegExp(`(?:\\${Up}(?<code>\\d+)m|\\${Kp}(?<uri>.*)${Hp})`).exec(c.slice(e).join(``))||{groups:{}};if(t.code!==void 0){let e=Number.parseFloat(t.code);i=e===Vp?void 0:e}else t.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}let n=zp.codes.get(Number(i));c[e+1]===`
|
|
621
|
+
`?(a&&(r+=Jp(``)),i&&n&&(r+=qp(n))):t===`
|
|
622
|
+
`&&(i&&n&&(r+=qp(i)),a&&(r+=Jp(a)))}return r},$p={actions:new Set([`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`]),aliases:new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]])},globalThis.process.platform.startsWith(`win`),em=Symbol(`clack:cancel`),tm=Object.defineProperty,nm=(e,t,n)=>t in e?tm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rm=(e,t,n)=>(nm(e,typeof t==`symbol`?t:t+``,n),n),im=class{constructor(e,t=!0){rm(this,`input`),rm(this,`output`),rm(this,`_abortSignal`),rm(this,`rl`),rm(this,`opts`),rm(this,`_render`),rm(this,`_track`,!1),rm(this,`_prevFrame`,``),rm(this,`_subscribers`,new Map),rm(this,`_cursor`,0),rm(this,`state`,`initial`),rm(this,`error`,``),rm(this,`value`);let{input:n=me,output:r=he,render:i,signal:a,...o}=e;this.opts=o,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise((e,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(em);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}let n=new _e(0);n._write=(e,t,n)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,``),this._cursor=this.rl?.cursor??0,this.emit(`value`,this.value)),n()},this.input.pipe(n),this.rl=ve.createInterface({input:this.input,output:n,tabSize:2,prompt:``,escapeCodeTimeout:50}),ve.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(`keypress`,this.onKeypress),yp(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(wp.cursor.show),this.output.off(`resize`,this.render),yp(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(wp.cursor.show),this.output.off(`resize`,this.render),yp(this.input,!1),e(em)})})}onKeypress(e,t){if(this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&$p.aliases.has(t.name)&&this.emit(`cursor`,$p.aliases.get(t.name)),$p.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),e===` `&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(`value`,this.opts.placeholder))),e&&this.emit(`key`,e.toLowerCase()),t?.name===`return`){if(this.opts.validate){let e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=`error`,this.rl?.write(this.value))}this.state!==`error`&&(this.state=`submit`)}_p([e,t?.name,t?.sequence],`cancel`)&&(this.state=`cancel`),(this.state===`submit`||this.state===`cancel`)&&this.emit(`finalize`),this.render(),(this.state===`submit`||this.state===`cancel`)&&this.close()}close(){this.input.unpipe(),this.input.removeListener(`keypress`,this.onKeypress),this.output.write(`
|
|
623
|
+
`),yp(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=gp(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
624
|
+
`).length-1;this.output.write(wp.cursor.move(-999,e*-1))}render(){let e=gp(this._render(this)??``,process.stdout.columns,{hard:!0});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(wp.cursor.hide);else{let t=vp(this._prevFrame,e);if(this.restoreCursor(),t&&t?.length===1){let n=t[0];this.output.write(wp.cursor.move(0,n)),this.output.write(wp.erase.lines(1));let r=e.split(`
|
|
625
|
+
`);this.output.write(r[n]),this._prevFrame=e,this.output.write(wp.cursor.move(0,r.length-n-1));return}if(t&&t?.length>1){let n=t[0];this.output.write(wp.cursor.move(0,n)),this.output.write(wp.erase.down());let r=e.split(`
|
|
626
626
|
`).slice(n);this.output.write(r.join(`
|
|
627
|
-
`)),this._prevFrame=e;return}this.output.write(
|
|
628
|
-
${
|
|
629
|
-
`,n=e.placeholder?
|
|
630
|
-
${
|
|
631
|
-
${
|
|
632
|
-
`;case`submit`:return`${t}${
|
|
633
|
-
${
|
|
634
|
-
${
|
|
635
|
-
`}}}).prompt(),
|
|
636
|
-
${
|
|
637
|
-
`,i=this.value?t:n;switch(this.state){case`submit`:return`${r}${
|
|
638
|
-
${
|
|
639
|
-
${
|
|
640
|
-
`}}}).prompt()},
|
|
641
|
-
${
|
|
642
|
-
`;switch(this.state){case`submit`:return`${n}${
|
|
643
|
-
${
|
|
644
|
-
${
|
|
645
|
-
${
|
|
646
|
-
`}}}).prompt()},
|
|
647
|
-
${
|
|
648
|
-
${
|
|
649
|
-
`,r=(e,n)=>{let r=this.value.includes(e.value);return n&&r?t(e,`active-selected`):r?t(e,`selected`):t(e,n?`active`:`inactive`)};switch(this.state){case`submit`:return`${n}${
|
|
650
|
-
${
|
|
651
|
-
`).map((e,t)=>t===0?`${
|
|
652
|
-
`);return`${n+
|
|
653
|
-
${
|
|
627
|
+
`)),this._prevFrame=e;return}this.output.write(wp.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}},am=class extends im{get cursor(){return+!this.value}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on(`value`,()=>{this.value=this._value}),this.on(`confirm`,e=>{this.output.write(wp.cursor.move(0,-1)),this.value=e,this.state=`submit`,this.close()}),this.on(`cursor`,()=>{this.value=!this.value})}},om=Object.defineProperty,sm=(e,t,n)=>t in e?om(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,cm=(e,t,n)=>(sm(e,typeof t==`symbol`?t:t+``,n),n),lm=class extends im{constructor(e){super(e,!1),cm(this,`options`),cm(this,`cursor`,0),this.options=e.options,this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===e.cursorAt),0),this.on(`key`,e=>{e===`a`&&this.toggleAll()}),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case`down`:case`right`:this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case`space`:this.toggleValue()}})}get _value(){return this.options[this.cursor].value}toggleAll(){let e=this.value.length===this.options.length;this.value=e?[]:this.options.map(e=>e.value)}toggleValue(){let e=this.value.includes(this._value);this.value=e?this.value.filter(e=>e!==this._value):[...this.value,this._value]}},um=Object.defineProperty,dm=(e,t,n)=>t in e?um(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fm=(e,t,n)=>(dm(e,typeof t==`symbol`?t:t+``,n),n),pm=class extends im{constructor(e){super(e,!1),fm(this,`options`),fm(this,`cursor`,0),this.options=e.options,this.cursor=this.options.findIndex(({value:t})=>t===e.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case`down`:case`right`:this.cursor=this.cursor===this.options.length-1?0:this.cursor+1}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}},mm=class extends im{get valueWithCursor(){if(this.state===`submit`)return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;let e=this.value.slice(0,this.cursor),[t,...n]=this.value.slice(this.cursor);return`${e}${q.inverse(t)}${n.join(``)}`}get cursor(){return this._cursor}constructor(e){super(e),this.on(`finalize`,()=>{this.value||=e.defaultValue})}},hm=bp(),gm=(e,t)=>hm?e:t,_m=gm(`❯`,`>`),vm=gm(`■`,`x`),ym=gm(`▲`,`x`),bm=gm(`✔`,`√`),Y=gm(``),xm=gm(``),Sm=gm(`●`,`>`),Cm=gm(`○`,` `),wm=gm(`◻`,`[•]`),Tm=gm(`◼`,`[+]`),Em=gm(`◻`,`[ ]`),Dm=e=>{switch(e){case`initial`:case`active`:return q.cyan(_m);case`cancel`:return q.red(vm);case`error`:return q.yellow(ym);case`submit`:return q.green(bm)}},Om=e=>{let{cursor:t,options:n,style:r}=e,i=e.maxItems??1/0,a=Math.max(process.stdout.rows-4,0),o=Math.min(a,Math.max(i,5)),s=0;t>=s+o-3?s=Math.max(Math.min(t-o+3,n.length-o),0):t<s+2&&(s=Math.max(t-2,0));let c=o<n.length&&s>0,l=o<n.length&&s+o<n.length;return n.slice(s,s+o).map((e,n,i)=>{let a=n===0&&c,o=n===i.length-1&&l;return a||o?q.dim(`...`):r(e,n+s===t)})},km=e=>new mm({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,render(){let t=`${q.gray(Y)}
|
|
628
|
+
${Dm(this.state)} ${e.message}
|
|
629
|
+
`,n=e.placeholder?q.inverse(e.placeholder[0])+q.dim(e.placeholder.slice(1)):q.inverse(q.hidden(`_`)),r=this.value?this.valueWithCursor:n;switch(this.state){case`error`:return`${t.trim()}
|
|
630
|
+
${q.yellow(Y)} ${r}
|
|
631
|
+
${q.yellow(xm)} ${q.yellow(this.error)}
|
|
632
|
+
`;case`submit`:return`${t}${q.gray(Y)} ${q.dim(this.value||e.placeholder)}`;case`cancel`:return`${t}${q.gray(Y)} ${q.strikethrough(q.dim(this.value??``))}${this.value?.trim()?`
|
|
633
|
+
${q.gray(Y)}`:``}`;default:return`${t}${q.cyan(Y)} ${r}
|
|
634
|
+
${q.cyan(xm)}
|
|
635
|
+
`}}}).prompt(),Am=e=>{let t=e.active??`Yes`,n=e.inactive??`No`;return new am({active:t,inactive:n,initialValue:e.initialValue??!0,render(){let r=`${q.gray(Y)}
|
|
636
|
+
${Dm(this.state)} ${e.message}
|
|
637
|
+
`,i=this.value?t:n;switch(this.state){case`submit`:return`${r}${q.gray(Y)} ${q.dim(i)}`;case`cancel`:return`${r}${q.gray(Y)} ${q.strikethrough(q.dim(i))}
|
|
638
|
+
${q.gray(Y)}`;default:return`${r}${q.cyan(Y)} ${this.value?`${q.green(Sm)} ${t}`:`${q.dim(Cm)} ${q.dim(t)}`} ${q.dim(`/`)} ${this.value?`${q.dim(Cm)} ${q.dim(n)}`:`${q.green(Sm)} ${n}`}
|
|
639
|
+
${q.cyan(xm)}
|
|
640
|
+
`}}}).prompt()},jm=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`selected`:return`${q.dim(n)}`;case`active`:return`${q.green(Sm)} ${n} ${e.hint?q.dim(`(${e.hint})`):``}`;case`cancelled`:return`${q.strikethrough(q.dim(n))}`;default:return`${q.dim(Cm)} ${q.dim(n)}`}};return new pm({options:e.options,initialValue:e.initialValue,render(){let n=`${q.gray(Y)}
|
|
641
|
+
${Dm(this.state)} ${e.message}
|
|
642
|
+
`;switch(this.state){case`submit`:return`${n}${q.gray(Y)} ${t(this.options[this.cursor],`selected`)}`;case`cancel`:return`${n}${q.gray(Y)} ${t(this.options[this.cursor],`cancelled`)}
|
|
643
|
+
${q.gray(Y)}`;default:return`${n}${q.cyan(Y)} ${Om({cursor:this.cursor,options:this.options,maxItems:e.maxItems,style:(e,n)=>t(e,n?`active`:`inactive`)}).join(`
|
|
644
|
+
${q.cyan(Y)} `)}
|
|
645
|
+
${q.cyan(xm)}
|
|
646
|
+
`}}}).prompt()},Mm=e=>{let t=(e,t)=>{let n=e.label??String(e.value);return t===`active`?`${q.cyan(wm)} ${n} ${e.hint?q.dim(`(${e.hint})`):``}`:t===`selected`?`${q.green(Tm)} ${q.dim(n)}`:t===`cancelled`?`${q.strikethrough(q.dim(n))}`:t===`active-selected`?`${q.green(Tm)} ${n} ${e.hint?q.dim(`(${e.hint})`):``}`:t===`submitted`?`${q.dim(n)}`:`${q.dim(Em)} ${q.dim(n)}`};return new lm({options:e.options,initialValues:e.initialValues,required:e.required??!0,cursorAt:e.cursorAt,validate(e){if(this.required&&e.length===0)return`Please select at least one option.
|
|
647
|
+
${q.reset(q.dim(`Press ${q.gray(q.bgWhite(q.inverse(` space `)))} to select, ${q.gray(q.bgWhite(q.inverse(` enter `)))} to submit`))}`},render(){let n=`${q.gray(Y)}
|
|
648
|
+
${Dm(this.state)} ${e.message}
|
|
649
|
+
`,r=(e,n)=>{let r=this.value.includes(e.value);return n&&r?t(e,`active-selected`):r?t(e,`selected`):t(e,n?`active`:`inactive`)};switch(this.state){case`submit`:return`${n}${q.gray(Y)} ${this.options.filter(({value:e})=>this.value.includes(e)).map(e=>t(e,`submitted`)).join(q.dim(`, `))||q.dim(`none`)}`;case`cancel`:{let e=this.options.filter(({value:e})=>this.value.includes(e)).map(e=>t(e,`cancelled`)).join(q.dim(`, `));return`${n}${q.gray(Y)} ${e.trim()?`${e}
|
|
650
|
+
${q.gray(Y)}`:``}`}case`error`:{let t=this.error.split(`
|
|
651
|
+
`).map((e,t)=>t===0?`${q.yellow(xm)} ${q.yellow(e)}`:` ${e}`).join(`
|
|
652
|
+
`);return`${n+q.yellow(Y)} ${Om({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
|
|
653
|
+
${q.yellow(Y)} `)}
|
|
654
654
|
${t}
|
|
655
|
-
`}default:return`${n}${
|
|
656
|
-
${
|
|
657
|
-
${
|
|
658
|
-
`}}}).prompt()},`${Y.gray(Z)}`,Em=Symbol.for(`cancel`)}));const Om=Object.create(null),km=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?Om:globalThis),Am=new Proxy(Om,{get(e,t){return km()[t]??Om[t]},has(e,t){return t in km()||t in Om},set(e,t,n){let r=km(!0);return r[t]=n,!0},deleteProperty(e,t){if(!t)return!1;let n=km(!0);return delete n[t],!0},ownKeys(){let e=km(!0);return Object.keys(e)}}),jm=typeof process<`u`&&process.env&&process.env.NODE_ENV||``,Mm=[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`HUDSON`,`HUDSON_URL`],[`JENKINS`,`JENKINS_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}]];function Nm(){if(globalThis.process?.env)for(let e of Mm){let t=e[1]||e[0];if(globalThis.process?.env[t])return{name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===`/bin/jsh`&&globalThis.process?.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}const Pm=Nm();Pm.name;function Fm(e){return e?e!==`false`:!1}const Im=globalThis.process?.platform||``,Lm=Fm(Am.CI)||Pm.ci!==!1,Rm=Fm(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),zm=Fm(Am.DEBUG),Bm=jm===`test`||Fm(Am.TEST);Am.MINIMAL;const Vm=/^win/i.test(Im);!Fm(Am.NO_COLOR)&&(Fm(Am.FORCE_COLOR)||(Rm||Vm)&&Am.TERM);const Hm=(globalThis.process?.versions?.node||``).replace(/^v/,``)||null;Number(Hm?.split(`.`)[0]);const Um=globalThis.process||Object.create(null),Wm={versions:{}};new Proxy(Um,{get(e,t){if(t===`env`)return Am;if(t in e)return e[t];if(t in Wm)return Wm[t]}});const Gm=globalThis.process?.release?.name===`node`,Km=!!globalThis.Bun||!!globalThis.process?.versions?.bun,qm=!!globalThis.Deno,Jm=!!globalThis.fastly,Ym=!!globalThis.Netlify,Xm=!!globalThis.EdgeRuntime,Zm=globalThis.navigator?.userAgent===`Cloudflare-Workers`,Qm=[[Ym,`netlify`],[Xm,`edge-light`],[Zm,`workerd`],[Jm,`fastly`],[qm,`deno`],[Km,`bun`],[Gm,`node`]];function $m(){let e=Qm.find(e=>e[0]);if(e)return{name:e[1]}}$m()?.name;function eh({onlyFirst:e=!1}={}){let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}const th=eh();function nh(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(th,``)}function rh(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function ih(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function ah(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function oh(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function sh(e,{ambiguousAsWide:t=!1}={}){return oh(e),ih(e)||ah(e)||t&&rh(e)?2:1}const ch=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,lh=globalThis.Intl?.Segmenter?new Intl.Segmenter:{segment:e=>e.split(``)},uh=/^\p{Default_Ignorable_Code_Point}$/u;function dh(e,t={}){if(typeof e!=`string`||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(r||(e=nh(e)),e.length===0)return 0;let i=0,a={ambiguousAsWide:!n};for(let{segment:t}of lh.segment(e)){let e=t.codePointAt(0);if(!(e<=31||e>=127&&e<=159)&&!(e>=8203&&e<=8207||e===65279)&&!(e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071)&&!(e>=55296&&e<=57343)&&!(e>=65024&&e<=65039)&&!uh.test(t)){if(ch().test(t)){i+=2;continue}i+=sh(e,a)}}return i}function fh(){let{env:e}=pe,{TERM:t,TERM_PROGRAM:n}=e;return pe.platform===`win32`?!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask===`{cmd::Cmder}`||n===`Terminus-Sublime`||n===`vscode`||t===`xterm-256color`||t===`alacritty`||t===`rxvt-unicode`||t===`rxvt-unicode-256color`||e.TERMINAL_EMULATOR===`JetBrains-JediTerm`:t!==`linux`}const ph={info:`cyan`,fail:`red`,success:`green`,ready:`green`,start:`magenta`},mh={0:`red`,1:`yellow`},hh=fh(),gh=(e,t)=>hh?e:t,_h={error:gh(`✖`,`×`),fatal:gh(`✖`,`×`),ready:gh(`✔`,`√`),warn:gh(`⚠`,`‼`),info:gh(`ℹ`,`i`),success:gh(`✔`,`√`),debug:gh(`⚙`,`D`),trace:gh(`→`,`→`),fail:gh(`✖`,`×`),start:gh(`◐`,`o`),log:``};function vh(e){return typeof Intl!=`object`||!Intl.Segmenter?Xf(e).length:dh(e)}var yh=class extends jf{formatStack(e,t,n){let r=` `.repeat((n?.errorLevel||0)+1);return`
|
|
659
|
-
${r}`+
|
|
660
|
-
${r}`)}formatType(e,t,n){let r=
|
|
661
|
-
`);if(e.type===`box`)return
|
|
655
|
+
`}default:return`${n}${q.cyan(Y)} ${Om({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
|
|
656
|
+
${q.cyan(Y)} `)}
|
|
657
|
+
${q.cyan(xm)}
|
|
658
|
+
`}}}).prompt()},`${q.gray(Y)}`,Nm=Symbol.for(`cancel`)}));const Fm=Object.create(null),Im=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?Fm:globalThis),Lm=new Proxy(Fm,{get(e,t){return Im()[t]??Fm[t]},has(e,t){return t in Im()||t in Fm},set(e,t,n){let r=Im(!0);return r[t]=n,!0},deleteProperty(e,t){if(!t)return!1;let n=Im(!0);return delete n[t],!0},ownKeys(){let e=Im(!0);return Object.keys(e)}}),Rm=typeof process<`u`&&process.env&&process.env.NODE_ENV||``,zm=[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`HUDSON`,`HUDSON_URL`],[`JENKINS`,`JENKINS_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}]];function Bm(){if(globalThis.process?.env)for(let e of zm){let t=e[1]||e[0];if(globalThis.process?.env[t])return{name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===`/bin/jsh`&&globalThis.process?.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}const Vm=Bm();Vm.name;function Hm(e){return e?e!==`false`:!1}const Um=globalThis.process?.platform||``,Wm=Hm(Lm.CI)||Vm.ci!==!1,Gm=Hm(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),Km=Hm(Lm.DEBUG),qm=Rm===`test`||Hm(Lm.TEST);Lm.MINIMAL;const Jm=/^win/i.test(Um);!Hm(Lm.NO_COLOR)&&(Hm(Lm.FORCE_COLOR)||(Gm||Jm)&&Lm.TERM);const Ym=(globalThis.process?.versions?.node||``).replace(/^v/,``)||null;Number(Ym?.split(`.`)[0]);const Xm=globalThis.process||Object.create(null),Zm={versions:{}};new Proxy(Xm,{get(e,t){if(t===`env`)return Lm;if(t in e)return e[t];if(t in Zm)return Zm[t]}});const Qm=globalThis.process?.release?.name===`node`,$m=!!globalThis.Bun||!!globalThis.process?.versions?.bun,eh=!!globalThis.Deno,th=!!globalThis.fastly,nh=!!globalThis.Netlify,rh=!!globalThis.EdgeRuntime,ih=globalThis.navigator?.userAgent===`Cloudflare-Workers`,ah=[[nh,`netlify`],[rh,`edge-light`],[ih,`workerd`],[th,`fastly`],[eh,`deno`],[$m,`bun`],[Qm,`node`]];function oh(){let e=ah.find(e=>e[0]);if(e)return{name:e[1]}}oh()?.name;function sh({onlyFirst:e=!1}={}){let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}const ch=sh();function lh(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ch,``)}function uh(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function dh(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function fh(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function ph(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function mh(e,{ambiguousAsWide:t=!1}={}){return ph(e),dh(e)||fh(e)||t&&uh(e)?2:1}const hh=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,gh=globalThis.Intl?.Segmenter?new Intl.Segmenter:{segment:e=>e.split(``)},_h=/^\p{Default_Ignorable_Code_Point}$/u;function vh(e,t={}){if(typeof e!=`string`||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(r||(e=lh(e)),e.length===0)return 0;let i=0,a={ambiguousAsWide:!n};for(let{segment:t}of gh.segment(e)){let e=t.codePointAt(0);if(!(e<=31||e>=127&&e<=159)&&!(e>=8203&&e<=8207||e===65279)&&!(e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071)&&!(e>=55296&&e<=57343)&&!(e>=65024&&e<=65039)&&!_h.test(t)){if(hh().test(t)){i+=2;continue}i+=mh(e,a)}}return i}function yh(){let{env:e}=pe,{TERM:t,TERM_PROGRAM:n}=e;return pe.platform===`win32`?!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask===`{cmd::Cmder}`||n===`Terminus-Sublime`||n===`vscode`||t===`xterm-256color`||t===`alacritty`||t===`rxvt-unicode`||t===`rxvt-unicode-256color`||e.TERMINAL_EMULATOR===`JetBrains-JediTerm`:t!==`linux`}const bh={info:`cyan`,fail:`red`,success:`green`,ready:`green`,start:`magenta`},xh={0:`red`,1:`yellow`},Sh=yh(),Ch=(e,t)=>Sh?e:t,wh={error:Ch(`✖`,`×`),fatal:Ch(`✖`,`×`),ready:Ch(`✔`,`√`),warn:Ch(`⚠`,`‼`),info:Ch(`ℹ`,`i`),success:Ch(`✔`,`√`),debug:Ch(`⚙`,`D`),trace:Ch(`→`,`→`),fail:Ch(`✖`,`×`),start:Ch(`◐`,`o`),log:``};function Th(e){return typeof Intl!=`object`||!Intl.Segmenter?rp(e).length:vh(e)}var Eh=class extends Rf{formatStack(e,t,n){let r=` `.repeat((n?.errorLevel||0)+1);return`
|
|
659
|
+
${r}`+Ff(e,t).map(e=>` `+e.replace(/^at +/,e=>ep.gray(e)).replace(/\((.+)\)/,(e,t)=>`(${ep.cyan(t)})`)).join(`
|
|
660
|
+
${r}`)}formatType(e,t,n){let r=bh[e.type]||xh[e.level]||`gray`;if(t)return kh(r)(ep.black(` ${e.type.toUpperCase()} `));let i=typeof wh[e.type]==`string`?wh[e.type]:e.icon||e.type;return i?Oh(r)(i):``}formatLogObj(e,t){let[n,...r]=this.formatArgs(e.args,t).split(`
|
|
661
|
+
`);if(e.type===`box`)return op(Dh(n+(r.length>0?`
|
|
662
662
|
`+r.join(`
|
|
663
|
-
`):``)),{title:e.title?
|
|
663
|
+
`):``)),{title:e.title?Dh(e.title):void 0,style:e.style});let i=this.formatDate(e.date,t),a=i&&ep.gray(i),o=e.badge??e.level<2,s=this.formatType(e,o,t),c=e.tag?ep.gray(e.tag):``,l,u=this.filterAndJoin([s,Dh(n)]),d=this.filterAndJoin(t.columns?[c,a]:[c]),f=(t.columns||0)-Th(u)-Th(d)-2;if(l=f>0&&(t.columns||0)>=80?u+` `.repeat(f)+d:(d?`${ep.gray(`[${d}]`)} `:``)+u,l+=Dh(r.length>0?`
|
|
664
664
|
`+r.join(`
|
|
665
665
|
`):``),e.type===`trace`){let t=Error(`Trace: `+e.message);l+=this.formatStack(t.stack||``,t.message)}return o?`
|
|
666
666
|
`+l+`
|
|
667
|
-
`:l}};function bh(e){return e.replace(/`([^`]+)`/gm,(e,t)=>qf.cyan(t)).replace(/\s+_([^_]+)_\s+/gm,(e,t)=>` ${qf.underline(t)} `)}function xh(e=`white`){return qf[e]||qf.white}function Sh(e=`bgWhite`){return qf[`bg${e[0].toUpperCase()}${e.slice(1)}`]||qf.bgWhite}function Ch(e={}){let t=wh();return process.env.CONSOLA_LEVEL&&(t=Number.parseInt(process.env.CONSOLA_LEVEL)??t),Df({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...e)=>Promise.resolve().then(()=>(Dm(),ep)).then(t=>t.prompt(...e)),reporters:e.reporters||[e.fancy??!(Lm||Bm)?new yh:new jf],...e})}function wh(){return zm?q.debug:Bm?q.warn:q.info}const Q=Ch();function Th(e){let t=Jh.safeParse(Eh(e));if(!t.success){let e=t.error.issues[0],n=e?.path.length?` at ${e.path.join(`.`)}`:``;throw Error(`Invalid Kapture report${n}: ${e?.message??`unknown error`}`)}return t.data}function Eh(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;return t.version!==2||!t.summary||typeof t.summary!=`object`?e:{...t,version:3,summary:{...t.summary,unstable:0}}}async function Dh(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size>10485760)throw Error(`Kapture report must be a file no larger than ${kh} bytes`);let r;try{r=JSON.parse(await x(t,`utf8`))}catch{throw Error(`Kapture report does not contain valid JSON`)}return Th(r)}function Oh(e){try{let t=new URL(e);return t.protocol===`https:`&&!t.username&&!t.password}catch{return!1}}var kh,Ah,jh,$,Mh,Nh,Ph,Fh,Ih,Lh,Rh,zh,Bh,Vh,Hh,Uh,Wh,Gh,Kh,qh,Jh,Yh=T((()=>{Td(),Mc(),kh=10485760,Ah=2e4,jh=z().max(4096),$=z().min(1).max(512),Mh=$.refine(e=>Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127}),`must not contain control characters`),Nh=B().int().min(0).max(2**53-1),Ph=B().int().positive().max(2**53-1),Fh=B().min(0).max(1),Ih=V({name:$,width:B().int().positive().max(16384),height:B().int().positive().max(16384)}),Lh=V({pixelColorThreshold:Fh,maxChangedPixelRatio:Fh}),Rh=V({id:$,browser:$,browserVersion:$,orchestratorRuntime:$,operatingSystem:$,architecture:$,deviceScaleFactor:B().positive().max(8),locale:$,timezone:$,colorScheme:Ts([`light`,`dark`]),reducedMotion:Ts([`reduce`,`no-preference`]),frozenTime:$,randomSeed:B().int().min(0).max(2**53-1),fontsFingerprint:$,stateIsolation:U(`fresh-browser-process-per-story-side-v1`).optional(),network:V({mode:U(`allowlist`),allowedDomains:bs($).max(100),webRtc:U(`disabled`)})}),zh=V({id:$,storyId:$,title:jh,name:jh,viewport:Ih,status:Ts([`unchanged`,`changed`,`unstable`,`added`,`removed`,`error`]),baseImage:jh.optional(),headImage:jh.optional(),diffImage:jh.optional(),ignoredRegions:bs(V({x:B().int().min(0).max(16384),y:B().int().min(0).max(32768),width:B().int().positive().max(16384),height:B().int().positive().max(32768)})).max(1e4).optional(),changedPixels:Nh.optional(),diffRatio:Fh.optional(),threshold:Lh.optional(),instability:V({base:V({repeatImage:jh,diffImage:jh,changedPixels:Nh,diffRatio:Fh}).optional(),head:V({repeatImage:jh,diffImage:jh,changedPixels:Nh,diffRatio:Fh}).optional()}).optional(),error:jh.optional()}).superRefine((e,t)=>{e.status===`unstable`&&!e.instability?.base&&!e.instability?.head&&t.addIssue({code:`custom`,path:[`instability`],message:`unstable snapshots require base or head instability evidence`}),e.status!==`unstable`&&e.instability&&t.addIssue({code:`custom`,path:[`instability`],message:`only unstable snapshots can contain instability evidence`})}),Bh=bs($).max(Ah).refine(e=>new Set(e).size===e.length,`must not contain duplicates`).refine(e=>e.every((t,n)=>n===0||e[n-1]<t),`must be sorted`),Vh=V({code:Ts([`base-manifest-missing`,`base-manifest-invalid`,`head-manifest-missing`,`head-manifest-invalid`,`changed-files-incomplete`,`manifest-incomplete`,`global-input`,`global-output`,`global-runtime`,`unknown-input`,`story-import-missing`,`story-module-missing`,`fallback-reasons-truncated`]),path:jh.optional(),storyId:$.optional(),side:Ts([`base`,`head`]).optional()}),Hh=V({provider:U(`github-pull-request-files`),manifestDigest:z().regex(/^[0-9a-f]{64}$/),pullRequestNumber:Ph,baseSha:z().regex(/^[0-9a-f]{40}$/),headSha:z().regex(/^[0-9a-f]{40}$/)}),Uh=z().regex(/^[0-9a-f]{64}$/),Wh=Cs(`state`,[V({state:U(`valid`),digest:Uh,revision:$}),V({state:U(`invalid`),digest:Uh.optional(),revision:$}),V({state:U(`missing`),revision:$})]),Gh=V({base:Wh,head:Wh}),Kh=V({repository:$.regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/),number:Ph,url:jh.refine(Oh,`must be an HTTPS URL without credentials`),baseBranch:Mh,headBranch:Mh,workflowRunUrl:jh.refine(Oh,`must be an HTTPS URL without credentials`)}),qh=V({plannerVersion:U(1),mode:Ts([`full`,`affected`,`full-fallback`]),changedFilesEvidence:Hh.optional(),dependencyManifests:Gh.optional(),storyIds:Bh,selectedStoryIds:Bh,skippedStoryIds:Bh,addedStoryIds:Bh.optional(),removedStoryIds:Bh.optional(),fallbackReasons:bs(Vh).max(yd),baseline:V({mode:U(`reused`),revision:$,manifestDigest:Uh}).optional()}).superRefine((e,t)=>{let n=new Set(e.storyIds),r=new Set(e.selectedStoryIds),i=new Set(e.skippedStoryIds);if((r.size+i.size!==n.size||[...r].some(e=>!n.has(e)||i.has(e))||[...i].some(e=>!n.has(e)))&&t.addIssue({code:`custom`,message:`selected and skipped stories must exactly partition the story catalog`}),e.mode!==`affected`&&i.size>0&&t.addIssue({code:`custom`,path:[`skippedStoryIds`],message:`full coverage modes cannot skip stories`}),e.mode===`full-fallback`&&e.fallbackReasons.length===0&&t.addIssue({code:`custom`,path:[`fallbackReasons`],message:`full-fallback coverage requires at least one reason`}),e.mode!==`full-fallback`&&e.fallbackReasons.length>0&&t.addIssue({code:`custom`,path:[`fallbackReasons`],message:`only full-fallback coverage can contain fallback reasons`}),e.addedStoryIds===void 0!=(e.removedStoryIds===void 0)&&t.addIssue({code:`custom`,message:`added and removed story catalogs must be provided together`}),e.addedStoryIds&&e.removedStoryIds){let i=new Set(e.addedStoryIds),a=new Set(e.removedStoryIds);([...i].some(e=>!n.has(e)||!r.has(e)||a.has(e))||[...a].some(e=>!n.has(e)||!r.has(e)))&&t.addIssue({code:`custom`,message:`added and removed stories must be disjoint selected catalog members`})}}),Jh=V({version:U(3),contentDigest:z().regex(/^[0-9a-f]{64}$/).optional(),baseRevision:$,headRevision:$,headBranch:Mh.optional(),baseBranch:Mh.optional(),pullRequest:Kh.optional(),storybookUrl:jh.refine(e=>e===`./storybook/`||Oh(e),`must be an HTTPS URL or ./storybook/ without credentials`).optional(),environment:Rh,createdAt:$,threshold:Lh,summary:V({total:Nh,unchanged:Nh,changed:Nh,unstable:Nh,added:Nh,removed:Nh,errors:Nh}),coverage:qh.optional(),entries:H(z(),zh)}).superRefine((e,t)=>{let n=Object.entries(e.entries);if(n.length>2e4){t.addIssue({code:`custom`,message:`Report contains more than ${Ah} entries`,path:[`entries`]});return}for(let[e,r]of n)e!==r.id&&t.addIssue({code:`custom`,message:`Entry key must match entry.id`,path:[`entries`,e,`id`]});let r={unchanged:0,changed:0,unstable:0,added:0,removed:0,error:0};for(let t of Object.values(e.entries))r[t.status]+=1;if((e.summary.total!==n.length||e.summary.unchanged!==r.unchanged||e.summary.changed!==r.changed||e.summary.unstable!==r.unstable||e.summary.added!==r.added||e.summary.removed!==r.removed||e.summary.errors!==r.error)&&t.addIssue({code:`custom`,message:`Report summary does not match its entries`,path:[`summary`]}),e.coverage){let r=e.coverage.changedFilesEvidence;r&&(r.baseSha!==e.baseRevision||r.headSha!==e.headRevision)&&t.addIssue({code:`custom`,message:`Changed-files evidence must match the report base and head revisions`,path:[`coverage`,`changedFilesEvidence`]});let i=e.coverage.dependencyManifests;i&&(i.base.revision!==e.baseRevision||i.head.revision!==e.headRevision)&&t.addIssue({code:`custom`,message:`Dependency manifest evidence must match the report base and head revisions`,path:[`coverage`,`dependencyManifests`]});let a=new Set(e.coverage.selectedStoryIds),o=new Set(e.coverage.addedStoryIds??[]),s=new Set(e.coverage.removedStoryIds??[]);for(let[e,r]of n)a.has(r.storyId)||t.addIssue({code:`custom`,message:`Report entries must belong to selected stories`,path:[`entries`,e,`storyId`]}),o.has(r.storyId)&&r.status!==`added`&&r.status!==`error`&&t.addIssue({code:`custom`,message:`Entries for an added story must be added or error snapshots`,path:[`entries`,e,`status`]}),s.has(r.storyId)&&r.status!==`removed`&&r.status!==`error`&&t.addIssue({code:`custom`,message:`Entries for a removed story must be removed or error snapshots`,path:[`entries`,e,`status`]})}})}));Td(),k();var Xh=zt();Yh();const Zh=6e4,Qh=26214400,$h=Buffer.from([137,80,78,71,13,10,26,10]),eg=new Set([`acTL`,`fcTL`,`fdAT`]),tg=[`baseImage`,`headImage`,`diffImage`,`baseRepeatImage`,`baseInstabilityDiffImage`,`headRepeatImage`,`headInstabilityDiffImage`],ng=O({meta:{name:`build`,description:`Rebuild a trusted static report from an untrusted Kapture artifact`},args:{input:{type:`string`,required:!0,description:`Untrusted artifact report directory containing report.json and images`},output:{type:`string`,required:!0,description:`New directory for the trusted static report`},"storybook-url":{type:`string`,description:`Trusted HTTPS Storybook URL or the fixed same-origin ./storybook/ directory`},"base-branch":{type:`string`,description:`Trusted base branch display label (not a comparison revision)`},"head-branch":{type:`string`,description:`Trusted head branch display label (not a comparison revision)`}},async run({args:e}){let t=await rg({inputDir:e.input,outputDir:e.output,storybookUrl:e[`storybook-url`],trustedBaseBranch:e[`base-branch`],trustedHeadBranch:e[`head-branch`]});Q.success(`Trusted report: ${t.report.summary.total} snapshots, ${t.imageCount} verified PNGs (${t.imageBytes} bytes)`),Q.info(`Output: ${t.outputDir}`)}});async function rg(e){let t=f(e.inputDir),n=f(e.outputDir),r=ig(e.trustedHeadBranch),i=ig(e.trustedBaseBranch);if(await gg(t),yg(t,n))throw Error(`Trusted report output must be outside the untrusted input directory`);await _g(n);let o=e.dashboardDir?f(e.dashboardDir):f(a(fe(import.meta.url)),`dashboard`),s=a(n);await y(s,{recursive:!0});let c=await b(`${s}${p}.kapture-report-`),l;try{l=await og(t,async(e,t)=>{let n=f(c,e.relativePath);await y(a(n),{recursive:!0}),await w(n,t,{flag:`wx`})});let{report:s,imageDigests:u,calculatedContentDigest:d}=l;if(s.contentDigest&&s.contentDigest!==d)throw Error(`Report content digest does not match its referenced PNGs: expected ${s.contentDigest}, calculated ${d}`);r?s.headBranch=r:delete s.headBranch,i?s.baseBranch=i:delete s.baseBranch,e.trustedPullRequest?s.pullRequest={...e.trustedPullRequest}:delete s.pullRequest;let p=zd(e.storybookUrl);p?s.storybookUrl=p:delete s.storybookUrl,s.contentDigest=Zc(s,u),await w(f(c,`report.json`),`${JSON.stringify(s)}\n`,{flag:`wx`}),await Wu(o,c),await ne(c,n)}catch(e){throw await re(c,{recursive:!0,force:!0}),e}if(!l)throw Error(`Trusted report validation did not complete`);return{report:l.report,outputDir:n,imageCount:l.references.length,imageBytes:l.imageBytes}}function ig(e){if(e!==void 0){if(e.length<1||e.length>512||Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127}))throw Error(`Trusted head branch must contain between 1 and 512 non-control characters`);return e}}async function ag(e,t){if(!/^[0-9a-f]{64}$/.test(t))throw Error(`Expected trusted report content digest must be a lowercase SHA-256 digest`);let n=f(e);if(n!==f(a(n),`report.json`))throw Error(`Trusted report path must end in report.json`);let r=a(n);await gg(r);let i=await og(r);if(i.report.contentDigest!==t||i.calculatedContentDigest!==t)throw Error(`Trusted report content digest does not match its actual structure and referenced PNGs`);return i.report}async function og(e,t){let n=sg(await vg(e,`report.json`,kh)),r=cg(n);if(r.length>6e4)throw Error(`Report references more than ${Zh} PNG images`);let i=new Map,a=[],o=0;for(let n of r){let r=await vg(e,n.relativePath,Qh);if(o+=r.byteLength,o>536870912)throw Error(`Referenced PNGs exceed 536870912 total bytes`);i.set(n.relativePath,pg(r,n.relativePath)),a.push({path:n.relativePath,sha256:ie(`sha256`).update(r).digest(`hex`)}),await t?.(n,r)}return hg(n,i),{report:n,references:r,imageDigests:a,imageBytes:o,calculatedContentDigest:Zc(n,a)}}function sg(e){let t;try{t=JSON.parse(e.toString(`utf8`))}catch{throw Error(`Input report.json does not contain valid JSON`)}return Th(t)}function cg(e){let t=new Map;for(let n of Object.values(e.entries)){let e=lg(n);for(let r of tg){let i=dg(n,r);if(e.has(r)&&!i)throw Error(`Report entry ${n.id} is missing ${r} for status ${n.status}`);if(!e.has(r)&&i)throw Error(`Report entry ${n.id} cannot contain ${r} for status ${n.status}`);if(!i)continue;let a=fg(i,ug(r),n.id),o=t.get(a);if(o&&o.entryId!==n.id)throw Error(`Report entries ${o.entryId} and ${n.id} reference the same PNG: ${a}`);t.set(a,{relativePath:a,entryId:n.id})}}return[...t.values()]}function lg(e){if(e.status===`changed`)return new Set([`baseImage`,`headImage`,`diffImage`]);if(e.status===`unstable`){if(!e.instability?.base&&!e.instability?.head)throw Error(`Report entry ${e.id} is unstable without instability evidence`);let t=[`baseImage`,`headImage`,`diffImage`];return e.instability.base&&t.push(`baseRepeatImage`,`baseInstabilityDiffImage`),e.instability.head&&t.push(`headRepeatImage`,`headInstabilityDiffImage`),new Set(t)}return e.status===`added`?new Set([`headImage`]):e.status===`removed`?new Set([`baseImage`]):new Set}function ug(e){return e===`baseImage`?`base`:e===`headImage`?`head`:e===`diffImage`?`diff`:e===`baseRepeatImage`?`base-repeat`:e===`baseInstabilityDiffImage`?`base-instability-diff`:e===`headRepeatImage`?`head-repeat`:`head-instability-diff`}function dg(e,t){return t===`baseImage`||t===`headImage`||t===`diffImage`?e[t]:t===`baseRepeatImage`?e.instability?.base?.repeatImage:t===`baseInstabilityDiffImage`?e.instability?.base?.diffImage:t===`headRepeatImage`?e.instability?.head?.repeatImage:e.instability?.head?.diffImage}function fg(e,t,n){let r=`images/${t}/`,i=e.slice(r.length);if(!e.startsWith(r)||!i||i.includes(`/`)||i.includes(`\\`)||i.length>255||!/^[a-zA-Z0-9][a-zA-Z0-9._-]*\.png$/.test(i))throw Error(`Report entry ${n} has an invalid ${t} PNG path: ${e}`);return e}function pg(e,t){if(e.byteLength<33||!e.subarray(0,8).equals($h))throw Error(`Referenced image is not a PNG: ${t}`);let n=e.readUInt32BE(8),r=e.toString(`ascii`,12,16);if(n!==13||r!==`IHDR`)throw Error(`Referenced PNG has an invalid IHDR chunk: ${t}`);let i=e.readUInt32BE(16),a=e.readUInt32BE(20);if(i<1||a<1||i>16384||a>32768||i*a>33554432)throw Error(`Referenced PNG dimensions are outside the supported limits: ${t} (${i}x${a})`);mg(e,t);try{let t=Xh.PNG.sync.read(e,{checkCRC:!0,skipRescale:!0});if(t.width!==i||t.height!==a)throw Error(`decoded dimensions differ from IHDR`)}catch{throw Error(`Referenced PNG cannot be decoded safely: ${t}`)}return{width:i,height:a}}function mg(e,t){let n=$h.byteLength,r=!1;for(;n+12<=e.byteLength;){let i=e.readUInt32BE(n),a=e.toString(`ascii`,n+4,n+8),o=n+12+i;if(o>e.byteLength)throw Error(`Referenced PNG has an invalid chunk boundary: ${t}`);if(eg.has(a))throw Error(`Animated PNG is not supported in a static report: ${t}`);if(n=o,a===`IEND`){r=!0;break}}if(!r||n!==e.byteLength)throw Error(`Referenced PNG has an invalid chunk structure: ${t}`)}function hg(e,t){for(let n of Object.values(e.entries)){if(n.status!==`changed`&&n.status!==`unstable`||!n.baseImage||!n.headImage||!n.diffImage)continue;let e=t.get(n.baseImage),r=t.get(n.headImage),i=t.get(n.diffImage);if(!e||!r||!i)throw Error(`Report entry ${n.id} is missing validated PNG dimensions`);let a=Math.max(e.width,r.width),o=Math.max(e.height,r.height);for(let e of n.ignoredRegions??[])if(e.x+e.width>a||e.y+e.height>o)throw Error(`Report entry ${n.id} ignored region exceeds its comparison canvas`);if(i.width!==a||i.height!==o)throw Error(`Report entry ${n.id} diff PNG must match the padded comparison canvas ${a}x${o}`);if(n.changedPixels!==void 0&&n.changedPixels>a*o)throw Error(`Report entry ${n.id} changedPixels exceeds its diff PNG pixel count`);for(let i of[n.instability?.base,n.instability?.head]){if(!i)continue;let a=t.get(i.repeatImage),o=t.get(i.diffImage);if(!a||!o)throw Error(`Report entry ${n.id} is missing instability PNG dimensions`);let s=i===n.instability?.base?e:r,c=Math.max(s.width,a.width),l=Math.max(s.height,a.height);if(o.width!==c||o.height!==l)throw Error(`Report entry ${n.id} instability diff PNG must match ${c}x${l}`);if(i.changedPixels>c*l)throw Error(`Report entry ${n.id} instability changedPixels exceeds its diff PNG pixel count`)}}}async function gg(e){let t;try{t=await v(e)}catch(t){throw bg(t)?Error(`Input report directory does not exist: ${e}`):t}if(t.isSymbolicLink()||!t.isDirectory())throw Error(`Input report path must be a real directory, not a symbolic link`)}async function _g(e){try{await v(e)}catch(e){if(bg(e))return;throw e}throw Error(`Trusted report output already exists: ${e}`)}async function vg(e,t,n){if(s(t)||t.includes(`\\`))throw Error(`Input file must be a normalized relative path: ${t}`);let r=t.split(`/`),i=e;for(let[e,n]of r.entries()){if(!n||n===`.`||n===`..`)throw Error(`Input file must be a normalized relative path: ${t}`);i=f(i,n);let a;try{a=await v(i)}catch(e){throw bg(e)?Error(`Referenced input file does not exist: ${t}`):e}if(a.isSymbolicLink())throw Error(`Referenced input path cannot contain a symbolic link: ${t}`);let o=e===r.length-1;if(!o&&!a.isDirectory()||o&&!a.isFile())throw Error(`Referenced input path is not a regular file: ${t}`)}let a=de.O_RDONLY|(de.O_NOFOLLOW??0),o=await ee(i,a);try{let e=await o.stat();if(!e.isFile()||e.size>n)throw Error(`Input file exceeds ${n} bytes: ${t}`);let r=Buffer.alloc(e.size),i=0;for(;i<r.byteLength;){let{bytesRead:e}=await o.read(r,i,r.byteLength-i,i);if(e===0)throw Error(`Input file changed while being read: ${t}`);i+=e}let a=Buffer.alloc(1),{bytesRead:s}=await o.read(a,0,1,r.byteLength);if(s>0)throw Error(`Input file changed while being read: ${t}`);return r}finally{await o.close()}}function yg(e,t){let n=d(e,t);return n===``||!n.startsWith(`..${p}`)&&n!==`..`&&!s(n)}function bg(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function xg(e,t){return Cg(e,t).map(({path:e,compressedBytes:t,uncompressedBytes:n})=>({path:e,compressedBytes:t,uncompressedBytes:n}))}async function Sg(e,t,n){let r=Cg(e,n),i=f(t);await y(i,{recursive:!0});for(let t of r){let n=e.subarray(t.dataOffset,t.dataOffset+t.compressedBytes),r=t.compression===0?Buffer.from(n):be(n,{maxOutputLength:t.uncompressedBytes+1});if(r.byteLength!==t.uncompressedBytes)throw Error(`ZIP entry size mismatch: ${t.path}`);if(ye(r)!==t.crc)throw Error(`ZIP entry checksum mismatch: ${t.path}`);let o=f(i,t.path);if(!o.startsWith(`${i}${p}`))throw Error(`ZIP entry escapes the output directory: ${t.path}`);await y(a(o),{recursive:!0}),await w(o,r,{flag:`wx`})}return r}function Cg(e,t){Og(t);let n=wg(e),r=e.readUInt16LE(n+4),i=e.readUInt16LE(n+6),a=e.readUInt16LE(n+8),o=e.readUInt16LE(n+10),s=e.readUInt32LE(n+12),c=e.readUInt32LE(n+16),l=e.readUInt16LE(n+20);if(n+22+l!==e.byteLength)throw Error(`ZIP end record does not match the archive size`);if(r!==0||i!==0||a!==o)throw Error(`Multi-disk ZIP archives are not supported`);if(o===65535||s===4294967295||c===4294967295)throw Error(`ZIP64 archives are not supported`);if(o>t.maxEntries)throw Error(`ZIP archive contains more than ${t.maxEntries} entries`);if(c+s!==n)throw Error(`ZIP central directory is malformed`);let u=[],d=new Set,f=c,p=0;for(let r=0;r<o;r+=1){if(f+46>n||e.readUInt32LE(f)!==33639248)throw Error(`ZIP central directory entry is malformed`);let r=e.readUInt16LE(f+4),i=e.readUInt16LE(f+8),a=e.readUInt16LE(f+10),o=e.readUInt32LE(f+16),s=e.readUInt32LE(f+20),l=e.readUInt32LE(f+24),m=e.readUInt16LE(f+28),h=e.readUInt16LE(f+30),g=e.readUInt16LE(f+32),_=e.readUInt16LE(f+34),v=e.readUInt32LE(f+38),y=e.readUInt32LE(f+42),b=f+46+m+h+g;if(b>n)throw Error(`ZIP central directory entry exceeds its bounds`);if(i&1)throw Error(`Encrypted ZIP entries are not supported`);if(a!==0&&a!==8)throw Error(`ZIP compression method ${a} is not supported`);if(_!==0)throw Error(`Multi-disk ZIP entries are not supported`);if(s===4294967295||l===4294967295||y===4294967295)throw Error(`ZIP64 entries are not supported`);let ee=e.subarray(f+46,f+46+m),x=Eg(ee);f=b;let S=x.endsWith(`/`);if(Dg(r,v,x,S),d.has(x))throw Error(`ZIP archive contains duplicate path: ${x}`);if(d.add(x),S){if(!t.allowDirectoryPath(x))throw Error(`ZIP archive contains unexpected directory: ${x}`);if(i&8||a!==0||o!==0||s!==0||l!==0)throw Error(`ZIP directory entry must be empty and stored: ${x}`);Tg(e,y,ee,i,a,o,s,l,c);continue}if(!t.allowPath(x))throw Error(`ZIP archive contains unexpected path: ${x}`);if(l>t.maxFileBytes)throw Error(`ZIP entry exceeds ${t.maxFileBytes} bytes: ${x}`);if(p+=l,p>t.maxTotalBytes)throw Error(`ZIP archive exceeds ${t.maxTotalBytes} uncompressed bytes`);let te=Tg(e,y,ee,i,a,o,s,l,c);u.push({path:x,compression:a,crc:o,compressedBytes:s,uncompressedBytes:l,dataOffset:te})}if(f!==n)throw Error(`ZIP central directory size is inconsistent`);return u}function wg(e){let t=Math.max(0,e.byteLength-65557);for(let n=e.byteLength-22;n>=t;--n)if(e.readUInt32LE(n)===101010256)return n;throw Error(`ZIP end-of-central-directory record is missing`)}function Tg(e,t,n,r,i,a,o,s,c){if(t+30>c||e.readUInt32LE(t)!==67324752)throw Error(`ZIP local entry header is malformed`);let l=e.readUInt16LE(t+6),u=e.readUInt16LE(t+8),d=e.readUInt32LE(t+14),f=e.readUInt32LE(t+18),p=e.readUInt32LE(t+22),m=e.readUInt16LE(t+26),h=e.readUInt16LE(t+28),g=t+30+m+h;if(g>c)throw Error(`ZIP local entry header exceeds its bounds`);let _=e.subarray(t+30,t+30+m);if(l!==r||u!==i||!_.equals(n))throw Error(`ZIP local and central directory entries do not match`);if(!(l&8)&&(d!==a||f!==o||p!==s))throw Error(`ZIP local and central directory sizes or checksum do not match`);if(g+o>c)throw Error(`ZIP entry data exceeds the archive bounds`);return g}function Eg(e){let t=e.toString(`utf8`);if(!Buffer.from(t,`utf8`).equals(e))throw Error(`ZIP path is not valid UTF-8`);let n=t.endsWith(`/`),r=t.split(`/`),i=n?r.slice(0,-1):r;if(t.length<1||t.startsWith(`/`)||t.includes(`\\`)||t.includes(`\0`)||i.some(e=>!e||e===`.`||e===`..`)||Array.from(t).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127}))throw Error(`ZIP path is unsafe: ${JSON.stringify(t)}`);return t}function Dg(e,t,n,r){if(e>>>8!=3)return;let i=t>>>16&61440;if(i!==0&&i!==(r?16384:32768))throw Error(r?`ZIP entry is not a directory: ${n}`:`ZIP entry is not a regular file: ${n}`)}function Og(e){for(let[t,n]of Object.entries({maxEntries:e.maxEntries,maxFileBytes:e.maxFileBytes,maxTotalBytes:e.maxTotalBytes}))if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be positive`)}function kg(e,t){let n=Lg(e,`GitHub pull_request event`),r=Lg(n.pull_request,`pull_request`),i=Mg(Lg(n.repository,`repository`)),a=Lg(r.base,`pull_request.base`),o=Lg(r.head,`pull_request.head`),s=Mg(Lg(a.repo,`pull_request.base.repo`)),c=Lg(o.repo,`pull_request.head.repo`),l=Pg(a.ref,`pull_request.base.ref`),u=Pg(o.ref,`pull_request.head.ref`),d=Fg(r.number,`pull request number`);if(s!==i)throw Error(`Pull request base repository must match the workflow repository`);if(t!==void 0&&l!==Pg(t,`base branch`))throw Error(`Pull request targets ${l}, expected ${t}`);return{schemaVersion:1,runId:Fg(n.run_id??process.env.GITHUB_RUN_ID,`workflow run ID`),prNumber:d,base:{repository:s,ref:l,sha:Ng(a.sha,`pull_request.base.sha`)},head:{repository:Mg(c),repositoryId:Fg(c.id,`head repository ID`),ref:u,sha:Ng(o.sha,`pull_request.head.sha`)},preview:{branch:u,alias:jg(d,u)}}}function Ag(e){return`pr-${e.prNumber}-base-${e.base.sha}-head-${e.head.sha}`}function jg(e,t){let n=`pr-${Fg(e,`pull request number`)}-`,r=Pg(t,`head branch`),i=r.normalize(`NFKD`).toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),a=`-${ie(`sha256`).update(r).digest(`hex`).slice(0,10)}`,o=Math.max(1,63-n.length-a.length);return`${n}${(i||`branch`).slice(0,o).replace(/-$/g,``)||`b`}${a}`}function Mg(e){let t=Ig(e.full_name,`repository full name`);if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(t))throw Error(`GitHub event contains an invalid repository full name`);return t}function Ng(e,t){let n=Ig(e,t).toLowerCase();if(!/^[0-9a-f]{40}$/.test(n))throw Error(`${t} must be a full SHA`);return n}function Pg(e,t){let n=Ig(e,t);if(n.length<1||n.length>512)throw Error(`${t} is invalid`);for(let e of n){let n=e.codePointAt(0)??0;if(n<=31||n===127)throw Error(`${t} is invalid`)}return n}function Fg(e,t){let n=typeof e==`string`&&/^[1-9][0-9]*$/.test(e)?Number(e):e;if(typeof n!=`number`||!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be a positive integer`);return n}function Ig(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string`);return e}function Lg(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}const Rg=3e3;async function zg(e,t){let n=await e.getPullRequestForCapture(t.prNumber);Hg(n,t);let r=$g(n.changed_files,`pull request changed_files`),i=[],a=[],o=0;if(r>3e3)i.push({code:`github-file-limit`});else for(let n=1;n<=Math.ceil(r/100);n+=1){let s=await e.listPullRequestFilesPage(t.prNumber,n,100);if(o=n,!Array.isArray(s)){i.push({code:`pagination-incomplete`,page:n});break}let c=s.slice(0,100);s.length>100&&i.push({code:`pagination-incomplete`,page:n});for(let[e,t]of c.entries())a.push({value:t,page:n,index:e});if(c.length<100){a.length<r&&i.push({code:`pagination-incomplete`,page:n});break}}a.length!==r&&i.push({code:`file-count-mismatch`});let s=new Set,c=new Set;for(let e of a)Ug(e,s,c,i);let l=await e.getPullRequestForCapture(t.prNumber);if(Hg(l,t),l.changed_files!==r)throw Error(`Pull request changed while Kapture discovered changed files`);let u=Kg(i);return{kind:`kapture-changed-files`,version:1,complete:u.length===0,pullRequest:{number:t.prNumber,baseSha:t.base.sha,headSha:t.head.sha},files:[...s].sort(),source:{provider:`github-pull-request-files`,expectedFileCount:r,fetchedFileCount:a.length,pageCount:o,perPage:100,maxFiles:Rg},diagnostics:u}}function Bg(e){let t=e_(e,`changed-files manifest`);if(Xg(t,[`kind`,`version`,`complete`,`pullRequest`,`files`,`source`,`diagnostics`],`changed-files manifest`),t.kind!==`kapture-changed-files`||t.version!==1)throw Error(`changed-files manifest must use kapture-changed-files version 1`);if(typeof t.complete!=`boolean`)throw Error(`changed-files manifest complete must be a boolean`);if(!Array.isArray(t.files)||t.files.length>6e3)throw Error(`changed-files manifest files must be a bounded array`);let n=t.files.map(e=>Vg(e,`changed file path`));if(!qg(n))throw Error(`changed-files manifest files must be unique and sorted`);let r=e_(t.pullRequest,`changed-files manifest pullRequest`);Xg(r,[`number`,`baseSha`,`headSha`],`changed-files manifest pullRequest`);let i=e_(t.source,`changed-files manifest source`);if(Xg(i,[`provider`,`expectedFileCount`,`fetchedFileCount`,`pageCount`,`perPage`,`maxFiles`],`changed-files manifest source`),i.provider!==`github-pull-request-files`)throw Error(`changed-files manifest source provider is invalid`);if(i.perPage!==100||i.maxFiles!==3e3)throw Error(`changed-files manifest source limits are invalid`);if(!Array.isArray(t.diagnostics)||t.diagnostics.length>6e3)throw Error(`changed-files manifest diagnostics must be a bounded array`);let a=t.diagnostics.map(Gg);if(!qg(a.map(Jg)))throw Error(`changed-files manifest diagnostics must be unique and sorted`);if(t.complete!==(a.length===0))throw Error(`changed-files manifest completeness disagrees with diagnostics`);let o=$g(i.expectedFileCount,`changed-files expected file count`),s=$g(i.fetchedFileCount,`changed-files fetched file count`),c=$g(i.pageCount,`changed-files page count`);if(s>3e3||c>30||s>c*100||n.length>s*2)throw Error(`changed-files manifest source counts are inconsistent`);if(t.complete&&(o!==s||o>3e3||c!==Math.ceil(s/100)||n.length<s))throw Error(`complete changed-files manifest source counts are inconsistent`);return{kind:`kapture-changed-files`,version:1,complete:t.complete,pullRequest:{number:Qg(r.number,`changed-files pull request number`),baseSha:Zg(r.baseSha,`changed-files base SHA`),headSha:Zg(r.headSha,`changed-files head SHA`)},files:n,source:{provider:`github-pull-request-files`,expectedFileCount:o,fetchedFileCount:s,pageCount:c,perPage:100,maxFiles:Rg},diagnostics:a}}function Vg(e,t=`GitHub file path`){if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=Array.from(e);if(e.length===0||e.length>4096||e.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(e)||e.startsWith(`./`)||e===`.`||e===`..`||e.startsWith(`../`)||e.endsWith(`/`)||e.includes(`//`)||e.includes(`\\`)||e.split(`/`).some(e=>e===`.`||e===`..`)||n.some(e=>{let t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}))throw Error(`${t} must be a normalized project-relative path`);return e}function Hg(e,t){let n=e.head.repo;if(e.number!==t.prNumber||e.state!==`open`||e.base.ref!==t.base.ref||e.base.sha.toLowerCase()!==t.base.sha||e.base.repo.full_name!==t.base.repository||e.head.ref!==t.head.ref||e.head.sha.toLowerCase()!==t.head.sha||n?.id!==t.head.repositoryId||n.full_name!==t.head.repository)throw Error(`Live pull request does not match the exact Kapture capture context`)}function Ug(e,t,n,r){if(!e.value||typeof e.value!=`object`||Array.isArray(e.value)){r.push({code:`invalid-file-record`,page:e.page,index:e.index});return}let i=e.value;if(typeof i.status!=`string`||typeof i.filename!=`string`){r.push({code:`invalid-file-record`,page:e.page,index:e.index});return}let a=JSON.stringify([i.status,i.filename,i.previous_filename]);if(n.has(a)&&r.push({code:`duplicate-file-entry`,page:e.page,index:e.index}),n.add(a),Wg(i.filename,e,t,r),i.status===`renamed`||i.previous_filename!==void 0){if(typeof i.previous_filename!=`string`){r.push({code:`rename-source-missing`,page:e.page,index:e.index});return}Wg(i.previous_filename,e,t,r)}}function Wg(e,t,n,r){try{n.add(Vg(e))}catch{r.push({code:`invalid-file-path`,page:t.page,index:t.index})}}function Gg(e){let t=e_(e,`changed-files diagnostic`);if(Xg(t,[`code`,`page`,`index`],`changed-files diagnostic`,!0),typeof t.code!=`string`||![`github-file-limit`,`pagination-incomplete`,`file-count-mismatch`,`invalid-file-record`,`invalid-file-path`,`rename-source-missing`,`duplicate-file-entry`].includes(t.code))throw Error(`changed-files diagnostic code is invalid`);let n=t.page===void 0?void 0:Qg(t.page,`page`),r=t.index===void 0?void 0:$g(t.index,`diagnostic index`),i={code:t.code,...n===void 0?{}:{page:n},...r===void 0?{}:{index:r}};if(i.code===`github-file-limit`||i.code===`file-count-mismatch`?n!==void 0||r!==void 0:i.code===`pagination-incomplete`?n===void 0||n>30||r!==void 0:n===void 0||n>30||r===void 0||r>=100)throw Error(`changed-files diagnostic location is invalid`);return i}function Kg(e){return[...new Map(e.map(e=>[JSON.stringify(e),e])).values()].sort((e,t)=>Yg(Jg(e),Jg(t)))}function qg(e){return e.every((t,n)=>n===0||(e[n-1]??``)<t)}function Jg(e){return`${e.code}:${String(e.page??0).padStart(2,`0`)}:${String(e.index??0).padStart(3,`0`)}`}function Yg(e,t){return e<t?-1:+(e>t)}function Xg(e,t,n,r=!1){let i=Object.keys(e).sort(),a=r?i.filter(e=>t.includes(e)).sort():[...t].sort();if(i.some(e=>!t.includes(e))||!r&&(i.length!==a.length||i.some((e,t)=>e!==a[t])))throw Error(`${n} contains unexpected or missing fields`)}function Zg(e,t){if(typeof e!=`string`||!/^[0-9a-f]{40}$/.test(e))throw Error(`${t} must be a full lowercase SHA`);return e}function Qg(e,t){let n=$g(e,t);if(n===0)throw Error(`${t} must be a positive integer`);return n}function $g(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative integer`);return e}function e_(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}Mc(),Yh();const t_=2e4,n_=26214400,r_=1073741824,i_=/^[0-9a-f]{40}$/,a_=/^sha256:[0-9a-f]{64}$/,o_=/^[0-9a-f]{64}$/,s_=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,c_=/^\.github\/workflows\/[A-Za-z0-9_./-]+\.ya?ml$/,l_=/^images\/(?:base|head|diff)\/[A-Za-z0-9][A-Za-z0-9._-]*\.png$/,u_=z().min(1).max(512).refine(e=>!bv(e),`must not contain control characters`),d_=z().regex(i_),f_=B().int().positive().max(2**53-1),p_=z().regex(s_),m_=z().regex(a_),h_=V({schemaVersion:U(1),runId:f_,prNumber:f_,base:V({repository:p_,ref:u_,sha:d_}),head:V({repository:p_,repositoryId:f_,ref:u_,sha:d_}),preview:V({branch:u_,alias:u_})}),g_=V({id:f_,name:u_,sizeInBytes:f_,digest:m_}),__=V({id:f_,name:u_,digest:m_}),v_=V({schemaVersion:U(1),artifacts:V({context:__,baseStorybook:__,headStorybook:__})}),y_=V({schemaVersion:U(2),repository:V({id:f_,fullName:p_}),context:h_,captureRun:V({id:f_,runNumber:f_,attempt:f_,workflowId:f_,workflowPath:u_,headSha:d_,headBranch:u_,headRepositoryId:f_,headRepository:p_}),artifacts:V({context:g_,baseStorybook:g_,headStorybook:g_,report:g_}),report:V({contentDigest:z().regex(o_)}),trustedArtifactName:u_});async function b_(e,t){let n=fv(t.captureWorkflowPath),r=gv(t.baseBranch,`base branch`),i=f(t.outputDir),a=f(t.receiptPath);if(Cv(i,a))throw Error(`Trusted receipt must be outside the publicly deployed report directory`);await dv(a,`Trusted receipt`);let o=w_(t.event,n),s=await e.getWorkflowRun(o.run.id);J_(s,o),await E_(e,s);let c=D_(await e.listRunArtifacts(s.id),o),l=await lv(t.temporaryRoot),u=!1;try{let d=await A_(e,c.context,33685504),p=f(l,`context`);F_(d),await Sg(d,p,j_);let m=await B_(f(p,`context.json`)),h=await V_(f(p,`changed-files.json`),m);U_(m,c.context),W_(m,o,s,r),K_(await e.getPullRequest(m.prNumber),m,o,r),await q_(e,m,n);let g=await A_(e,c.report,629145600),_=f(l,`untrusted-report`);I_(g),await Sg(g,_,N_),z_(await R_(f(_,`capture-boundary.json`)),c);let v=await Dh(f(_,`report.json`));H_(v,h),await df(e,sv(o,m),v);let y=await rg({inputDir:_,outputDir:i,trustedHeadBranch:m.head.ref,trustedPullRequest:{repository:m.base.repository,number:m.prNumber,url:`https://github.com/${m.base.repository}/pull/${m.prNumber}`,baseBranch:m.base.ref,headBranch:m.head.ref,workflowRunUrl:`https://github.com/${m.base.repository}/actions/runs/${o.run.id}`},...t.storybookUrl?{storybookUrl:t.storybookUrl}:{},...t.dashboardDir?{dashboardDir:f(t.dashboardDir)}:{}});if(u=!0,!y.report.contentDigest)throw Error(`Trusted report build did not produce an image-bound content digest`);await ov(e,o,s,m,r,n);let b=Y_(o,s,m,c,y.report);return await uv(a,b),{receipt:b,report:y.report,reportDirectory:i,reportPath:f(i,`report.json`),receiptPath:a,changedFiles:h}}catch(e){throw u&&await re(i,{recursive:!0,force:!0}),e}finally{await re(l,{recursive:!0,force:!0})}}async function x_(e,t,n){let r=await T_(n.receiptPath),i=w_(n.event,r.captureRun.workflowPath);Q_(r,i);let a=await e.getWorkflowRun(r.captureRun.id);$_(a,r),await E_(e,a),await ev(e,r,i),K_(await e.getPullRequest(r.context.prNumber),r.context,i,r.context.base.ref),await q_(e,r.context,r.captureRun.workflowPath);let o=await ag(n.reportPath,r.report.contentDigest);if(o.headBranch!==r.context.head.ref)throw Error(`Trusted report branch does not match its verified pull request context`);let s=sv(i,r.context);return await df(e,s,o),ff(t,s,o,n.statusContext,n.reportUrl,n.commentLanguage)}async function S_(e,t){let n=fv(t.captureWorkflowPath),r=gv(t.baseBranch,`base branch`),i=f(t.outputDir),o=f(t.receiptPath);await dv(i,`Trusted Storybook output`);let s=await T_(o),c=w_(t.event,n);Q_(s,c);let l=await e.getWorkflowRun(s.captureRun.id);$_(l,s),await E_(e,l),await ev(e,s,c),K_(await e.getPullRequest(s.context.prNumber),s.context,c,r),await q_(e,s.context,n);let u=f(t.temporaryRoot??a(i));if(Cv(i,u))throw Error(`Trusted Storybook temporary root must be outside its output directory`);let d=await lv(u),p=f(d,`storybook`);try{let t=await A_(e,s.artifacts.headStorybook,536870912);return L_(t),await Sg(t,p,P_),await ov(e,c,l,s.context,r,n),await ev(e,s,c),await dv(i,`Trusted Storybook output`),await y(a(i),{recursive:!0}),await ne(p,i),{receipt:s,receiptPath:o,context:s.context,artifact:s.artifacts.headStorybook,storybookDirectory:i}}finally{await re(d,{recursive:!0,force:!0})}}async function C_(e,t){let n=await T_(t.receiptPath),r=w_(t.event,n.captureRun.workflowPath);Q_(n,r),$_(await e.getWorkflowRun(n.captureRun.id),n);let i=t.trustedArtifactId,a=t.trustedArtifactDigest?iv(t.trustedArtifactDigest):void 0,o=[i,a];if(o.some(e=>e!==void 0)&&o.some(e=>e===void 0))throw Error(`trusted-artifact-id and trusted-artifact-digest must be provided together`);if(i!==void 0&&!yv(i))throw Error(`trusted-artifact-id must be a positive integer`);let s=i!==void 0&&a!==void 0?av():void 0,c=[];for(let t of tv(n)){let n=await e.getArtifact(t.id);n&&(nv(n,t,r),c.push({artifact:n,expected:t}))}if(i!==void 0&&a!==void 0&&s!==void 0){if(tv(n).some(e=>e.id===i))throw Error(`trusted-artifact-id must not duplicate a source artifact ID`);let t=await e.getArtifact(i);t&&(rv(t,a,s,n),c.push({artifact:t,expected:{id:t.id,name:t.name,sizeInBytes:t.sizeInBytes,digest:t.digest}}))}let l=[...new Set(c.map(({artifact:e})=>e.id))];for(let t of l)await e.deleteArtifact(t);return l}function w_(e,t){let n=xv(e,`GitHub workflow_run event`);if(n.action!==`completed`)throw Error(`Kapture trusted run requires a completed workflow_run event`);let r=xv(n.repository,`event repository`),i=pv(r.full_name,`event repository`),a=mv(i),o=vv(r.id,`event repository ID`),s=xv(n.workflow_run,`workflow_run`),c=fv(_v(s.path,`workflow path`));if(c!==fv(t))throw Error(`workflow_run path ${c} does not match ${t}`);if(s.status!==`completed`||s.conclusion!==`success`||s.event!==`pull_request`)throw Error(`Kapture trusted run requires one successful pull_request capture run`);let l=xv(s.head_repository,`workflow_run head repository`),u=Sv(s.pull_requests,`workflow_run pull_requests`);if(u.length>1)throw Error(`workflow_run must contain at most one pull request`);let d=u[0]?cv(u[0]):void 0;return{repository:{id:o,fullName:i,ref:a},run:{id:vv(s.id,`workflow run ID`),runNumber:vv(s.run_number,`workflow run number`),attempt:vv(s.run_attempt,`workflow run attempt`),workflowId:vv(s.workflow_id,`workflow ID`),workflowPath:c,status:`completed`,conclusion:`success`,event:`pull_request`,headSha:hv(s.head_sha,`workflow run head SHA`),headBranch:gv(s.head_branch,`workflow run head branch`),headRepository:{id:vv(l.id,`workflow run head repository ID`),fullName:pv(l.full_name,`workflow run head repository`)}},...d?{pullRequest:d}:{}}}async function T_(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size<1||n.size>65536)throw Error(`Trusted receipt must be a file no larger than 65536 bytes`);let r;try{r=JSON.parse(await x(t,`utf8`))}catch{throw Error(`Trusted receipt does not contain valid JSON`)}let i=y_.safeParse(r);if(!i.success){let e=i.error.issues[0];throw Error(`Invalid trusted receipt${e?.path.length?` at ${e.path.join(`.`)}`:``}: ${e?.message??`unknown error`}`)}return Z_(i.data),i.data}async function E_(e,t){let n=(await e.listWorkflowRuns(t.workflowId,t.headBranch)).filter(e=>e.headRepositoryId===t.headRepository.id).reduce((e,t)=>e?t.runNumber===e.runNumber?t.id>e.id?t:e:t.runNumber>e.runNumber?t:e:t,void 0);if(!n||n.id!==t.id)throw Error(`A newer Kapture capture run owns this repository and branch`)}function D_(e,t){let n=/^kapture-context-pr-([1-9][0-9]*)-base-([0-9a-f]{40})-head-([0-9a-f]{40})$/,r=e.filter(e=>n.test(e.name)?k_(e,t):!1);if(r.length!==1||!r[0])throw Error(`Triggering run must contain exactly one immutable Kapture context artifact`);let i=r[0];if(i.sizeInBytes>33685504)throw Error(`Kapture context artifact exceeds its compressed size limit`);let a=i.name.match(n);if(!a?.[1]||!a[2]||!a[3])throw Error(`Kapture context artifact name is invalid`);let o=`kapture-visual-report-pr-${a[1]}-base-${a[2]}-head-${a[3]}`,s=e.filter(e=>e.name===o&&k_(e,t));if(s.length!==1||!s[0])throw Error(`Triggering run must contain exactly one matching Kapture report artifact`);if(s[0].sizeInBytes>629145600)throw Error(`Kapture report artifact exceeds its compressed size limit`);let c=`pr-${a[1]}-base-${a[2]}-head-${a[3]}`,l=O_(e,`kapture-storybook-base-${c}`,t),u=O_(e,`kapture-storybook-head-${c}`,t),d=[i,l,u,s[0]];if(new Set(d.map(e=>e.id)).size!==d.length||new Set(d.map(e=>e.name)).size!==d.length)throw Error(`Kapture artifact IDs and names must be distinct`);return{context:i,baseStorybook:l,headStorybook:u,report:s[0]}}function O_(e,t,n){let r=e.filter(e=>e.name===t&&k_(e,n));if(r.length!==1||!r[0])throw Error(`Triggering run must contain exactly one non-expired ${t} artifact`);if(r[0].sizeInBytes>536870912)throw Error(`${t} exceeds its compressed size limit`);return r[0]}function k_(e,t){return!e.expired&&e.workflowRun.id===t.run.id&&e.workflowRun.repositoryId===t.repository.id&&e.workflowRun.headRepositoryId===t.run.headRepository.id&&e.workflowRun.headBranch===t.run.headBranch&&e.workflowRun.headSha===t.run.headSha&&a_.test(e.digest)&&yv(e.id)&&yv(e.sizeInBytes)}async function A_(e,t,n){let r=await e.downloadArtifactArchive(t.id,n);if(r.byteLength!==t.sizeInBytes)throw Error(`Artifact ${t.id} download size does not match GitHub metadata`);if(`sha256:${ie(`sha256`).update(r).digest(`hex`)}`!==t.digest)throw Error(`Artifact ${t.id} download digest does not match GitHub metadata`);return r}const j_={maxEntries:2,maxFileBytes:33554432,maxTotalBytes:33619968,allowPath:e=>e===`context.json`||e===`changed-files.json`,allowDirectoryPath:()=>!1},M_=new Set([`images/`,`images/base/`,`images/head/`,`images/diff/`]),N_={maxEntries:60006,maxFileBytes:Qh,maxTotalBytes:629145600,allowPath:e=>e===`report.json`||e===`capture-boundary.json`||l_.test(e),allowDirectoryPath:e=>M_.has(e)},P_={maxEntries:t_,maxFileBytes:n_,maxTotalBytes:r_,allowPath:()=>!0,allowDirectoryPath:()=>!0};function F_(e){let t=xg(e,j_);if(t.length!==2)throw Error(`Context archive must contain exactly context.json and changed-files.json`);let n=t.find(e=>e.path===`context.json`),r=t.find(e=>e.path===`changed-files.json`);if(!n||n.uncompressedBytes<1||n.uncompressedBytes>65536||!r||r.uncompressedBytes<1||r.uncompressedBytes>33554432)throw Error(`Context archive entries are outside their fixed size contract`)}function I_(e){let t=xg(e,N_),n=new Set,r=0,i=0;for(let e of t){let t=e.path.toLocaleLowerCase(`en-US`);if(n.has(t))throw Error(`Report archive contains a case-insensitive duplicate: ${e.path}`);if(n.add(t),e.uncompressedBytes<1)throw Error(`Report archive contains an empty file: ${e.path}`);if(e.path===`report.json`&&(r+=1,e.uncompressedBytes>10485760))throw Error(`report.json exceeds its uncompressed size limit`);if(e.path===`capture-boundary.json`&&(i+=1,e.uncompressedBytes>65536))throw Error(`capture-boundary.json exceeds its uncompressed size limit`)}if(r!==1)throw Error(`Report archive must contain one root report.json file`);if(i!==1)throw Error(`Report archive must contain one root capture-boundary.json file`)}function L_(e){let t=xg(e,P_),n=new Set,r=0;for(let e of t){let t=e.path.toLocaleLowerCase(`en-US`);if(n.has(t))throw Error(`Storybook archive contains a case-insensitive duplicate: ${e.path}`);n.add(t),e.path===`index.html`&&e.uncompressedBytes>0&&(r+=1)}if(r!==1)throw Error(`Storybook archive must contain one non-empty root index.html file`)}async function R_(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch(e){throw Error(`capture-boundary.json must contain valid JSON`,{cause:e})}return v_.parse(t)}function z_(e,t){for(let n of[`context`,`baseStorybook`,`headStorybook`]){let r=e.artifacts[n],i=t[n];if(i.id!==r.id||i.name!==r.name||i.digest!==r.digest)throw Error(`Capture ${n} artifact does not match its exact downloaded identity`)}}async function B_(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch{throw Error(`Kapture context artifact does not contain valid JSON`)}let n=h_.safeParse(t);if(!n.success){let e=n.error.issues[0];throw Error(`Invalid Kapture capture context${e?.path.length?` at ${e.path.join(`.`)}`:``}: ${e?.message??`unknown error`}`)}if(n.data.preview.branch!==n.data.head.ref||n.data.preview.alias!==jg(n.data.prNumber,n.data.head.ref))throw Error(`Kapture context preview identity is not derived from its pull request branch`);return n.data}async function V_(e,t){let n=await C(e);if(!n.isFile()||n.size<1||n.size>33554432)throw Error(`changed-files.json is outside its fixed size contract`);let r;try{r=JSON.parse(await x(e,`utf8`))}catch{throw Error(`changed-files.json does not contain valid JSON`)}let i=Bg(r);if(i.pullRequest.number!==t.prNumber||i.pullRequest.baseSha!==t.base.sha||i.pullRequest.headSha!==t.head.sha)throw Error(`changed-files.json does not belong to the exact capture context`);return i}function H_(e,t){let n=e.coverage;if(!n)throw Error(`Trusted workflow reports must include audited story coverage`);let r=n.changedFilesEvidence;if(!r)throw Error(`Trusted workflow report coverage must include changed-files evidence`);let i=ie(`sha256`).update(JSON.stringify(t)).digest(`hex`);if(r.provider!==t.source.provider||r.manifestDigest!==i||r.pullRequestNumber!==t.pullRequest.number||r.baseSha!==t.pullRequest.baseSha||r.headSha!==t.pullRequest.headSha)throw Error(`Trusted workflow report changed-files evidence does not match its verified context manifest`)}function U_(e,t){let n=`kapture-context-${Ag(e)}`;if(t.name!==n)throw Error(`Kapture context contents do not match the immutable artifact name`)}function W_(e,t,n,r){if(e.runId!==n.id||e.base.repository!==t.repository.fullName||e.base.ref!==r||e.head.repository!==n.headRepository.fullName||e.head.repositoryId!==n.headRepository.id||e.head.ref!==n.headBranch)throw Error(`Kapture capture context does not belong to the triggering workflow run`);G_(t,e)}function G_(e,t){let n=e.pullRequest;if(n&&(n.number!==t.prNumber||n.base.repositoryId!==e.repository.id||n.base.ref!==t.base.ref||n.base.sha!==t.base.sha||n.head.repositoryId!==t.head.repositoryId||n.head.ref!==t.head.ref||n.head.sha!==t.head.sha))throw Error(`workflow_run pull request metadata conflicts with the capture context`)}function K_(e,t,n,r){if(e.number!==t.prNumber||e.state!==`open`||e.base.repository.id!==n.repository.id||e.base.repository.fullName!==t.base.repository||e.base.ref!==r||e.base.sha!==t.base.sha||e.head.repository.id!==t.head.repositoryId||e.head.repository.fullName!==t.head.repository||e.head.ref!==t.head.ref||e.head.sha!==t.head.sha)throw Error(`Kapture artifacts are stale or do not belong to the current open pull request`);G_(n,t)}async function q_(e,t,n){let[r,i]=await Promise.all([e.getContentSha(t.base.repository,n,t.base.sha),e.getContentSha(t.head.repository,n,t.head.sha)]);if(!i_.test(r)||i!==r)throw Error(`Pull requests that modify the capture workflow require separate review before publishing`)}function J_(e,t){if(e.id!==t.run.id||e.runNumber!==t.run.runNumber||e.runAttempt!==t.run.attempt||e.workflowId!==t.run.workflowId||e.path!==t.run.workflowPath||e.status!==`completed`||e.conclusion!==`success`||e.event!==`pull_request`||e.headSha!==t.run.headSha||e.headBranch!==t.run.headBranch||e.headRepository.id!==t.run.headRepository.id||e.headRepository.fullName!==t.run.headRepository.fullName||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Triggering capture run metadata changed or no longer matches the event`)}function Y_(e,t,n,r,i){if(!i.contentDigest)throw Error(`Trusted report is missing contentDigest`);if(i.headBranch!==n.head.ref)throw Error(`Trusted report branch does not match its verified pull request context`);let a=Ag(n);return{schemaVersion:2,repository:{id:e.repository.id,fullName:e.repository.fullName},context:n,captureRun:{id:t.id,runNumber:t.runNumber,attempt:t.runAttempt,workflowId:t.workflowId,workflowPath:t.path,headSha:t.headSha,headBranch:t.headBranch,headRepositoryId:t.headRepository.id,headRepository:t.headRepository.fullName},artifacts:{context:X_(r.context),baseStorybook:X_(r.baseStorybook),headStorybook:X_(r.headStorybook),report:X_(r.report)},report:{contentDigest:i.contentDigest},trustedArtifactName:`kapture-trusted-report-${a}`}}function X_(e){return{id:e.id,name:e.name,sizeInBytes:e.sizeInBytes,digest:e.digest}}function Z_(e){let t=Ag(e.context);if(e.context.runId!==e.captureRun.id||e.context.base.repository!==e.repository.fullName||e.context.head.repository!==e.captureRun.headRepository||e.context.head.repositoryId!==e.captureRun.headRepositoryId||e.context.head.ref!==e.captureRun.headBranch||e.context.preview.branch!==e.context.head.ref||e.context.preview.alias!==jg(e.context.prNumber,e.context.head.ref)||e.artifacts.context.name!==`kapture-context-${t}`||e.artifacts.baseStorybook.name!==`kapture-storybook-base-${t}`||e.artifacts.headStorybook.name!==`kapture-storybook-head-${t}`||e.artifacts.report.name!==`kapture-visual-report-${t}`||e.trustedArtifactName!==`kapture-trusted-report-${t}`||new Set(tv(e).map(e=>e.id)).size!==4||new Set(tv(e).map(e=>e.name)).size!==4||e.artifacts.context.sizeInBytes>33685504||e.artifacts.baseStorybook.sizeInBytes>536870912||e.artifacts.headStorybook.sizeInBytes>536870912||e.artifacts.report.sizeInBytes>629145600||!c_.test(e.captureRun.workflowPath))throw Error(`Trusted receipt fields are not internally consistent`)}function Q_(e,t){if(Z_(e),e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName||e.captureRun.id!==t.run.id||e.captureRun.runNumber!==t.run.runNumber||e.captureRun.attempt!==t.run.attempt||e.captureRun.workflowId!==t.run.workflowId||e.captureRun.workflowPath!==t.run.workflowPath||e.captureRun.headSha!==t.run.headSha||e.captureRun.headBranch!==t.run.headBranch||e.captureRun.headRepositoryId!==t.run.headRepository.id||e.captureRun.headRepository!==t.run.headRepository.fullName)throw Error(`Trusted receipt does not belong to the triggering workflow_run event`);G_(t,e.context)}function $_(e,t){if(e.id!==t.captureRun.id||e.runNumber!==t.captureRun.runNumber||e.runAttempt!==t.captureRun.attempt||e.workflowId!==t.captureRun.workflowId||e.path!==t.captureRun.workflowPath||e.status!==`completed`||e.conclusion!==`success`||e.event!==`pull_request`||e.headSha!==t.captureRun.headSha||e.headBranch!==t.captureRun.headBranch||e.headRepository.id!==t.captureRun.headRepositoryId||e.headRepository.fullName!==t.captureRun.headRepository||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Capture run changed after prepare-run verification`)}async function ev(e,t,n){let r=await e.listRunArtifacts(t.captureRun.id);for(let e of tv(t)){let t=r.filter(t=>t.id===e.id);if(t.length!==1||!t[0])throw Error(`Receipt-bound artifact ${e.id} is no longer available`);nv(t[0],e,n)}}function tv(e){return[e.artifacts.context,e.artifacts.baseStorybook,e.artifacts.headStorybook,e.artifacts.report]}function nv(e,t,n){if(e.id!==t.id||e.name!==t.name||e.sizeInBytes!==t.sizeInBytes||e.digest!==t.digest||!k_(e,n))throw Error(`Artifact ${t.id} no longer matches its trusted receipt binding`)}function rv(e,t,n,r){if(e.expired||e.name!==r.trustedArtifactName||e.digest!==t||e.workflowRun.id!==n||e.workflowRun.repositoryId!==r.repository.id||e.workflowRun.headRepositoryId!==r.repository.id||e.sizeInBytes>629145600)throw Error(`Trusted report artifact does not match the exact cleanup binding`)}function iv(e){let t=e.startsWith(`sha256:`)?e:`sha256:${e}`;if(!a_.test(t))throw Error(`trusted-artifact-digest must be a 64-character SHA-256 digest`);return t}function av(){let e=process.env.GITHUB_RUN_ID;if(!e||!/^[1-9][0-9]*$/.test(e))throw Error(`GITHUB_RUN_ID must identify the current trusted reporter workflow run`);let t=Number(e);if(!Number.isSafeInteger(t))throw Error(`GITHUB_RUN_ID must be a safe positive integer`);return t}async function ov(e,t,n,r,i,a){let o=await e.getWorkflowRun(n.id);J_(o,t),await E_(e,o),K_(await e.getPullRequest(r.prNumber),r,t,i),await q_(e,r,a)}function sv(e,t){return{repository:e.repository.ref,issueNumber:t.prNumber,headSha:t.head.sha,captureRunId:e.run.id,captureRunAttempt:e.run.attempt,captureWorkflowId:e.run.workflowId,captureRunHeadBranch:e.run.headBranch,captureRunHeadRepositoryId:e.run.headRepository.id}}function cv(e){let t=xv(e,`workflow_run pull request`),n=xv(t.base,`workflow_run pull request base`),r=xv(t.head,`workflow_run pull request head`);return{number:vv(t.number,`workflow_run pull request number`),base:{repositoryId:vv(xv(n.repo,`workflow_run pull request base repository`).id,`workflow_run pull request base repository ID`),ref:gv(n.ref,`workflow_run pull request base ref`),sha:hv(n.sha,`workflow_run pull request base SHA`)},head:{repositoryId:vv(xv(r.repo,`workflow_run pull request head repository`).id,`workflow_run pull request head repository ID`),ref:gv(r.ref,`workflow_run pull request head ref`),sha:hv(r.sha,`workflow_run pull request head SHA`)}}}async function lv(e){let t=f(e??process.env.RUNNER_TEMP??le());return await y(t,{recursive:!0}),b(`${t}${p}kapture-prepare-`)}async function uv(e,t){let n=f(e),r=f(n,`..`);await y(r,{recursive:!0}),await w(n,`${JSON.stringify(t,null,2)}\n`,{flag:`wx`})}async function dv(e,t){try{await C(e)}catch(e){if(e.code===`ENOENT`)return;throw e}throw Error(`${t} already exists: ${e}`)}function fv(e){if(!c_.test(e)||e.includes(`//`)||e.includes(`..`))throw Error(`capture-workflow-path must be a safe .github/workflows YAML path`);return e}function pv(e,t){let n=_v(e,`${t} full name`);if(!s_.test(n))throw Error(`${t} full name is invalid`);return n}function mv(e){let[t,n,...r]=e.split(`/`);if(!t||!n||r.length>0)throw Error(`Repository full name is invalid`);return{owner:t,repo:n}}function hv(e,t){let n=_v(e,t);if(!i_.test(n))throw Error(`${t} must be a lowercase full SHA`);return n}function gv(e,t){let n=_v(e,t);if(bv(n))throw Error(`${t} contains control characters`);return n}function _v(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);return e}function vv(e,t){if(!yv(e))throw Error(`${t} must be a positive integer`);return e}function yv(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function bv(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127})}function xv(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Sv(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}function Cv(e,t){let n=d(e,t);return n===``||!s(n)&&n!==`..`&&!n.startsWith(`..${p}`)}function wv(e){let t=e.KAPTURE_ARTIFACT_SUFFIX;if(!t||!/^pr-[1-9][0-9]*-base-[0-9a-f]{40}-head-[0-9a-f]{40}$/.test(t))throw Error(`KAPTURE_ARTIFACT_SUFFIX must identify exact PR/base/head revisions`);let n=(n,r)=>{let i=e[`KAPTURE_${n}_ARTIFACT_ID`]??``,a=e[`KAPTURE_${n}_ARTIFACT_DIGEST`]??``;if(!/^[1-9][0-9]*$/.test(i)||!/^[0-9a-f]{64}$/.test(a))throw Error(`${n} requires an artifact ID and SHA-256 digest`);return{id:Number(i),name:`${r}-${t}`,digest:`sha256:${a}`}};return v_.parse({schemaVersion:1,artifacts:{context:n(`CONTEXT`,`kapture-context`),baseStorybook:n(`BASE`,`kapture-storybook-base`),headStorybook:n(`HEAD`,`kapture-storybook-head`)}})}k();const Tv=O({meta:{name:`bind-artifacts`,description:`Record the exact downloaded artifact identities for trusted publication`},args:{output:{type:`string`,required:!0,description:`New capture-boundary.json path inside the raw report`}},async run({args:e}){let t=wv(process.env);await w(f(e.output),`${JSON.stringify(t)}\n`,{flag:`wx`,mode:384})}});var Ev=class{#e;#t;#n;constructor(e,t,n=fetch){if(!e)throw Error(`GITHUB_TOKEN is required`);this.#e=e,this.#t=t,this.#n=n}async getWorkflowRun(e){return Ov(await this.#i(`GET`,`${this.#r()}/actions/runs/${e}`))}async listWorkflowRuns(e,t){let n=[];for(let r=1;r<=10;r+=1){let i=new URLSearchParams({event:`pull_request`,branch:t,per_page:`100`,page:String(r)}),a=Fv(Pv(await this.#i(`GET`,`${this.#r()}/actions/workflows/${e}/runs?${i}`),`workflow runs response`).workflow_runs,`workflow_runs`).map(kv);if(n.push(...a),a.length<100)return n}throw Error(`GitHub returned more than 1000 workflow runs`)}async listRunArtifacts(e){let t=[];for(let n=1;n<=10;n+=1){let r=new URLSearchParams({per_page:`100`,page:String(n)}),i=Fv(Pv(await this.#i(`GET`,`${this.#r()}/actions/runs/${e}/artifacts?${r}`),`artifacts response`).artifacts,`artifacts`).map(Av);if(t.push(...i),i.length<100)return t}throw Error(`GitHub returned more than 1000 workflow artifacts`)}async getArtifact(e){let t=await this.#o(`GET`,`${this.#r()}/actions/artifacts/${e}`);return t.status===404?null:(await Dv(t,`GET`,`/actions/artifacts/${e}`),Av(await t.json()))}async downloadArtifactArchive(e,t){if(!Number.isSafeInteger(t)||t<=0)throw Error(`Artifact download byte limit must be positive`);let n=await this.#o(`GET`,`${this.#r()}/actions/artifacts/${e}/zip`,`manual`),r=await this.#a(n,e);await Dv(r,`GET`,`/actions/artifacts/${e}/zip`);let i=r.headers.get(`content-length`);if(i!==null){let n=Number(i);if(!Number.isSafeInteger(n)||n<0||n>t)throw Error(`Artifact ${e} exceeds the ${t} byte download limit`)}if(!r.body)throw Error(`Artifact ${e} download returned no body`);let a=r.body.getReader(),o=[],s=0;try{for(;;){let{done:n,value:r}=await a.read();if(n)break;if(s+=r.byteLength,s>t)throw await a.cancel(),Error(`Artifact ${e} exceeds the ${t} byte download limit`);o.push(Buffer.from(r))}}finally{a.releaseLock()}if(s<1)throw Error(`Artifact ${e} download is empty`);return Buffer.concat(o,s)}async deleteArtifact(e){let t=await this.#o(`DELETE`,`${this.#r()}/actions/artifacts/${e}`);t.status!==404&&await Dv(t,`DELETE`,`/actions/artifacts/${e}`)}async getPullRequest(e){return jv(await this.#i(`GET`,`${this.#r()}/pulls/${e}`))}async listOpenPullRequestsForHead(e,t,n){let r=Nv(e),i=[];for(let e=1;e<=10;e+=1){let a=new URLSearchParams({state:`open`,base:n,head:`${r.owner}:${t}`,per_page:`100`,page:String(e)}),o=Fv(await this.#i(`GET`,`${this.#r()}/pulls?${a}`),`pull requests response`).map(jv);if(i.push(...o),o.length<100)return i}throw Error(`GitHub returned more than 1000 matching pull requests`)}async getContentSha(e,t,n){let r=Nv(e),i=t.split(`/`).map(encodeURIComponent).join(`/`),a=new URLSearchParams({ref:n});return Bv(Pv(await this.#i(`GET`,`/repos/${encodeURIComponent(r.owner)}/${encodeURIComponent(r.repo)}/contents/${i}?${a}`),`contents response`).sha,`contents SHA`)}#r(){let{owner:e,repo:t}=this.#t;return`/repos/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async#i(e,t){let n=await this.#o(e,t);return await Dv(n,e,t),n.json()}async#a(e,t){if(e.status<300||e.status>399)return e;let n=e.headers.get(`location`);if(!n)throw Error(`Artifact ${t} redirect is missing its location`);let r;try{r=new URL(n)}catch{throw Error(`Artifact ${t} redirect location is invalid`)}if(r.protocol!==`https:`||r.username||r.password)throw Error(`Artifact ${t} redirect must be a credential-free HTTPS URL`);return this.#n(r,{method:`GET`,headers:{Accept:`application/octet-stream`,"User-Agent":`kapture-cli`},redirect:`follow`})}#o(e,t,n=`follow`){return this.#n(`https://api.github.com${t}`,{method:e,headers:{Accept:`application/vnd.github+json`,Authorization:`Bearer ${this.#e}`,"X-GitHub-Api-Version":`2022-11-28`,"User-Agent":`kapture-cli`},redirect:n})}};async function Dv(e,t,n){if(!e.ok)throw Error(`GitHub API ${t} ${n} failed with status ${e.status}`)}function Ov(e){let t=Pv(e,`workflow run`);return{id:Iv(t.id,`workflow run ID`),runNumber:Iv(t.run_number,`workflow run number`),runAttempt:Iv(t.run_attempt,`workflow run attempt`),workflowId:Iv(t.workflow_id,`workflow ID`),path:Lv(t.path,`workflow path`),status:Lv(t.status,`workflow run status`),conclusion:Rv(t.conclusion,`workflow run conclusion`),event:Lv(t.event,`workflow run event`),headSha:Bv(t.head_sha,`workflow run head SHA`),headBranch:Lv(t.head_branch,`workflow run head branch`),headRepository:Mv(t.head_repository,`workflow run head repository`),repository:Mv(t.repository,`workflow run repository`)}}function kv(e){let t=Pv(e,`workflow run candidate`);return{id:Iv(t.id,`workflow run ID`),runNumber:Iv(t.run_number,`workflow run number`),headRepositoryId:Iv(Pv(t.head_repository,`workflow run head repository`).id,`workflow run head repository ID`)}}function Av(e){let t=Pv(e,`workflow artifact`),n=Pv(t.workflow_run,`artifact workflow run`);return{id:Iv(t.id,`artifact ID`),name:Lv(t.name,`artifact name`),sizeInBytes:Iv(t.size_in_bytes,`artifact size`),digest:Vv(t.digest,`artifact digest`),expired:zv(t.expired,`artifact expired`),workflowRun:{id:Iv(n.id,`artifact workflow run ID`),repositoryId:Iv(n.repository_id,`artifact workflow repository ID`),headRepositoryId:Iv(n.head_repository_id,`artifact workflow head repository ID`),headBranch:Lv(n.head_branch,`artifact workflow head branch`),headSha:Bv(n.head_sha,`artifact workflow head SHA`)}}}function jv(e){let t=Pv(e,`pull request`),n=Pv(t.base,`pull request base`),r=Pv(t.head,`pull request head`),i=Lv(t.state,`pull request state`);if(i!==`open`&&i!==`closed`)throw Error(`Pull request state is invalid`);return{number:Iv(t.number,`pull request number`),state:i,base:{ref:Lv(n.ref,`pull request base ref`),sha:Bv(n.sha,`pull request base SHA`),repository:Mv(n.repo,`pull request base repository`)},head:{ref:Lv(r.ref,`pull request head ref`),sha:Bv(r.sha,`pull request head SHA`),repository:Mv(r.repo,`pull request head repository`)}}}function Mv(e,t){let n=Pv(e,t),r=Lv(n.full_name,`${t} full name`);return Nv(r),{id:Iv(n.id,`${t} ID`),fullName:r}}function Nv(e){let t=e.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!t?.[1]||!t[2])throw Error(`Repository full name is invalid`);return{owner:t[1],repo:t[2]}}function Pv(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Fv(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}function Iv(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function Lv(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);for(let n of e){let e=n.codePointAt(0)??0;if(e<=31||e===127)throw Error(`${t} contains control characters`)}return e}function Rv(e,t){return e===null?null:Lv(e,t)}function zv(e,t){if(typeof e!=`boolean`)throw Error(`${t} must be a boolean`);return e}function Bv(e,t){if(typeof e!=`string`||!/^[0-9a-f]{40}$/.test(e))throw Error(`${t} must be a lowercase full SHA`);return e}function Vv(e,t){if(typeof e!=`string`||!/^sha256:[0-9a-f]{64}$/.test(e))throw Error(`${t} must be a SHA-256 digest`);return e}k();const Hv=O({meta:{name:`cleanup`,description:`Delete only exact receipt-bound Kapture artifact IDs`},args:{receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},"trusted-artifact-id":{type:`string`,description:`Exact current trusted report artifact ID`},"trusted-artifact-digest":{type:`string`,description:`upload-artifact SHA-256 digest for the current trusted report artifact`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef(),r=Wv(n),i=e[`trusted-artifact-id`]?Uv(e[`trusted-artifact-id`],`trusted-artifact-id`):void 0,a=await C_(new Ev(t,r),{event:n,receiptPath:f(e.receipt),...i===void 0?{}:{trustedArtifactId:i},...e[`trusted-artifact-digest`]?{trustedArtifactDigest:e[`trusted-artifact-digest`]}:{}});await K({"deleted-artifact-count":a.length,"deleted-artifact-ids":a.join(`,`)})}});function Uv(e,t){if(!/^[1-9][0-9]*$/.test(e))throw Error(`${t} must be a positive integer`);let n=Number(e);if(!Number.isSafeInteger(n))throw Error(`${t} must be a safe integer`);return n}function Wv(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}k();const Gv=O({meta:{name:`context`,description:`Validate a pull request event and write immutable Kapture capture context`},args:{"allow-initial-adoption":{type:`boolean`,default:!1,description:`Explicitly allow head-only setup validation when the base has no adapter`},"adapter-package-json":{type:`string`,description:`Optional project-relative package.json to check for the adapter on the exact base revision`},output:{type:`string`,required:!0,description:`Path for the normalized context JSON`},"changed-files-output":{type:`string`,required:!0,description:`Path for the versioned changed-files manifest`},"base-branch":{type:`string`,description:`Expected pull request base branch`}},async run({args:e}){let t=kg(await ef(),e[`base-branch`]),n=process.env.GITHUB_TOKEN;if(!n)throw Error(`GITHUB_TOKEN is required`);let[r,i]=t.base.repository.split(`/`);if(!r||!i)throw Error(`Capture context repository is invalid`);let o=new Zd(n,{owner:r,repo:i});if(e[`allow-initial-adoption`]&&!e[`adapter-package-json`])throw Error(`allow-initial-adoption requires adapter-package-json`);if(e[`allow-initial-adoption`]&&t.base.repository!==t.head.repository)throw Error(`Fork initial adoption is not supported`);let s=await zg(o,t),c=e[`adapter-package-json`]?Kv(await o.readPackageManifest(e[`adapter-package-json`],t.base.sha),e[`allow-initial-adoption`]?{allowInitialAdoption:!0,headManifest:await o.readPackageManifest(e[`adapter-package-json`],t.head.sha),adapterVersion:Qe}:void 0):`compare`,l=f(e.output),u=f(e[`changed-files-output`]);if(l===u)throw Error(`output and changed-files-output must be different paths`);await Promise.all([y(a(l),{recursive:!0}),y(a(u),{recursive:!0})]),await Promise.all([w(l,`${JSON.stringify(t,null,2)}\n`,{flag:`wx`}),w(u,`${JSON.stringify(s,null,2)}\n`,{flag:`wx`})]),await K({"integration-mode":c,"artifact-suffix":Ag(t),"base-repository":t.base.repository,"base-ref":t.base.ref,"base-sha":t.base.sha,"changed-files-complete":String(s.complete),"changed-files-count":s.files.length,"changed-files-path":u,"context-path":l,"head-repository":t.head.repository,"head-repository-id":t.head.repositoryId,"head-ref":t.head.ref,"head-sha":t.head.sha,"pr-number":t.prNumber,"preview-branch":t.preview.branch,"preview-alias":t.preview.alias})}});function Kv(e,t){let n=qv(e);if(t?.allowInitialAdoption){if(qv(t.headManifest)!==t.adapterVersion)throw Error(`Head adapter must match the exact CLI version`);if(n===void 0)return`initial-adoption`;if(n!==t.adapterVersion)throw Error(`Base adapter must match the exact CLI version; not initial adoption`)}if(n!==void 0)return`compare`;throw Error(`The selected base package manifest does not declare @kaptures/storybook. Select the adapter's workspace manifest or omit --adapter-package-json to validate the built Storybook at capture time.`)}function qv(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Invalid package manifest`);let t=e,n;for(let e of[`dependencies`,`devDependencies`]){let r=t[e];if(r!==void 0&&(!r||typeof r!=`object`||Array.isArray(r)))throw Error(`Invalid package dependencies`);let i=r?.[`@kaptures/storybook`];if(r&&Object.hasOwn(r,`@kaptures/storybook`)){if(typeof i!=`string`||!i.trim())throw Error(`Invalid adapter declaration`);if(n!==void 0&&n!==i)throw Error(`Conflicting adapter declarations`);n=i}}return n}const Jv=/^[0-9a-f]{40}$/,Yv=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,Xv=/^\.github\/workflows\/[A-Za-z0-9_./-]+\.ya?ml$/,Zv=`Base branch changed; rerun visual capture`,Qv=new Set([`action_required`,`cancelled`,`failure`,`neutral`,`skipped`,`stale`,`startup_failure`,`success`,`timed_out`]);async function $v(e,t,n){let r=yy(n.captureWorkflowPath),i=Cy(n.baseBranch,`base branch`),a=Bd(n.statusContext),o=ny(n.event,r),s=await ry(e,o,i);if(!s.ok)return gy(s.reason);if(await cy(t,o,s.target))return gy(`final-report-exists`,s.target);let c=await ry(e,o,i);if(!c.ok)return gy(c.reason,s.target);if(!hy(s.target,c.target))return gy(`pull-request-changed`,c.target);if(await cy(t,o,c.target))return gy(`final-report-exists`,c.target);let l=py(o,c.target);return await t.setReviewStatus(c.target.headSha,l.state,l.description,a),{status:l.state,reason:`status-written`,prNumber:c.target.prNumber,headSha:c.target.headSha}}async function ey(e,t,n){let r=yy(n.captureWorkflowPath),i=Cy(n.baseBranch,`base branch`),a=Bd(n.statusContext),o=ty(n.event,r),s=await ry(e,o,i);if(!s.ok)return _y(s.reason);let c=uy(o,await ly(t,o,s.target,a),s.target);if(c)return _y(c,s.target);let l=await ry(e,o,i);if(!l.ok)return _y(l.reason,s.target);if(!hy(s.target,l.target))return _y(`pull-request-changed`,l.target);let u=uy(o,await ly(t,o,l.target,a),l.target);if(u)return _y(u,l.target);let d=l.target.baseDrift?Zv:o.run.conclusion===`success`?`Visual report publication did not complete`:`Visual capture did not succeed (${o.run.conclusion})`;return await t.setReviewStatus(l.target.headSha,`error`,d,a),{status:`error`,reason:`status-written`,prNumber:l.target.prNumber,headSha:l.target.headSha}}function ty(e,t){let n=ny(e,t);if(n.run.status!==`completed`)throw Error(`Kapture finalize-run requires a completed workflow_run event`);return{...n,run:{...n.run,status:`completed`}}}function ny(e,t){let n=Oy(e,`GitHub workflow_run event`),r=Ty(n.action,`workflow_run action`);if(r!==`in_progress`&&r!==`completed`)throw Error(`Kapture reconcile-run requires an in_progress or completed workflow_run event`);let i=Oy(n.repository,`event repository`),a=by(i.full_name,`event repository`),o=Ey(i.id,`event repository ID`),s=Oy(n.workflow_run,`workflow_run`),c=yy(Ty(s.path,`workflow path`));if(c!==yy(t))throw Error(`workflow_run path ${c} does not match ${t}`);if(s.event!==`pull_request`)throw Error(`Kapture reconcile-run requires a pull_request capture run`);let l=Ty(s.status,`workflow run status`),u=wy(s.conclusion,`workflow run conclusion`);if(r===`in_progress`&&(l!==`in_progress`||u!==null))throw Error(`An in_progress workflow_run event must describe an unfinished run`);if(r===`completed`&&(l!==`completed`||u===null||!Qv.has(u)))throw Error(`A completed workflow_run event must have a supported conclusion`);let d=Oy(s.head_repository,`workflow_run head repository`),f={id:Ey(d.id,`workflow run head repository ID`),fullName:by(d.full_name,`workflow run head repository`)},p=Cy(s.head_branch,`workflow run head branch`),m=ky(s.pull_requests,`workflow_run pull requests`);if(m.length>1)throw Error(`workflow_run must contain at most one pull request`);let h=m[0]?vy(m[0]):void 0;if(h&&(h.base.repositoryId!==o||h.head.repositoryId!==f.id||h.head.ref!==p))throw Error(`workflow_run pull request metadata conflicts with run provenance`);return{repository:{id:o,fullName:a,ref:xy(a)},run:{id:Ey(s.id,`workflow run ID`),runNumber:Ey(s.run_number,`workflow run number`),attempt:Ey(s.run_attempt,`workflow run attempt`),workflowId:Ey(s.workflow_id,`workflow ID`),workflowPath:c,status:l,conclusion:u,event:`pull_request`,headSha:Sy(s.head_sha,`workflow run head SHA`),headBranch:p,headRepository:f},...h?{pullRequest:h}:{}}}async function ry(e,t,n){let r=await e.getWorkflowRun(t.run.id);return iy(r,t),r.runAttempt===t.run.attempt?r.status!==t.run.status||r.conclusion!==t.run.conclusion?{ok:!1,reason:`stale-run-state`}:await ay(e,r)?oy(e,t,n):{ok:!1,reason:`superseded-run`}:{ok:!1,reason:`stale-run-attempt`}}function iy(e,t){if(e.id!==t.run.id||e.runNumber!==t.run.runNumber||e.workflowId!==t.run.workflowId||yy(e.path)!==t.run.workflowPath||e.event!==`pull_request`||e.headSha!==t.run.headSha||e.headBranch!==t.run.headBranch||e.headRepository.id!==t.run.headRepository.id||e.headRepository.fullName!==t.run.headRepository.fullName||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Triggering capture run identity no longer matches the workflow_run event`)}async function ay(e,t){let n=(await e.listWorkflowRuns(t.workflowId,t.headBranch)).filter(e=>e.headRepositoryId===t.headRepository.id);if(n.filter(e=>e.id===t.id).some(e=>e.runNumber!==t.runNumber))throw Error(`Latest workflow run metadata conflicts with the triggering run`);return n.reduce((e,t)=>e?t.runNumber===e.runNumber?t.id>e.id?t:e:t.runNumber>e.runNumber?t:e:t,void 0)?.id===t.id}async function oy(e,t,n){if(t.pullRequest){if(t.pullRequest.base.ref!==n)return{ok:!1,reason:`base-branch-mismatch`};let r=await e.getPullRequest(t.pullRequest.number);return sy(r,t,n)?{ok:!0,target:my(r,r.base.sha!==t.pullRequest.base.sha)}:{ok:!1,reason:`pull-request-not-current`}}let r=(await e.listOpenPullRequestsForHead(t.run.headRepository.fullName,t.run.headBranch,n)).filter(e=>e.state===`open`&&e.base.repository.id===t.repository.id&&e.base.repository.fullName===t.repository.fullName&&e.base.ref===n&&e.head.repository.id===t.run.headRepository.id&&e.head.repository.fullName===t.run.headRepository.fullName&&e.head.ref===t.run.headBranch);return r.length===0?{ok:!1,reason:`pull-request-not-found`}:r.length===1?{ok:!0,target:my(r[0])}:{ok:!1,reason:`pull-request-ambiguous`}}function sy(e,t,n){let r=t.pullRequest;return!!(r&&e.number===r.number&&e.state===`open`&&e.base.repository.id===t.repository.id&&e.base.repository.fullName===t.repository.fullName&&e.base.ref===n&&e.head.repository.id===t.run.headRepository.id&&e.head.repository.fullName===t.run.headRepository.fullName&&e.head.ref===t.run.headBranch&&e.head.sha===r.head.sha)}async function cy(e,t,n){return fy(await e.findCurrentReportMarker(n.prNumber,n.baseSha,n.headSha),t)}async function ly(e,t,n,r){let i=await e.findCurrentReportMarker(n.prNumber,n.baseSha,n.headSha),a=await e.getLatestReviewStatus(n.headSha,r);return{marker:fy(i,t)?i:null,status:a}}function uy(e,t,n){return n.baseDrift&&t.status?.state===`error`&&t.status.description===Zv?`base-drift-already-recorded`:e.run.conclusion===`success`?dy(t)?`final-report-exists`:t.status?.state===`error`&&t.status.description===`Visual report publication did not complete`?`publication-failure-already-recorded`:void 0:t.status?.state===`error`?`capture-failure-already-recorded`:void 0}function dy(e){let{marker:t,status:n}=e;return!t?.reportUrl||!n||t.reportUrl!==n.targetUrl?!1:t.status===`clean`?n.state===`success`&&n.description===`No visual changes`:t.status===`changed`?n.state===`pending`&&n.description===`Visual changes require approval`:n.state===`failure`}function fy(e,t){return!!(e&&e.captureRunId===t.run.id&&e.captureRunAttempt===t.run.attempt&&e.captureWorkflowId===t.run.workflowId&&e.captureRunHeadBranch===t.run.headBranch&&e.captureRunHeadRepositoryId===t.run.headRepository.id)}function py(e,t){return t.baseDrift?{state:`error`,description:Zv}:e.run.status===`in_progress`?{state:`pending`,description:`Visual capture is in progress`}:e.run.conclusion===`success`?{state:`pending`,description:`Visual report is awaiting publication`}:{state:`error`,description:`Visual capture did not succeed (${e.run.conclusion})`}}function my(e,t=!1){return{prNumber:e.number,baseSha:e.base.sha,headSha:e.head.sha,baseDrift:t}}function hy(e,t){return e.prNumber===t.prNumber&&e.baseSha===t.baseSha&&e.headSha===t.headSha&&e.baseDrift===t.baseDrift}function gy(e,t){return{status:`noop`,reason:e,...t?{prNumber:t.prNumber,headSha:t.headSha}:{}}}function _y(e,t){return{status:`noop`,reason:e,...t?{prNumber:t.prNumber,headSha:t.headSha}:{}}}function vy(e){let t=Oy(e,`workflow_run pull request`),n=Oy(t.base,`workflow_run pull request base`),r=Oy(t.head,`workflow_run pull request head`);return{number:Ey(t.number,`workflow_run pull request number`),base:{repositoryId:Ey(Oy(n.repo,`workflow_run pull request base repository`).id,`workflow_run pull request base repository ID`),ref:Cy(n.ref,`workflow_run pull request base ref`),sha:Sy(n.sha,`workflow_run pull request base SHA`)},head:{repositoryId:Ey(Oy(r.repo,`workflow_run pull request head repository`).id,`workflow_run pull request head repository ID`),ref:Cy(r.ref,`workflow_run pull request head ref`),sha:Sy(r.sha,`workflow_run pull request head SHA`)}}}function yy(e){if(!Xv.test(e)||e.includes(`//`)||e.includes(`..`))throw Error(`capture-workflow-path must be a safe .github/workflows YAML path`);return e}function by(e,t){let n=Ty(e,`${t} full name`);if(!Yv.test(n))throw Error(`${t} full name is invalid`);return n}function xy(e){let[t,n,...r]=e.split(`/`);if(!t||!n||r.length>0)throw Error(`Repository full name is invalid`);return{owner:t,repo:n}}function Sy(e,t){let n=Ty(e,t);if(!Jv.test(n))throw Error(`${t} must be a lowercase full SHA`);return n}function Cy(e,t){let n=Ty(e,t);if(Dy(n))throw Error(`${t} contains control characters`);return n}function wy(e,t){return e===null?null:Ty(e,t)}function Ty(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);if(Dy(e))throw Error(`${t} contains control characters`);return e}function Ey(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function Dy(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127})}function Oy(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function ky(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}const Ay={"allow-initial-adoption":{type:`boolean`,default:!1},"adapter-package-json":{type:`string`}};async function jy(e,t,n){if(!t[`allow-initial-adoption`])return!1;let r=t[`adapter-package-json`];if(!r)throw Error(`allow-initial-adoption requires adapter-package-json`);let i=process.env.GITHUB_TOKEN;if(!n&&!i)throw Error(`GITHUB_TOKEN is required`);let a=ny(e,t[`capture-workflow-path`]);if(a.run.headRepository.fullName!==a.repository.fullName)throw Error(`Fork initial adoption is not supported`);let o=await ry(n?.runs??new Ev(i,a.repository.ref),a,t[`base-branch`]);if(!o.ok||o.target.baseDrift)return!1;let s=n?.readPackageManifest??((e,t)=>new Zd(i,a.repository.ref).readPackageManifest(e,t));return Kv(await s(r,o.target.baseSha),{allowInitialAdoption:!0,adapterVersion:Qe,headManifest:await s(r,o.target.headSha)})===`initial-adoption`}k();const My=O({meta:{name:`finalize-run`,description:`Close an unfinished status for the exact completed trusted workflow run`},args:{...Ay,"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef();if(await jy(n,e)){await K({status:`noop`,"finalize-reason":`initial-adoption-not-compared`});return}let r=Ny(n),i=await ey(new Ev(t,r),new Zd(t,r),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],statusContext:Bd(e[`status-context`])});await K({status:i.status,"finalize-reason":i.reason,...i.prNumber===void 0?{}:{"pr-number":i.prNumber},...i.headSha?{"head-sha":i.headSha}:{}})}});function Ny(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}const Py={files:t_,fileBytes:n_,totalBytes:r_};function Fy(e,t){if(!t||s(t)||!/^[A-Za-z0-9._/-]+$/.test(t)||t.split(`/`).some(e=>!e||e===`.`||e===`..`))throw Error(`Storybook directory must be a project-relative path without dot segments`);return f(e,t)}async function Iy(e,t,n=Py){let r=Fy(e,t),i=await te(e),a=f(e);for(let e of t.split(`/`)){a=c(a,e);let t=await v(a);if(t.isSymbolicLink()||!t.isDirectory())throw Error(`Storybook path must contain only non-symlink directories`)}let o=await te(r),l=d(i,o);if(l===`..`||l.startsWith(`..${p}`)||s(l))throw Error(`Storybook directory escapes the project root`);let u=(await v(r)).dev,m=[r],h=0,g=0,_=0;for(;m.length;){let e=m.pop();if(!e)break;for(let t of await S(e)){if(_++,_>n.files)throw Error(`Storybook exceeds its entry count boundary`);let r=c(e,t),i=await v(r);if(i.isSymbolicLink()||i.dev!==u)throw Error(`Storybook must not contain symbolic links or cross-device entries`);if(i.isDirectory()){m.push(r);continue}if(!i.isFile())throw Error(`Storybook must contain only regular files and directories`);if(h++,g+=i.size,h>n.files||i.size>n.fileBytes||g>n.totalBytes)throw Error(`Storybook exceeds its file or size boundary`)}}for(let e of[`index.html`,`iframe.html`,`index.json`])if(!(await v(c(r,e))).isFile())throw Error(`Storybook is missing a regular ${e}`);return{directory:r,files:h,bytes:g}}const Ly=`<!-- kapture-preview -->`;function Ry(e,t,n,r){if(e.base.repository!==e.head.repository||t.id!==e.runId||t.runAttempt!==n||t.path!==r||t.event!==`pull_request`||t.headBranch!==e.head.ref||t.headRepository.id!==e.head.repositoryId||t.headRepository.fullName!==e.head.repository||t.repository.fullName!==e.base.repository)throw Error(`Preview requires the exact same-repository pull request workflow run`)}function zy(e,t){if(t.baseRevision!==e.base.sha||t.headRevision!==e.head.sha)throw Error(`Preview report must match the exact event base/head revisions`)}function By(e,t,n){let{summary:r}=e,i=Rd(t);if(!i)throw Error(`Preview report URL is required`);let a=Object.values(e.entries).filter(e=>e.status===`changed`).sort((e,t)=>e.id.localeCompare(t.id)),o=a.slice(0,10).map(e=>{let t=new URL(i);return t.hash=encodeURIComponent(e.id),`- [${Wd(`${e.title} / ${e.name} · ${e.viewport.name}`)}](${Rd(t.toString())})`});return a.length>10&&o.push(`- [View ${a.length-10} more changed snapshots](${i})`),[Ly,`## Kapture preview`,``,`[Pixel comparison dashboard](${i})`,``,`Base: ${Wd(n.base.ref)} → Head: ${Wd(n.head.ref)}`,``,`Snapshots: ${r.total} · Changed: ${r.changed} · Unchanged: ${r.unchanged} · Unstable: ${r.unstable} · Added: ${r.added} · Removed: ${r.removed} · Errors: ${r.errors}`,...o.length?[``,`### Changed snapshots`,``,...o]:[],``,`Head: \`${e.headRevision}\``,`Report digest: \`${e.contentDigest}\``,``,`> Preview only. This result does not approve visual changes. Event-driven approval requires the production workflows on the default branch.`].join(`
|
|
668
|
-
`)}k();const Vy=O({meta:{name:`prepare-preview`,description:`Rebuild a same-repository pre-adoption preview without an approval gate`},args:{input:{type:`string`,required:!0},output:{type:`string`,required:!0},"base-branch":{type:`string`,required:!0},"storybook-directory":{type:`string`}},async run({args:e}){if(process.env.GITHUB_EVENT_NAME!==`pull_request`)throw Error(`Preview requires pull_request`);let t=kg(await ef(),e[`base-branch`]);if(t.base.repository!==t.head.repository)throw Error(`Fork previews are not supported`);let n=f(e.output),r=await rg({inputDir:f(e.input),outputDir:n,trustedBaseBranch:t.base.ref,trustedHeadBranch:t.head.ref,...e[`storybook-directory`]?{storybookUrl:`./storybook/`}:{}});if(zy(t,r.report),e[`storybook-directory`]){let t=f(e[`storybook-directory`]);await Iy(a(t),i(t)),await _(t,f(n,`storybook`),{recursive:!0,errorOnExist:!0,force:!1})}await K({"report-directory":n,"report-path":f(n,`report.json`),"report-digest":r.report.contentDigest??``,"head-sha":t.head.sha,"preview-alias":t.preview.alias})}});k();const Hy=O({meta:{name:`prepare-run`,description:`Download, verify, and rebuild a completed workflow_run report`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},output:{type:`string`,default:`.kapture/trusted-report`,description:`New directory for the trusted static report`},receipt:{type:`string`,default:`.kapture/trusted-run-receipt.json`,description:`Path for the strict trusted-run receipt`},"storybook-url":{type:`string`,description:`Trusted HTTPS Storybook URL or the fixed same-origin ./storybook/ directory`},"temporary-root":{type:`string`,description:`Trusted temporary directory root (defaults to RUNNER_TEMP)`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef(),r=await b_(new Ev(t,Uy(n)),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],outputDir:f(e.output),receiptPath:f(e.receipt),...e[`storybook-url`]?{storybookUrl:e[`storybook-url`]}:{},...e[`temporary-root`]?{temporaryRoot:f(e[`temporary-root`])}:{}});await K({"base-sha":r.receipt.context.base.sha,"context-artifact-id":r.receipt.artifacts.context.id,"head-repository":r.receipt.context.head.repository,"head-sha":r.receipt.context.head.sha,"pr-number":r.receipt.context.prNumber,"preview-branch":r.receipt.context.preview.branch,"preview-alias":r.receipt.context.preview.alias,"raw-report-artifact-id":r.receipt.artifacts.report.id,"report-digest":r.receipt.report.contentDigest,"report-directory":r.reportDirectory,"report-path":r.reportPath,receipt:r.receiptPath,"run-attempt":r.receipt.captureRun.attempt,"run-head-branch":r.receipt.captureRun.headBranch,"run-head-repository-id":r.receipt.captureRun.headRepositoryId,"run-head-sha":r.receipt.captureRun.headSha,"run-id":r.receipt.captureRun.id,"changed-files-complete":String(r.changedFiles.complete),"changed-files-count":r.changedFiles.files.length,"trusted-artifact-name":r.receipt.trustedArtifactName,"workflow-id":r.receipt.captureRun.workflowId})}});function Uy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}k();const Wy=O({meta:{name:`prepare-storybook-run`,description:`Verify and extract the exact receipt-bound head Storybook artifact`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},output:{type:`string`,required:!0,description:`New directory for the verified head Storybook`},receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},"temporary-root":{type:`string`,description:`Trusted temporary directory root (defaults beside output)`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef(),r=await S_(new Ev(t,Gy(n)),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],outputDir:f(e.output),receiptPath:f(e.receipt),...e[`temporary-root`]?{temporaryRoot:f(e[`temporary-root`])}:{}});await K({"head-ref":r.context.head.ref,"head-repository":r.context.head.repository,"head-sha":r.context.head.sha,"head-storybook-artifact-id":r.artifact.id,"pr-number":r.context.prNumber,"preview-branch":r.context.preview.branch,"preview-alias":r.context.preview.alias,receipt:r.receiptPath,"storybook-directory":r.storybookDirectory})}});function Gy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}k();const Ky=O({meta:{name:`reconcile-run`,description:`Reconcile a trusted workflow_run event with the current PR status`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef(),r=qy(n),i=await $v(new Ev(t,r),new Zd(t,r),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],statusContext:Bd(e[`status-context`])});await K({status:i.status,"reconcile-reason":i.reason,...i.prNumber===void 0?{}:{"pr-number":i.prNumber},...i.headSha?{"head-sha":i.headSha}:{}})}});function qy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}k();async function Jy(e,t,n=async(e,t)=>{switch(e){case`reconcile-run`:await ze(Ky,{rawArgs:t});break;case`prepare-run`:await ze(Hy,{rawArgs:t});break;case`prepare-storybook-run`:await ze(Wy,{rawArgs:t})}}){let r=[`--capture-workflow-path`,t.captureWorkflowPath,`--base-branch`,t.baseBranch];if(await n(`reconcile-run`,[...r,`--status-context`,t.statusContext]),!e||typeof e!=`object`)throw Error(`Invalid workflow_run event`);let i=e;return i.action!==`completed`||i.workflow_run?.conclusion!==`success`?!1:(await n(`prepare-run`,[...r,`--output`,t.output,`--receipt`,t.receipt,...t.includeStorybook?[`--storybook-url`,`./storybook/`]:[]]),t.includeStorybook&&await n(`prepare-storybook-run`,[...r,`--output`,f(t.output,`storybook`),`--receipt`,t.receipt]),!0)}const Yy=O({meta:{name:`prepare-review`,description:`Reconcile a workflow run and prepare verified static files for any hosting provider`},args:{...Ay,"capture-workflow-path":{type:`string`,default:`.github/workflows/kapture-capture.yml`},"base-branch":{type:`string`,required:!0},output:{type:`string`,required:!0},receipt:{type:`string`,required:!0},"include-storybook":{type:`boolean`,default:!1},"status-context":{type:`string`,default:`Kapture Visual Review`}},async run({args:e}){await K({ready:`false`});let t=await ef();if(await jy(t,e)){await K({"integration-mode":`initial-adoption`,comparison:`not-performed`});return}let n=await Jy(t,{captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],output:f(e.output),receipt:f(e.receipt),includeStorybook:e[`include-storybook`],statusContext:e[`status-context`]});await K({ready:String(n)})}});k();const Xy=O({meta:{name:`publish-preview`,description:`Publish a preview-only status and comment; never issue an approval marker`},args:{report:{type:`string`,required:!0},"report-digest":{type:`string`,required:!0},"report-url":{type:`string`,required:!0},"base-branch":{type:`string`,required:!0},"capture-workflow-path":{type:`string`,default:`.github/workflows/kapture-capture.yml`}},async run({args:e}){if(process.env.GITHUB_EVENT_NAME!==`pull_request`)throw Error(`Preview requires pull_request`);let t=kg(await ef(),e[`base-branch`]),n=process.env.GITHUB_TOKEN;if(!n)throw Error(`GITHUB_TOKEN is required`);let[r,i]=t.base.repository.split(`/`);if(!r||!i)throw Error(`Invalid repository`);let a=new Zd(n,{owner:r,repo:i}),o=new Ev(n,{owner:r,repo:i}),s=await o.getWorkflowRun(t.runId);Ry(t,s,Number(process.env.GITHUB_RUN_ATTEMPT),e[`capture-workflow-path`]);let c=await ag(f(e.report),e[`report-digest`]);zy(t,c);let l=Rd(e[`report-url`]);if(!l)throw Error(`Preview report URL is required`);let u=async()=>{let n=await a.getPullRequest(t.prNumber);if(n.number!==t.prNumber||n.state!==`open`||n.head.sha!==t.head.sha||n.base.sha!==t.base.sha)throw Error(`Ignoring an obsolete preview result`);let r=await o.getWorkflowRun(t.runId);Ry(t,r,s.runAttempt,e[`capture-workflow-path`]),await E_(o,r)};await u();let d=await a.postOrUpdateReportComment(t.prNumber,By(c,l,t),Ly);if(await u(),await a.setReviewStatus(t.head.sha,c.summary.errors?`failure`:`success`,`Preview only; visual changes require separate review`,`Kapture Preview`,l),await K({"comment-id":d,"report-digest":c.contentDigest??``}),c.summary.errors)throw Error(`Preview contains capture errors`)}});k();const Zy=O({meta:{name:`publish-run`,description:`Revalidate a prepare-run receipt and publish its deployed visual report`},args:{receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},report:{type:`string`,required:!0,description:`Path to the trusted image-bound report.json`},"report-url":{type:`string`,required:!0,description:`Immutable HTTPS URL of the deployed dashboard`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`PR comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await ef(),r=Qy(n),i=Rd(e[`report-url`]);if(!i)throw Error(`report-url is required`);let a=await x_(new Ev(t,r),new Zd(t,r),{event:n,receiptPath:f(e.receipt),reportPath:f(e.report),reportUrl:i,statusContext:Bd(e[`status-context`]),commentLanguage:Od(e[`comment-language`])});if(await K({status:a.status,"changed-count":a.changedCount,"comment-id":a.commentId,"report-digest":a.reportDigest}),a.status===`error`)throw Error(`Visual capture errors were published to the trusted report`)}catch(e){throw await K({status:`error`}),e}}});function Qy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}k(),Yh();const $y=O({meta:{name:`report`,description:`Publish a trusted Kapture PR report and commit status`},args:{report:{type:`string`,required:!0,description:`Path to image-bound trusted report.json`},"report-url":{type:`string`,description:`HTTPS URL for the full report or workflow run`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`PR comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await Dh(e.report),r=tf(await ef()),i=Bd(e[`status-context`]),a=Rd(e[`report-url`]),o=await ff(new Zd(t,r.repository),r,n,i,a,Od(e[`comment-language`]));if(await K({status:o.status,"changed-count":o.changedCount,"comment-id":o.commentId,"report-digest":o.reportDigest}),o.status===`error`)throw Error(`${n.summary.errors} visual capture error(s)`)}catch(e){throw await K({status:`error`}),e}}});k();const eb=O({meta:{name:`validate-build`,description:`Validate a Storybook artifact boundary before upload or capture`},args:{root:{type:`string`,required:!0,description:`Trusted checkout or artifact extraction root`},directory:{type:`string`,required:!0,description:`Storybook directory relative to root`},"path-only":{type:`boolean`,default:!1,description:`Validate the input path before building`}},async run({args:e}){if(e[`path-only`]){await K({directory:Fy(e.root,e.directory)});return}let t=await Iy(e.root,e.directory);await K(t),console.log(`Validated ${t.files} Storybook files (${t.bytes} bytes).`)}});k(),Yh();const tb=O({meta:{name:`verify`,description:`Verify that a Kapture report matches the current pull request`},args:{report:{type:`string`,required:!0,description:`Path to untrusted report.json`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await Dh(e.report),r=tf(await ef());await df(new Zd(t,r.repository),r,n)}});k();const nb=O({meta:{name:`github`,description:`Verify, publish, and approve GitHub visual reviews`},subCommands:{context:Gv,"validate-build":eb,"bind-artifacts":Tv,"prepare-review":Yy,"prepare-preview":Vy,"publish-preview":Xy,verify:tb,report:$y,approve:hf,"prepare-run":Hy,"prepare-storybook-run":Wy,"publish-run":Zy,"reconcile-run":Ky,"finalize-run":My,cleanup:Hv}});async function rb(e,t){let{report:n,resolveImage:r}=await ib(e),i=n.entries[t];if(!i)throw Error(`Kapture report does not contain snapshot ${t}`);let a=[],o=(e,t)=>{t&&(lb(e,t),a.push({role:e,mediaType:`image/png`,source:r(t)}))};return o(`base`,i.baseImage),o(`head`,i.headImage),o(`diff`,i.diffImage),o(`base-repeat`,i.instability?.base?.repeatImage),o(`base-instability-diff`,i.instability?.base?.diffImage),o(`head-repeat`,i.instability?.head?.repeatImage),o(`head-instability-diff`,i.instability?.head?.diffImage),{version:1,report:{baseRevision:n.baseRevision,headRevision:n.headRevision,...n.contentDigest?{contentDigest:n.contentDigest}:{}},snapshot:{id:i.id,storyId:i.storyId,title:i.title,name:i.name,viewport:i.viewport,status:i.status,...i.changedPixels===void 0?{}:{changedPixels:i.changedPixels},...i.diffRatio===void 0?{}:{diffRatio:i.diffRatio},...i.threshold?{threshold:i.threshold}:{},...i.error?{error:i.error}:{}},images:a}}async function ib(e){let t=cb(e);return t?ob(t):ab(e)}async function ab(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size>10485760)throw Error(`Kapture report must be a file no larger than ${kh} bytes`);let r=sb(await x(t,`utf8`)),i=a(t);return{report:r,resolveImage:e=>{let t=f(i,e);if(d(i,t).startsWith(`..`))throw Error(`Kapture report contains an unsafe image path: ${e}`);return{type:`path`,value:t}}}}async function ob(e){let t=await fetch(e,{redirect:`error`});if(!t.ok)throw Error(`Kapture report request failed with HTTP ${t.status}`);let n=Number(t.headers.get(`content-length`));if(Number.isFinite(n)&&n>10485760)throw Error(`Kapture report must be no larger than ${kh} bytes`);let r=await t.text();if(Buffer.byteLength(r)>10485760)throw Error(`Kapture report must be no larger than ${kh} bytes`);return{report:sb(r),resolveImage:t=>{let n=new URL(t,e);if(n.origin!==e.origin||n.protocol!==`https:`)throw Error(`Kapture report contains an unsafe image URL: ${t}`);return{type:`url`,value:n.toString()}}}}function sb(e){try{return Th(JSON.parse(e))}catch(e){throw e instanceof SyntaxError?Error(`Kapture report does not contain valid JSON`):e}}function cb(e){let t;try{t=new URL(e)}catch{return}if(t.protocol!==`https:`||t.username||t.password)throw Error(`Remote Kapture report must be an HTTPS URL without credentials`);return t}function lb(e,t){let n=`images/${e}/`,r=t.slice(n.length);if(!t.startsWith(n)||!r||r.includes(`/`)||r.includes(`\\`)||!r.endsWith(`.png`))throw Error(`Kapture report contains an invalid ${e} image path: ${t}`)}var ub,db=T((()=>{k(),Yh(),ub=O({meta:{name:`inspect`,description:`Print machine-readable snapshot evidence for agents and review tools`},args:{report:{type:`string`,required:!0,description:`Local report.json path or public HTTPS report.json URL`},snapshot:{type:`string`,required:!0,description:`Exact snapshot ID`}},async run({args:e}){let t=await rb(e.report,e.snapshot);process.stdout.write(`${JSON.stringify(t,null,2)}\n`)}})})),fb=T((()=>{jc()})),pb=T((()=>{fb()})),mb=Se({createKaptureMcpServer:()=>gb,getSnapshotEvidenceResult:()=>_b,startKaptureMcpServer:()=>hb});async function hb(e){let{serveStdio:t}=await import(`@modelcontextprotocol/server/stdio`);t(()=>gb(e),{onerror:e=>console.error(e.message)})}async function gb(e){let{McpServer:t}=await import(`@modelcontextprotocol/server`),n=new t({name:`kapture`,version:Qe},{instructions:`Use list_snapshots to find visual changes, then get_snapshot_evidence to inspect the exact PNG evidence. Unstable snapshots are nondeterministic and do not represent an approvable baseline change.`});return n.registerTool(`list_snapshots`,{title:`List Kapture snapshots`,description:`List snapshot IDs, statuses, stories, viewports, and diff metrics from a report.`,inputSchema:xs({status:Ts([`unchanged`,`changed`,`unstable`,`added`,`removed`,`error`]).optional().describe(`Optional exact status filter`)}),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0}},async({status:t})=>{let{report:n}=await ib(e),r=Object.values(n.entries).filter(e=>!t||e.status===t).map(e=>({id:e.id,storyId:e.storyId,title:e.title,name:e.name,viewport:e.viewport,status:e.status,changedPixels:e.changedPixels,changedPixelPercentage:e.diffRatio===void 0?void 0:e.diffRatio*100})),i={baseRevision:n.baseRevision,headRevision:n.headRevision,summary:n.summary,snapshots:r};return{content:[{type:`text`,text:JSON.stringify(i,null,2)}],structuredContent:i}}),n.registerTool(`get_snapshot_evidence`,{title:`Get Kapture snapshot evidence`,description:`Return machine-readable metadata and the actual base, head, diff, and instability PNGs for one snapshot.`,inputSchema:xs({snapshotId:z().min(1).max(512).describe(`Exact ID returned by list_snapshots`)}),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0}},async({snapshotId:t})=>_b(e,t)),n}async function _b(e,t){let n=await rb(e,t),r=await Promise.all(n.images.map(vb));return{content:[{type:`text`,text:JSON.stringify(Sb(n),null,2)},...r],structuredContent:Sb(n)}}async function vb(e){return{type:`image`,data:(e.source.type===`path`?await yb(e.source.value):await bb(e.source.value)).toString(`base64`),mimeType:`image/png`,_meta:{"kapture/role":e.role}}}async function yb(e){let t=await v(e);if(t.isSymbolicLink()||!t.isFile()||t.size>Cb)throw Error(`Kapture evidence image must be no larger than ${Cb} bytes`);return xb(await x(e),e)}async function bb(e){let t=await fetch(e,{redirect:`error`});if(!t.ok)throw Error(`Kapture evidence request failed with HTTP ${t.status}`);let n=Number(t.headers.get(`content-length`));if(Number.isFinite(n)&&n>Cb)throw Error(`Kapture evidence image must be no larger than ${Cb} bytes`);return xb(Buffer.from(await t.arrayBuffer()),e)}function xb(e,t){if(e.byteLength>Cb||!e.subarray(0,8).equals(wb))throw Error(`Kapture evidence is not a supported PNG: ${t}`);return e}function Sb(e){return{...e,images:e.images.map(t=>({role:t.role,mediaType:t.mediaType,source:t.source,contentBlockIndex:e.images.indexOf(t)+1}))}}var Cb,wb,Tb=T((()=>{pb(),db(),Cb=26214400,wb=Buffer.from([137,80,78,71,13,10,26,10])}));k();const Eb=O({meta:{name:`mcp`,description:`Serve Kapture snapshot evidence to agents over MCP stdio`},args:{report:{type:`string`,required:!0,description:`Local report.json path or public HTTPS report.json URL`}},async run({args:e}){let{startKaptureMcpServer:t}=await Promise.resolve().then(()=>(Tb(),mb));await t(e.report)}});Td(),k();const Db=O({meta:{name:`plan`,description:`Select affected Storybook stories from base/head dependency manifests`},args:{"base-dir":{type:`string`,required:!0,description:`Built base Storybook directory`},"head-dir":{type:`string`,required:!0,description:`Built head Storybook directory`},"changed-files":{type:`string`,required:!0,description:`Path to a versioned changed-files manifest or legacy JSON path array`},output:{type:`string`,default:`.kapture/plan.json`,description:`Affected-story plan output path`}},async run({args:e}){let t=await Ob(f(e[`changed-files`])),n=await Tl({baseDir:f(e[`base-dir`]),headDir:f(e[`head-dir`]),changedFiles:t.files,changedFilesComplete:t.complete,...t.evidence?{changedFilesEvidence:t.evidence}:{}}),r=f(e.output);await y(a(r),{recursive:!0}),await w(r,`${JSON.stringify(n,null,2)}\n`,`utf8`),n.selectionMode===`affected`?Q.success(`Selected ${n.selectedStoryIds.length} of ${n.totalStoryIds.length} affected stories`):Q.warn(`Selected all ${n.totalStoryIds.length} stories (${n.fallbackReasons.map(e=>e.code).join(`, `)})`),Q.info(`Plan: ${r}`)}});async function Ob(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch(t){throw Error(`Failed to read changed files JSON from ${e}`,{cause:t})}if(!Array.isArray(t)){let e=Bg(t);return{files:e.files,complete:e.complete,evidence:{provider:e.source.provider,manifestDigest:ie(`sha256`).update(JSON.stringify(e)).digest(`hex`),pullRequestNumber:e.pullRequest.number,baseSha:e.pullRequest.baseSha,headSha:e.pullRequest.headSha}}}if(t.length>1e5)throw Error(`changed-files contains too many paths`);return{files:t.map(e=>Vg(e,`changed file path`)),complete:!0}}k();const kb=O({meta:{name:`report`,description:`Build trusted static Kapture reports`},subCommands:{build:ng}});function Ab(e){let t=`## Kapture initial adoption
|
|
667
|
+
`:l}};function Dh(e){return e.replace(/`([^`]+)`/gm,(e,t)=>ep.cyan(t)).replace(/\s+_([^_]+)_\s+/gm,(e,t)=>` ${ep.underline(t)} `)}function Oh(e=`white`){return ep[e]||ep.white}function kh(e=`bgWhite`){return ep[`bg${e[0].toUpperCase()}${e.slice(1)}`]||ep.bgWhite}function Ah(e={}){let t=jh();return process.env.CONSOLA_LEVEL&&(t=Number.parseInt(process.env.CONSOLA_LEVEL)??t),Pf({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...e)=>Promise.resolve().then(()=>(Pm(),sp)).then(t=>t.prompt(...e)),reporters:e.reporters||[e.fancy??!(Wm||qm)?new Eh:new Rf],...e})}function jh(){return Km?G.debug:qm?G.warn:G.info}const X=Ah();function Mh(e){let t=eg.safeParse(Nh(e));if(!t.success){let e=t.error.issues[0],n=e?.path.length?` at ${e.path.join(`.`)}`:``;throw Error(`Invalid Kapture report${n}: ${e?.message??`unknown error`}`)}return t.data}function Nh(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=e;return t.version!==2||!t.summary||typeof t.summary!=`object`?e:{...t,version:3,summary:{...t.summary,unstable:0}}}async function Ph(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size>10485760)throw Error(`Kapture report must be a file no larger than ${Ih} bytes`);let r;try{r=JSON.parse(await x(t,`utf8`))}catch{throw Error(`Kapture report does not contain valid JSON`)}return Mh(r)}function Fh(e){try{let t=new URL(e);return t.protocol===`https:`&&!t.username&&!t.password}catch{return!1}}var Ih,Lh,Z,Q,Rh,zh,Bh,Vh,Hh,Uh,Wh,Gh,Kh,qh,Jh,Yh,Xh,Zh,Qh,$h,eg,tg=E((()=>{Md(),Fc(),Ih=10485760,Lh=2e4,Z=R().max(4096),Q=R().min(1).max(512),Rh=Q.refine(e=>Array.from(e).every(e=>{let t=e.codePointAt(0)??0;return t>31&&t!==127}),`must not contain control characters`),zh=z().int().min(0).max(2**53-1),Bh=z().int().positive().max(2**53-1),Vh=z().min(0).max(1),Hh=B({name:Q,width:z().int().positive().max(16384),height:z().int().positive().max(16384)}),Uh=B({pixelColorThreshold:Vh,maxChangedPixelRatio:Vh}),Wh=B({id:Q,browser:Q,browserVersion:Q,orchestratorRuntime:Q,operatingSystem:Q,architecture:Q,deviceScaleFactor:z().positive().max(8),locale:Q,timezone:Q,colorScheme:Os([`light`,`dark`]),reducedMotion:Os([`reduce`,`no-preference`]),frozenTime:Q,randomSeed:z().int().min(0).max(2**53-1),fontsFingerprint:Q,stateIsolation:V(`fresh-browser-process-per-story-side-v1`).optional(),network:B({mode:V(`allowlist`),allowedDomains:Ss(Q).max(100),webRtc:V(`disabled`)})}),Gh=B({id:Q,storyId:Q,title:Z,name:Z,viewport:Hh,status:Os([`unchanged`,`changed`,`unstable`,`added`,`removed`,`error`]),baseImage:Z.optional(),headImage:Z.optional(),diffImage:Z.optional(),ignoredRegions:Ss(B({x:z().int().min(0).max(16384),y:z().int().min(0).max(32768),width:z().int().positive().max(16384),height:z().int().positive().max(32768)})).max(1e4).optional(),changedPixels:zh.optional(),diffRatio:Vh.optional(),threshold:Uh.optional(),instability:B({base:B({repeatImage:Z,diffImage:Z,changedPixels:zh,diffRatio:Vh}).optional(),head:B({repeatImage:Z,diffImage:Z,changedPixels:zh,diffRatio:Vh}).optional()}).optional(),error:Z.optional()}).superRefine((e,t)=>{e.status===`unstable`&&!e.instability?.base&&!e.instability?.head&&t.addIssue({code:`custom`,path:[`instability`],message:`unstable snapshots require base or head instability evidence`}),e.status!==`unstable`&&e.instability&&t.addIssue({code:`custom`,path:[`instability`],message:`only unstable snapshots can contain instability evidence`})}),Kh=Ss(Q).max(Lh).refine(e=>new Set(e).size===e.length,`must not contain duplicates`).refine(e=>e.every((t,n)=>n===0||e[n-1]<t),`must be sorted`),qh=B({code:Os([`base-manifest-missing`,`base-manifest-invalid`,`head-manifest-missing`,`head-manifest-invalid`,`changed-files-incomplete`,`manifest-incomplete`,`global-input`,`global-output`,`global-runtime`,`unknown-input`,`story-import-missing`,`story-module-missing`,`fallback-reasons-truncated`]),path:Z.optional(),storyId:Q.optional(),side:Os([`base`,`head`]).optional()}),Jh=B({provider:V(`github-pull-request-files`),manifestDigest:R().regex(/^[0-9a-f]{64}$/),pullRequestNumber:Bh,baseSha:R().regex(/^[0-9a-f]{40}$/),headSha:R().regex(/^[0-9a-f]{40}$/)}),Yh=R().regex(/^[0-9a-f]{64}$/),Xh=Ts(`state`,[B({state:V(`valid`),digest:Yh,revision:Q}),B({state:V(`invalid`),digest:Yh.optional(),revision:Q}),B({state:V(`missing`),revision:Q})]),Zh=B({base:Xh,head:Xh}),Qh=B({repository:Q.regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/),number:Bh,url:Z.refine(Fh,`must be an HTTPS URL without credentials`),baseBranch:Rh,headBranch:Rh,workflowRunUrl:Z.refine(Fh,`must be an HTTPS URL without credentials`)}),$h=B({plannerVersion:V(1),mode:Os([`full`,`affected`,`full-fallback`]),changedFilesEvidence:Jh.optional(),dependencyManifests:Zh.optional(),storyIds:Kh,selectedStoryIds:Kh,skippedStoryIds:Kh,addedStoryIds:Kh.optional(),removedStoryIds:Kh.optional(),fallbackReasons:Ss(qh).max(Ed),baseline:B({mode:V(`reused`),revision:Q,manifestDigest:Yh}).optional()}).superRefine((e,t)=>{let n=new Set(e.storyIds),r=new Set(e.selectedStoryIds),i=new Set(e.skippedStoryIds);if((r.size+i.size!==n.size||[...r].some(e=>!n.has(e)||i.has(e))||[...i].some(e=>!n.has(e)))&&t.addIssue({code:`custom`,message:`selected and skipped stories must exactly partition the story catalog`}),e.mode!==`affected`&&i.size>0&&t.addIssue({code:`custom`,path:[`skippedStoryIds`],message:`full coverage modes cannot skip stories`}),e.mode===`full-fallback`&&e.fallbackReasons.length===0&&t.addIssue({code:`custom`,path:[`fallbackReasons`],message:`full-fallback coverage requires at least one reason`}),e.mode!==`full-fallback`&&e.fallbackReasons.length>0&&t.addIssue({code:`custom`,path:[`fallbackReasons`],message:`only full-fallback coverage can contain fallback reasons`}),e.addedStoryIds===void 0!=(e.removedStoryIds===void 0)&&t.addIssue({code:`custom`,message:`added and removed story catalogs must be provided together`}),e.addedStoryIds&&e.removedStoryIds){let i=new Set(e.addedStoryIds),a=new Set(e.removedStoryIds);([...i].some(e=>!n.has(e)||!r.has(e)||a.has(e))||[...a].some(e=>!n.has(e)||!r.has(e)))&&t.addIssue({code:`custom`,message:`added and removed stories must be disjoint selected catalog members`})}}),eg=B({version:V(3),contentDigest:R().regex(/^[0-9a-f]{64}$/).optional(),baseRevision:Q,headRevision:Q,headBranch:Rh.optional(),baseBranch:Rh.optional(),pullRequest:Qh.optional(),storybookUrl:Z.refine(e=>e===`./storybook/`||Fh(e),`must be an HTTPS URL or ./storybook/ without credentials`).optional(),environment:Wh,createdAt:Q,threshold:Uh,summary:B({total:zh,unchanged:zh,changed:zh,unstable:zh,added:zh,removed:zh,errors:zh}),coverage:$h.optional(),entries:Ds(R(),Gh)}).superRefine((e,t)=>{let n=Object.entries(e.entries);if(n.length>2e4){t.addIssue({code:`custom`,message:`Report contains more than ${Lh} entries`,path:[`entries`]});return}for(let[e,r]of n)e!==r.id&&t.addIssue({code:`custom`,message:`Entry key must match entry.id`,path:[`entries`,e,`id`]});let r={unchanged:0,changed:0,unstable:0,added:0,removed:0,error:0};for(let t of Object.values(e.entries))r[t.status]+=1;if((e.summary.total!==n.length||e.summary.unchanged!==r.unchanged||e.summary.changed!==r.changed||e.summary.unstable!==r.unstable||e.summary.added!==r.added||e.summary.removed!==r.removed||e.summary.errors!==r.error)&&t.addIssue({code:`custom`,message:`Report summary does not match its entries`,path:[`summary`]}),e.coverage){let r=e.coverage.changedFilesEvidence;r&&(r.baseSha!==e.baseRevision||r.headSha!==e.headRevision)&&t.addIssue({code:`custom`,message:`Changed-files evidence must match the report base and head revisions`,path:[`coverage`,`changedFilesEvidence`]});let i=e.coverage.dependencyManifests;i&&(i.base.revision!==e.baseRevision||i.head.revision!==e.headRevision)&&t.addIssue({code:`custom`,message:`Dependency manifest evidence must match the report base and head revisions`,path:[`coverage`,`dependencyManifests`]});let a=new Set(e.coverage.selectedStoryIds),o=new Set(e.coverage.addedStoryIds??[]),s=new Set(e.coverage.removedStoryIds??[]);for(let[e,r]of n)a.has(r.storyId)||t.addIssue({code:`custom`,message:`Report entries must belong to selected stories`,path:[`entries`,e,`storyId`]}),o.has(r.storyId)&&r.status!==`added`&&r.status!==`error`&&t.addIssue({code:`custom`,message:`Entries for an added story must be added or error snapshots`,path:[`entries`,e,`status`]}),s.has(r.storyId)&&r.status!==`removed`&&r.status!==`error`&&t.addIssue({code:`custom`,message:`Entries for a removed story must be removed or error snapshots`,path:[`entries`,e,`status`]})}})}));Md(),A();var ng=zt();tg();const rg=6e4,ig=26214400,ag=Buffer.from([137,80,78,71,13,10,26,10]),og=new Set([`acTL`,`fcTL`,`fdAT`]),sg=[`baseImage`,`headImage`,`diffImage`,`baseRepeatImage`,`baseInstabilityDiffImage`,`headRepeatImage`,`headInstabilityDiffImage`],cg=k({meta:{name:`build`,description:`Rebuild a trusted static report from an untrusted Kapture artifact`},args:{input:{type:`string`,required:!0,description:`Untrusted artifact report directory containing report.json and images`},output:{type:`string`,required:!0,description:`New directory for the trusted static report`},"storybook-url":{type:`string`,description:`Trusted HTTPS Storybook URL or the fixed same-origin ./storybook/ directory`},"base-branch":{type:`string`,description:`Trusted base branch display label (not a comparison revision)`},"head-branch":{type:`string`,description:`Trusted head branch display label (not a comparison revision)`}},async run({args:e}){let t=await lg({inputDir:e.input,outputDir:e.output,storybookUrl:e[`storybook-url`],trustedBaseBranch:e[`base-branch`],trustedHeadBranch:e[`head-branch`]});X.success(`Trusted report: ${t.report.summary.total} snapshots, ${t.imageCount} verified PNGs (${t.imageBytes} bytes)`),X.info(`Output: ${t.outputDir}`)}});async function lg(e){let t=f(e.inputDir),n=f(e.outputDir),r=ug(e.trustedHeadBranch),i=ug(e.trustedBaseBranch);if(await Sg(t),Tg(t,n))throw Error(`Trusted report output must be outside the untrusted input directory`);await Cg(n);let o=e.dashboardDir?f(e.dashboardDir):f(a(fe(import.meta.url)),`dashboard`),s=a(n);await y(s,{recursive:!0});let c=await b(`${s}${p}.kapture-report-`),l;try{l=await fg(t,async(e,t)=>{let n=f(c,e.relativePath);await y(a(n),{recursive:!0}),await w(n,t,{flag:`wx`})});let{report:s,imageDigests:u,calculatedContentDigest:d}=l;if(s.contentDigest&&s.contentDigest!==d)throw Error(`Report content digest does not match its referenced PNGs: expected ${s.contentDigest}, calculated ${d}`);r?s.headBranch=r:delete s.headBranch,i?s.baseBranch=i:delete s.baseBranch,e.trustedPullRequest?s.pullRequest={...e.trustedPullRequest}:delete s.pullRequest;let p=Kd(e.storybookUrl);p?s.storybookUrl=p:delete s.storybookUrl,s.contentDigest=el(s,u),await w(f(c,`report.json`),`${JSON.stringify(s)}\n`,{flag:`wx`}),await Xu(o,c),await ne(c,n)}catch(e){throw await re(c,{recursive:!0,force:!0}),e}if(!l)throw Error(`Trusted report validation did not complete`);return{report:l.report,outputDir:n,imageCount:l.references.length,imageBytes:l.imageBytes}}function ug(e){if(e!==void 0){if(e.length<1||e.length>512||Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127}))throw Error(`Trusted head branch must contain between 1 and 512 non-control characters`);return e}}async function dg(e,t){if(!/^[0-9a-f]{64}$/.test(t))throw Error(`Expected trusted report content digest must be a lowercase SHA-256 digest`);let n=f(e);if(n!==f(a(n),`report.json`))throw Error(`Trusted report path must end in report.json`);let r=a(n);await Sg(r);let i=await fg(r);if(i.report.contentDigest!==t||i.calculatedContentDigest!==t)throw Error(`Trusted report content digest does not match its actual structure and referenced PNGs`);return i.report}async function fg(e,t){let n=pg(await wg(e,`report.json`,Ih)),r=mg(n);if(r.length>6e4)throw Error(`Report references more than ${rg} PNG images`);let i=new Map,a=[],o=0;for(let n of r){let r=await wg(e,n.relativePath,ig);if(o+=r.byteLength,o>536870912)throw Error(`Referenced PNGs exceed 536870912 total bytes`);i.set(n.relativePath,yg(r,n.relativePath)),a.push({path:n.relativePath,sha256:T(`sha256`).update(r).digest(`hex`)}),await t?.(n,r)}return xg(n,i),{report:n,references:r,imageDigests:a,imageBytes:o,calculatedContentDigest:el(n,a)}}function pg(e){let t;try{t=JSON.parse(e.toString(`utf8`))}catch{throw Error(`Input report.json does not contain valid JSON`)}return Mh(t)}function mg(e){let t=new Map;for(let n of Object.values(e.entries)){let e=hg(n);for(let r of sg){let i=_g(n,r);if(e.has(r)&&!i)throw Error(`Report entry ${n.id} is missing ${r} for status ${n.status}`);if(!e.has(r)&&i)throw Error(`Report entry ${n.id} cannot contain ${r} for status ${n.status}`);if(!i)continue;let a=vg(i,gg(r),n.id),o=t.get(a);if(o&&o.entryId!==n.id)throw Error(`Report entries ${o.entryId} and ${n.id} reference the same PNG: ${a}`);t.set(a,{relativePath:a,entryId:n.id})}}return[...t.values()]}function hg(e){if(e.status===`changed`)return new Set([`baseImage`,`headImage`,`diffImage`]);if(e.status===`unstable`){if(!e.instability?.base&&!e.instability?.head)throw Error(`Report entry ${e.id} is unstable without instability evidence`);let t=[`baseImage`,`headImage`,`diffImage`];return e.instability.base&&t.push(`baseRepeatImage`,`baseInstabilityDiffImage`),e.instability.head&&t.push(`headRepeatImage`,`headInstabilityDiffImage`),new Set(t)}return e.status===`added`?new Set([`headImage`]):e.status===`removed`?new Set([`baseImage`]):new Set}function gg(e){return e===`baseImage`?`base`:e===`headImage`?`head`:e===`diffImage`?`diff`:e===`baseRepeatImage`?`base-repeat`:e===`baseInstabilityDiffImage`?`base-instability-diff`:e===`headRepeatImage`?`head-repeat`:`head-instability-diff`}function _g(e,t){return t===`baseImage`||t===`headImage`||t===`diffImage`?e[t]:t===`baseRepeatImage`?e.instability?.base?.repeatImage:t===`baseInstabilityDiffImage`?e.instability?.base?.diffImage:t===`headRepeatImage`?e.instability?.head?.repeatImage:e.instability?.head?.diffImage}function vg(e,t,n){let r=`images/${t}/`,i=e.slice(r.length);if(!e.startsWith(r)||!i||i.includes(`/`)||i.includes(`\\`)||i.length>255||!/^[a-zA-Z0-9][a-zA-Z0-9._-]*\.png$/.test(i))throw Error(`Report entry ${n} has an invalid ${t} PNG path: ${e}`);return e}function yg(e,t){if(e.byteLength<33||!e.subarray(0,8).equals(ag))throw Error(`Referenced image is not a PNG: ${t}`);let n=e.readUInt32BE(8),r=e.toString(`ascii`,12,16);if(n!==13||r!==`IHDR`)throw Error(`Referenced PNG has an invalid IHDR chunk: ${t}`);let i=e.readUInt32BE(16),a=e.readUInt32BE(20);if(i<1||a<1||i>16384||a>32768||i*a>33554432)throw Error(`Referenced PNG dimensions are outside the supported limits: ${t} (${i}x${a})`);bg(e,t);try{let t=ng.PNG.sync.read(e,{checkCRC:!0,skipRescale:!0});if(t.width!==i||t.height!==a)throw Error(`decoded dimensions differ from IHDR`)}catch{throw Error(`Referenced PNG cannot be decoded safely: ${t}`)}return{width:i,height:a}}function bg(e,t){let n=ag.byteLength,r=!1;for(;n+12<=e.byteLength;){let i=e.readUInt32BE(n),a=e.toString(`ascii`,n+4,n+8),o=n+12+i;if(o>e.byteLength)throw Error(`Referenced PNG has an invalid chunk boundary: ${t}`);if(og.has(a))throw Error(`Animated PNG is not supported in a static report: ${t}`);if(n=o,a===`IEND`){r=!0;break}}if(!r||n!==e.byteLength)throw Error(`Referenced PNG has an invalid chunk structure: ${t}`)}function xg(e,t){for(let n of Object.values(e.entries)){if(n.status!==`changed`&&n.status!==`unstable`||!n.baseImage||!n.headImage||!n.diffImage)continue;let e=t.get(n.baseImage),r=t.get(n.headImage),i=t.get(n.diffImage);if(!e||!r||!i)throw Error(`Report entry ${n.id} is missing validated PNG dimensions`);let a=Math.max(e.width,r.width),o=Math.max(e.height,r.height);for(let e of n.ignoredRegions??[])if(e.x+e.width>a||e.y+e.height>o)throw Error(`Report entry ${n.id} ignored region exceeds its comparison canvas`);if(i.width!==a||i.height!==o)throw Error(`Report entry ${n.id} diff PNG must match the padded comparison canvas ${a}x${o}`);if(n.changedPixels!==void 0&&n.changedPixels>a*o)throw Error(`Report entry ${n.id} changedPixels exceeds its diff PNG pixel count`);for(let i of[n.instability?.base,n.instability?.head]){if(!i)continue;let a=t.get(i.repeatImage),o=t.get(i.diffImage);if(!a||!o)throw Error(`Report entry ${n.id} is missing instability PNG dimensions`);let s=i===n.instability?.base?e:r,c=Math.max(s.width,a.width),l=Math.max(s.height,a.height);if(o.width!==c||o.height!==l)throw Error(`Report entry ${n.id} instability diff PNG must match ${c}x${l}`);if(i.changedPixels>c*l)throw Error(`Report entry ${n.id} instability changedPixels exceeds its diff PNG pixel count`)}}}async function Sg(e){let t;try{t=await v(e)}catch(t){throw Eg(t)?Error(`Input report directory does not exist: ${e}`):t}if(t.isSymbolicLink()||!t.isDirectory())throw Error(`Input report path must be a real directory, not a symbolic link`)}async function Cg(e){try{await v(e)}catch(e){if(Eg(e))return;throw e}throw Error(`Trusted report output already exists: ${e}`)}async function wg(e,t,n){if(s(t)||t.includes(`\\`))throw Error(`Input file must be a normalized relative path: ${t}`);let r=t.split(`/`),i=e;for(let[e,n]of r.entries()){if(!n||n===`.`||n===`..`)throw Error(`Input file must be a normalized relative path: ${t}`);i=f(i,n);let a;try{a=await v(i)}catch(e){throw Eg(e)?Error(`Referenced input file does not exist: ${t}`):e}if(a.isSymbolicLink())throw Error(`Referenced input path cannot contain a symbolic link: ${t}`);let o=e===r.length-1;if(!o&&!a.isDirectory()||o&&!a.isFile())throw Error(`Referenced input path is not a regular file: ${t}`)}let a=ue.O_RDONLY|(ue.O_NOFOLLOW??0),o=await ee(i,a);try{let e=await o.stat();if(!e.isFile()||e.size>n)throw Error(`Input file exceeds ${n} bytes: ${t}`);let r=Buffer.alloc(e.size),i=0;for(;i<r.byteLength;){let{bytesRead:e}=await o.read(r,i,r.byteLength-i,i);if(e===0)throw Error(`Input file changed while being read: ${t}`);i+=e}let a=Buffer.alloc(1),{bytesRead:s}=await o.read(a,0,1,r.byteLength);if(s>0)throw Error(`Input file changed while being read: ${t}`);return r}finally{await o.close()}}function Tg(e,t){let n=d(e,t);return n===``||!n.startsWith(`..${p}`)&&n!==`..`&&!s(n)}function Eg(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function Dg(e,t){return kg(e,t).map(({path:e,compressedBytes:t,uncompressedBytes:n})=>({path:e,compressedBytes:t,uncompressedBytes:n}))}async function Og(e,t,n){let r=kg(e,n),i=f(t);await y(i,{recursive:!0});for(let t of r){let n=e.subarray(t.dataOffset,t.dataOffset+t.compressedBytes),r=t.compression===0?Buffer.from(n):be(n,{maxOutputLength:t.uncompressedBytes+1});if(r.byteLength!==t.uncompressedBytes)throw Error(`ZIP entry size mismatch: ${t.path}`);if(ye(r)!==t.crc)throw Error(`ZIP entry checksum mismatch: ${t.path}`);let o=f(i,t.path);if(!o.startsWith(`${i}${p}`))throw Error(`ZIP entry escapes the output directory: ${t.path}`);await y(a(o),{recursive:!0}),await w(o,r,{flag:`wx`})}return r}function kg(e,t){Pg(t);let n=Ag(e),r=e.readUInt16LE(n+4),i=e.readUInt16LE(n+6),a=e.readUInt16LE(n+8),o=e.readUInt16LE(n+10),s=e.readUInt32LE(n+12),c=e.readUInt32LE(n+16),l=e.readUInt16LE(n+20);if(n+22+l!==e.byteLength)throw Error(`ZIP end record does not match the archive size`);if(r!==0||i!==0||a!==o)throw Error(`Multi-disk ZIP archives are not supported`);if(o===65535||s===4294967295||c===4294967295)throw Error(`ZIP64 archives are not supported`);if(o>t.maxEntries)throw Error(`ZIP archive contains more than ${t.maxEntries} entries`);if(c+s!==n)throw Error(`ZIP central directory is malformed`);let u=[],d=new Set,f=c,p=0;for(let r=0;r<o;r+=1){if(f+46>n||e.readUInt32LE(f)!==33639248)throw Error(`ZIP central directory entry is malformed`);let r=e.readUInt16LE(f+4),i=e.readUInt16LE(f+8),a=e.readUInt16LE(f+10),o=e.readUInt32LE(f+16),s=e.readUInt32LE(f+20),l=e.readUInt32LE(f+24),m=e.readUInt16LE(f+28),h=e.readUInt16LE(f+30),g=e.readUInt16LE(f+32),_=e.readUInt16LE(f+34),v=e.readUInt32LE(f+38),y=e.readUInt32LE(f+42),b=f+46+m+h+g;if(b>n)throw Error(`ZIP central directory entry exceeds its bounds`);if(i&1)throw Error(`Encrypted ZIP entries are not supported`);if(a!==0&&a!==8)throw Error(`ZIP compression method ${a} is not supported`);if(_!==0)throw Error(`Multi-disk ZIP entries are not supported`);if(s===4294967295||l===4294967295||y===4294967295)throw Error(`ZIP64 entries are not supported`);let ee=e.subarray(f+46,f+46+m),x=Mg(ee);f=b;let S=x.endsWith(`/`);if(Ng(r,v,x,S),d.has(x))throw Error(`ZIP archive contains duplicate path: ${x}`);if(d.add(x),S){if(!t.allowDirectoryPath(x))throw Error(`ZIP archive contains unexpected directory: ${x}`);if(i&8||a!==0||o!==0||s!==0||l!==0)throw Error(`ZIP directory entry must be empty and stored: ${x}`);jg(e,y,ee,i,a,o,s,l,c);continue}if(!t.allowPath(x))throw Error(`ZIP archive contains unexpected path: ${x}`);if(l>t.maxFileBytes)throw Error(`ZIP entry exceeds ${t.maxFileBytes} bytes: ${x}`);if(p+=l,p>t.maxTotalBytes)throw Error(`ZIP archive exceeds ${t.maxTotalBytes} uncompressed bytes`);let te=jg(e,y,ee,i,a,o,s,l,c);u.push({path:x,compression:a,crc:o,compressedBytes:s,uncompressedBytes:l,dataOffset:te})}if(f!==n)throw Error(`ZIP central directory size is inconsistent`);return u}function Ag(e){let t=Math.max(0,e.byteLength-65557);for(let n=e.byteLength-22;n>=t;--n)if(e.readUInt32LE(n)===101010256)return n;throw Error(`ZIP end-of-central-directory record is missing`)}function jg(e,t,n,r,i,a,o,s,c){if(t+30>c||e.readUInt32LE(t)!==67324752)throw Error(`ZIP local entry header is malformed`);let l=e.readUInt16LE(t+6),u=e.readUInt16LE(t+8),d=e.readUInt32LE(t+14),f=e.readUInt32LE(t+18),p=e.readUInt32LE(t+22),m=e.readUInt16LE(t+26),h=e.readUInt16LE(t+28),g=t+30+m+h;if(g>c)throw Error(`ZIP local entry header exceeds its bounds`);let _=e.subarray(t+30,t+30+m);if(l!==r||u!==i||!_.equals(n))throw Error(`ZIP local and central directory entries do not match`);if(!(l&8)&&(d!==a||f!==o||p!==s))throw Error(`ZIP local and central directory sizes or checksum do not match`);if(g+o>c)throw Error(`ZIP entry data exceeds the archive bounds`);return g}function Mg(e){let t=e.toString(`utf8`);if(!Buffer.from(t,`utf8`).equals(e))throw Error(`ZIP path is not valid UTF-8`);let n=t.endsWith(`/`),r=t.split(`/`),i=n?r.slice(0,-1):r;if(t.length<1||t.startsWith(`/`)||t.includes(`\\`)||t.includes(`\0`)||i.some(e=>!e||e===`.`||e===`..`)||Array.from(t).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127}))throw Error(`ZIP path is unsafe: ${JSON.stringify(t)}`);return t}function Ng(e,t,n,r){if(e>>>8!=3)return;let i=t>>>16&61440;if(i!==0&&i!==(r?16384:32768))throw Error(r?`ZIP entry is not a directory: ${n}`:`ZIP entry is not a regular file: ${n}`)}function Pg(e){for(let[t,n]of Object.entries({maxEntries:e.maxEntries,maxFileBytes:e.maxFileBytes,maxTotalBytes:e.maxTotalBytes}))if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be positive`)}function Fg(e,t){let n=Ug(e,`GitHub pull_request event`),r=Ug(n.pull_request,`pull_request`),i=Rg(Ug(n.repository,`repository`)),a=Ug(r.base,`pull_request.base`),o=Ug(r.head,`pull_request.head`),s=Rg(Ug(a.repo,`pull_request.base.repo`)),c=Ug(o.repo,`pull_request.head.repo`),l=Bg(a.ref,`pull_request.base.ref`),u=Bg(o.ref,`pull_request.head.ref`),d=Vg(r.number,`pull request number`);if(s!==i)throw Error(`Pull request base repository must match the workflow repository`);if(t!==void 0&&l!==Bg(t,`base branch`))throw Error(`Pull request targets ${l}, expected ${t}`);return{schemaVersion:1,runId:Vg(n.run_id??process.env.GITHUB_RUN_ID,`workflow run ID`),prNumber:d,base:{repository:s,ref:l,sha:zg(a.sha,`pull_request.base.sha`)},head:{repository:Rg(c),repositoryId:Vg(c.id,`head repository ID`),ref:u,sha:zg(o.sha,`pull_request.head.sha`)},preview:{branch:u,alias:Lg(d,u)}}}function Ig(e){return`pr-${e.prNumber}-base-${e.base.sha}-head-${e.head.sha}`}function Lg(e,t){let n=`pr-${Vg(e,`pull request number`)}-`,r=Bg(t,`head branch`),i=r.normalize(`NFKD`).toLowerCase().replace(/[^a-z0-9-]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),a=`-${T(`sha256`).update(r).digest(`hex`).slice(0,10)}`,o=Math.max(1,63-n.length-a.length);return`${n}${(i||`branch`).slice(0,o).replace(/-$/g,``)||`b`}${a}`}function Rg(e){let t=Hg(e.full_name,`repository full name`);if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(t))throw Error(`GitHub event contains an invalid repository full name`);return t}function zg(e,t){let n=Hg(e,t).toLowerCase();if(!/^[0-9a-f]{40}$/.test(n))throw Error(`${t} must be a full SHA`);return n}function Bg(e,t){let n=Hg(e,t);if(n.length<1||n.length>512)throw Error(`${t} is invalid`);for(let e of n){let n=e.codePointAt(0)??0;if(n<=31||n===127)throw Error(`${t} is invalid`)}return n}function Vg(e,t){let n=typeof e==`string`&&/^[1-9][0-9]*$/.test(e)?Number(e):e;if(typeof n!=`number`||!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be a positive integer`);return n}function Hg(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string`);return e}function Ug(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}const Wg=3e3;async function Gg(e,t){let n=await e.getPullRequestForCapture(t.prNumber);Jg(n,t);let r=a_(n.changed_files,`pull request changed_files`),i=[],a=[],o=0;if(r>3e3)i.push({code:`github-file-limit`});else for(let n=1;n<=Math.ceil(r/100);n+=1){let s=await e.listPullRequestFilesPage(t.prNumber,n,100);if(o=n,!Array.isArray(s)){i.push({code:`pagination-incomplete`,page:n});break}let c=s.slice(0,100);s.length>100&&i.push({code:`pagination-incomplete`,page:n});for(let[e,t]of c.entries())a.push({value:t,page:n,index:e});if(c.length<100){a.length<r&&i.push({code:`pagination-incomplete`,page:n});break}}a.length!==r&&i.push({code:`file-count-mismatch`});let s=new Set,c=new Set;for(let e of a)Yg(e,s,c,i);let l=await e.getPullRequestForCapture(t.prNumber);if(Jg(l,t),l.changed_files!==r)throw Error(`Pull request changed while Kapture discovered changed files`);let u=Qg(i);return{kind:`kapture-changed-files`,version:1,complete:u.length===0,pullRequest:{number:t.prNumber,baseSha:t.base.sha,headSha:t.head.sha},files:[...s].sort(),source:{provider:`github-pull-request-files`,expectedFileCount:r,fetchedFileCount:a.length,pageCount:o,perPage:100,maxFiles:Wg},diagnostics:u}}function Kg(e){let t=o_(e,`changed-files manifest`);if(n_(t,[`kind`,`version`,`complete`,`pullRequest`,`files`,`source`,`diagnostics`],`changed-files manifest`),t.kind!==`kapture-changed-files`||t.version!==1)throw Error(`changed-files manifest must use kapture-changed-files version 1`);if(typeof t.complete!=`boolean`)throw Error(`changed-files manifest complete must be a boolean`);if(!Array.isArray(t.files)||t.files.length>6e3)throw Error(`changed-files manifest files must be a bounded array`);let n=t.files.map(e=>qg(e,`changed file path`));if(!$g(n))throw Error(`changed-files manifest files must be unique and sorted`);let r=o_(t.pullRequest,`changed-files manifest pullRequest`);n_(r,[`number`,`baseSha`,`headSha`],`changed-files manifest pullRequest`);let i=o_(t.source,`changed-files manifest source`);if(n_(i,[`provider`,`expectedFileCount`,`fetchedFileCount`,`pageCount`,`perPage`,`maxFiles`],`changed-files manifest source`),i.provider!==`github-pull-request-files`)throw Error(`changed-files manifest source provider is invalid`);if(i.perPage!==100||i.maxFiles!==3e3)throw Error(`changed-files manifest source limits are invalid`);if(!Array.isArray(t.diagnostics)||t.diagnostics.length>6e3)throw Error(`changed-files manifest diagnostics must be a bounded array`);let a=t.diagnostics.map(Zg);if(!$g(a.map(e_)))throw Error(`changed-files manifest diagnostics must be unique and sorted`);if(t.complete!==(a.length===0))throw Error(`changed-files manifest completeness disagrees with diagnostics`);let o=a_(i.expectedFileCount,`changed-files expected file count`),s=a_(i.fetchedFileCount,`changed-files fetched file count`),c=a_(i.pageCount,`changed-files page count`);if(s>3e3||c>30||s>c*100||n.length>s*2)throw Error(`changed-files manifest source counts are inconsistent`);if(t.complete&&(o!==s||o>3e3||c!==Math.ceil(s/100)||n.length<s))throw Error(`complete changed-files manifest source counts are inconsistent`);return{kind:`kapture-changed-files`,version:1,complete:t.complete,pullRequest:{number:i_(r.number,`changed-files pull request number`),baseSha:r_(r.baseSha,`changed-files base SHA`),headSha:r_(r.headSha,`changed-files head SHA`)},files:n,source:{provider:`github-pull-request-files`,expectedFileCount:o,fetchedFileCount:s,pageCount:c,perPage:100,maxFiles:Wg},diagnostics:a}}function qg(e,t=`GitHub file path`){if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=Array.from(e);if(e.length===0||e.length>4096||e.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(e)||e.startsWith(`./`)||e===`.`||e===`..`||e.startsWith(`../`)||e.endsWith(`/`)||e.includes(`//`)||e.includes(`\\`)||e.split(`/`).some(e=>e===`.`||e===`..`)||n.some(e=>{let t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}))throw Error(`${t} must be a normalized project-relative path`);return e}function Jg(e,t){let n=e.head.repo;if(e.number!==t.prNumber||e.state!==`open`||e.base.ref!==t.base.ref||e.base.sha.toLowerCase()!==t.base.sha||e.base.repo.full_name!==t.base.repository||e.head.ref!==t.head.ref||e.head.sha.toLowerCase()!==t.head.sha||n?.id!==t.head.repositoryId||n.full_name!==t.head.repository)throw Error(`Live pull request does not match the exact Kapture capture context`)}function Yg(e,t,n,r){if(!e.value||typeof e.value!=`object`||Array.isArray(e.value)){r.push({code:`invalid-file-record`,page:e.page,index:e.index});return}let i=e.value;if(typeof i.status!=`string`||typeof i.filename!=`string`){r.push({code:`invalid-file-record`,page:e.page,index:e.index});return}let a=JSON.stringify([i.status,i.filename,i.previous_filename]);if(n.has(a)&&r.push({code:`duplicate-file-entry`,page:e.page,index:e.index}),n.add(a),Xg(i.filename,e,t,r),i.status===`renamed`||i.previous_filename!==void 0){if(typeof i.previous_filename!=`string`){r.push({code:`rename-source-missing`,page:e.page,index:e.index});return}Xg(i.previous_filename,e,t,r)}}function Xg(e,t,n,r){try{n.add(qg(e))}catch{r.push({code:`invalid-file-path`,page:t.page,index:t.index})}}function Zg(e){let t=o_(e,`changed-files diagnostic`);if(n_(t,[`code`,`page`,`index`],`changed-files diagnostic`,!0),typeof t.code!=`string`||![`github-file-limit`,`pagination-incomplete`,`file-count-mismatch`,`invalid-file-record`,`invalid-file-path`,`rename-source-missing`,`duplicate-file-entry`].includes(t.code))throw Error(`changed-files diagnostic code is invalid`);let n=t.page===void 0?void 0:i_(t.page,`page`),r=t.index===void 0?void 0:a_(t.index,`diagnostic index`),i={code:t.code,...n===void 0?{}:{page:n},...r===void 0?{}:{index:r}};if(i.code===`github-file-limit`||i.code===`file-count-mismatch`?n!==void 0||r!==void 0:i.code===`pagination-incomplete`?n===void 0||n>30||r!==void 0:n===void 0||n>30||r===void 0||r>=100)throw Error(`changed-files diagnostic location is invalid`);return i}function Qg(e){return[...new Map(e.map(e=>[JSON.stringify(e),e])).values()].sort((e,t)=>t_(e_(e),e_(t)))}function $g(e){return e.every((t,n)=>n===0||(e[n-1]??``)<t)}function e_(e){return`${e.code}:${String(e.page??0).padStart(2,`0`)}:${String(e.index??0).padStart(3,`0`)}`}function t_(e,t){return e<t?-1:+(e>t)}function n_(e,t,n,r=!1){let i=Object.keys(e).sort(),a=r?i.filter(e=>t.includes(e)).sort():[...t].sort();if(i.some(e=>!t.includes(e))||!r&&(i.length!==a.length||i.some((e,t)=>e!==a[t])))throw Error(`${n} contains unexpected or missing fields`)}function r_(e,t){if(typeof e!=`string`||!/^[0-9a-f]{40}$/.test(e))throw Error(`${t} must be a full lowercase SHA`);return e}function i_(e,t){let n=a_(e,t);if(n===0)throw Error(`${t} must be a positive integer`);return n}function a_(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative integer`);return e}function o_(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}Fc(),tg();const s_=2e4,c_=26214400,l_=1073741824,u_=/^[0-9a-f]{40}$/,d_=/^sha256:[0-9a-f]{64}$/,f_=/^[0-9a-f]{64}$/,p_=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,m_=/^\.github\/workflows\/[A-Za-z0-9_./-]+\.ya?ml$/,h_=/^images\/(?:base|head|diff)\/[A-Za-z0-9][A-Za-z0-9._-]*\.png$/,g_=R().min(1).max(512).refine(e=>!Ev(e),`must not contain control characters`),__=R().regex(u_),v_=z().int().positive().max(2**53-1),y_=R().regex(p_),b_=R().regex(d_),x_=B({schemaVersion:V(1),runId:v_,prNumber:v_,base:B({repository:y_,ref:g_,sha:__}),head:B({repository:y_,repositoryId:v_,ref:g_,sha:__}),preview:B({branch:g_,alias:g_})}),S_=B({id:v_,name:g_,sizeInBytes:v_,digest:b_}),C_=B({id:v_,name:g_,digest:b_}),w_=B({schemaVersion:V(1),artifacts:B({context:C_,baseStorybook:C_,headStorybook:C_})}),T_=B({schemaVersion:V(2),repository:B({id:v_,fullName:y_}),context:x_,captureRun:B({id:v_,runNumber:v_,attempt:v_,workflowId:v_,workflowPath:g_,headSha:__,headBranch:g_,headRepositoryId:v_,headRepository:y_}),artifacts:B({context:S_,baseStorybook:S_,headStorybook:S_,report:S_}),report:B({contentDigest:R().regex(f_)}),trustedArtifactName:g_});async function E_(e,t){let n=vv(t.captureWorkflowPath),r=Sv(t.baseBranch,`base branch`),i=f(t.outputDir),a=f(t.receiptPath);if(kv(i,a))throw Error(`Trusted receipt must be outside the publicly deployed report directory`);await _v(a,`Trusted receipt`);let o=A_(t.event,n),s=await e.getWorkflowRun(o.run.id);ev(s,o),await M_(e,s);let c=N_(await e.listRunArtifacts(s.id),o),l=await hv(t.temporaryRoot),u=!1;try{let d=await I_(e,c.context,33685504),p=f(l,`context`);V_(d),await Og(d,p,L_);let m=await K_(f(p,`context.json`)),h=await q_(f(p,`changed-files.json`),m);Y_(m,c.context),X_(m,o,s,r),Q_(await e.getPullRequest(m.prNumber),m,o,r),await $_(e,m,n);let g=await I_(e,c.report,629145600),_=f(l,`untrusted-report`);H_(g),await Og(g,_,z_),G_(await W_(f(_,`capture-boundary.json`)),c);let v=await Ph(f(_,`report.json`));J_(v,h),await vf(e,pv(o,m),v);let y=await lg({inputDir:_,outputDir:i,trustedHeadBranch:m.head.ref,trustedPullRequest:{repository:m.base.repository,number:m.prNumber,url:`https://github.com/${m.base.repository}/pull/${m.prNumber}`,baseBranch:m.base.ref,headBranch:m.head.ref,workflowRunUrl:`https://github.com/${m.base.repository}/actions/runs/${o.run.id}`},...t.storybookUrl?{storybookUrl:t.storybookUrl}:{},...t.dashboardDir?{dashboardDir:f(t.dashboardDir)}:{}});if(u=!0,!y.report.contentDigest)throw Error(`Trusted report build did not produce an image-bound content digest`);await fv(e,o,s,m,r,n);let b=tv(o,s,m,c,y.report);return await gv(a,b),{receipt:b,report:y.report,reportDirectory:i,reportPath:f(i,`report.json`),receiptPath:a,changedFiles:h}}catch(e){throw u&&await re(i,{recursive:!0,force:!0}),e}finally{await re(l,{recursive:!0,force:!0})}}async function D_(e,t,n){let r=await j_(n.receiptPath),i=A_(n.event,r.captureRun.workflowPath);iv(r,i);let a=await e.getWorkflowRun(r.captureRun.id);av(a,r),await M_(e,a),await ov(e,r,i),Q_(await e.getPullRequest(r.context.prNumber),r.context,i,r.context.base.ref),await $_(e,r.context,r.captureRun.workflowPath);let o=await dg(n.reportPath,r.report.contentDigest);if(o.headBranch!==r.context.head.ref)throw Error(`Trusted report branch does not match its verified pull request context`);let s=pv(i,r.context);return await vf(e,s,o),yf(t,s,o,n.statusContext,n.reportUrl,n.commentLanguage)}async function O_(e,t){let n=vv(t.captureWorkflowPath),r=Sv(t.baseBranch,`base branch`),i=f(t.outputDir),o=f(t.receiptPath);await _v(i,`Trusted Storybook output`);let s=await j_(o),c=A_(t.event,n);iv(s,c);let l=await e.getWorkflowRun(s.captureRun.id);av(l,s),await M_(e,l),await ov(e,s,c),Q_(await e.getPullRequest(s.context.prNumber),s.context,c,r),await $_(e,s.context,n);let u=f(t.temporaryRoot??a(i));if(kv(i,u))throw Error(`Trusted Storybook temporary root must be outside its output directory`);let d=await hv(u),p=f(d,`storybook`);try{let t=await I_(e,s.artifacts.headStorybook,536870912);return U_(t),await Og(t,p,B_),await fv(e,c,l,s.context,r,n),await ov(e,s,c),await _v(i,`Trusted Storybook output`),await y(a(i),{recursive:!0}),await ne(p,i),{receipt:s,receiptPath:o,context:s.context,artifact:s.artifacts.headStorybook,storybookDirectory:i}}finally{await re(d,{recursive:!0,force:!0})}}async function k_(e,t){let n=await j_(t.receiptPath),r=A_(t.event,n.captureRun.workflowPath);iv(n,r),av(await e.getWorkflowRun(n.captureRun.id),n);let i=t.trustedArtifactId,a=t.trustedArtifactDigest?uv(t.trustedArtifactDigest):void 0,o=[i,a];if(o.some(e=>e!==void 0)&&o.some(e=>e===void 0))throw Error(`trusted-artifact-id and trusted-artifact-digest must be provided together`);if(i!==void 0&&!Tv(i))throw Error(`trusted-artifact-id must be a positive integer`);let s=i!==void 0&&a!==void 0?dv():void 0,c=[];for(let t of sv(n)){let n=await e.getArtifact(t.id);n&&(cv(n,t,r),c.push({artifact:n,expected:t}))}if(i!==void 0&&a!==void 0&&s!==void 0){if(sv(n).some(e=>e.id===i))throw Error(`trusted-artifact-id must not duplicate a source artifact ID`);let t=await e.getArtifact(i);t&&(lv(t,a,s,n),c.push({artifact:t,expected:{id:t.id,name:t.name,sizeInBytes:t.sizeInBytes,digest:t.digest}}))}let l=[...new Set(c.map(({artifact:e})=>e.id))];for(let t of l)await e.deleteArtifact(t);return l}function A_(e,t){let n=Dv(e,`GitHub workflow_run event`);if(n.action!==`completed`)throw Error(`Kapture trusted run requires a completed workflow_run event`);let r=Dv(n.repository,`event repository`),i=yv(r.full_name,`event repository`),a=bv(i),o=wv(r.id,`event repository ID`),s=Dv(n.workflow_run,`workflow_run`),c=vv(Cv(s.path,`workflow path`));if(c!==vv(t))throw Error(`workflow_run path ${c} does not match ${t}`);if(s.status!==`completed`||s.conclusion!==`success`||s.event!==`pull_request`)throw Error(`Kapture trusted run requires one successful pull_request capture run`);let l=Dv(s.head_repository,`workflow_run head repository`),u=Ov(s.pull_requests,`workflow_run pull_requests`);if(u.length>1)throw Error(`workflow_run must contain at most one pull request`);let d=u[0]?mv(u[0]):void 0;return{repository:{id:o,fullName:i,ref:a},run:{id:wv(s.id,`workflow run ID`),runNumber:wv(s.run_number,`workflow run number`),attempt:wv(s.run_attempt,`workflow run attempt`),workflowId:wv(s.workflow_id,`workflow ID`),workflowPath:c,status:`completed`,conclusion:`success`,event:`pull_request`,headSha:xv(s.head_sha,`workflow run head SHA`),headBranch:Sv(s.head_branch,`workflow run head branch`),headRepository:{id:wv(l.id,`workflow run head repository ID`),fullName:yv(l.full_name,`workflow run head repository`)}},...d?{pullRequest:d}:{}}}async function j_(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size<1||n.size>65536)throw Error(`Trusted receipt must be a file no larger than 65536 bytes`);let r;try{r=JSON.parse(await x(t,`utf8`))}catch{throw Error(`Trusted receipt does not contain valid JSON`)}let i=T_.safeParse(r);if(!i.success){let e=i.error.issues[0];throw Error(`Invalid trusted receipt${e?.path.length?` at ${e.path.join(`.`)}`:``}: ${e?.message??`unknown error`}`)}return rv(i.data),i.data}async function M_(e,t){let n=(await e.listWorkflowRuns(t.workflowId,t.headBranch)).filter(e=>e.headRepositoryId===t.headRepository.id).reduce((e,t)=>e?t.runNumber===e.runNumber?t.id>e.id?t:e:t.runNumber>e.runNumber?t:e:t,void 0);if(!n||n.id!==t.id)throw Error(`A newer Kapture capture run owns this repository and branch`)}function N_(e,t){let n=/^kapture-context-pr-([1-9][0-9]*)-base-([0-9a-f]{40})-head-([0-9a-f]{40})$/,r=e.filter(e=>n.test(e.name)?F_(e,t):!1);if(r.length!==1||!r[0])throw Error(`Triggering run must contain exactly one immutable Kapture context artifact`);let i=r[0];if(i.sizeInBytes>33685504)throw Error(`Kapture context artifact exceeds its compressed size limit`);let a=i.name.match(n);if(!a?.[1]||!a[2]||!a[3])throw Error(`Kapture context artifact name is invalid`);let o=`kapture-visual-report-pr-${a[1]}-base-${a[2]}-head-${a[3]}`,s=e.filter(e=>e.name===o&&F_(e,t));if(s.length!==1||!s[0])throw Error(`Triggering run must contain exactly one matching Kapture report artifact`);if(s[0].sizeInBytes>629145600)throw Error(`Kapture report artifact exceeds its compressed size limit`);let c=`pr-${a[1]}-base-${a[2]}-head-${a[3]}`,l=P_(e,`kapture-storybook-base-${c}`,t),u=P_(e,`kapture-storybook-head-${c}`,t),d=[i,l,u,s[0]];if(new Set(d.map(e=>e.id)).size!==d.length||new Set(d.map(e=>e.name)).size!==d.length)throw Error(`Kapture artifact IDs and names must be distinct`);return{context:i,baseStorybook:l,headStorybook:u,report:s[0]}}function P_(e,t,n){let r=e.filter(e=>e.name===t&&F_(e,n));if(r.length!==1||!r[0])throw Error(`Triggering run must contain exactly one non-expired ${t} artifact`);if(r[0].sizeInBytes>536870912)throw Error(`${t} exceeds its compressed size limit`);return r[0]}function F_(e,t){return!e.expired&&e.workflowRun.id===t.run.id&&e.workflowRun.repositoryId===t.repository.id&&e.workflowRun.headRepositoryId===t.run.headRepository.id&&e.workflowRun.headBranch===t.run.headBranch&&e.workflowRun.headSha===t.run.headSha&&d_.test(e.digest)&&Tv(e.id)&&Tv(e.sizeInBytes)}async function I_(e,t,n){let r=await e.downloadArtifactArchive(t.id,n);if(r.byteLength!==t.sizeInBytes)throw Error(`Artifact ${t.id} download size does not match GitHub metadata`);if(`sha256:${T(`sha256`).update(r).digest(`hex`)}`!==t.digest)throw Error(`Artifact ${t.id} download digest does not match GitHub metadata`);return r}const L_={maxEntries:2,maxFileBytes:33554432,maxTotalBytes:33619968,allowPath:e=>e===`context.json`||e===`changed-files.json`,allowDirectoryPath:()=>!1},R_=new Set([`images/`,`images/base/`,`images/head/`,`images/diff/`]),z_={maxEntries:60006,maxFileBytes:ig,maxTotalBytes:629145600,allowPath:e=>e===`report.json`||e===`capture-boundary.json`||h_.test(e),allowDirectoryPath:e=>R_.has(e)},B_={maxEntries:s_,maxFileBytes:c_,maxTotalBytes:l_,allowPath:()=>!0,allowDirectoryPath:()=>!0};function V_(e){let t=Dg(e,L_);if(t.length!==2)throw Error(`Context archive must contain exactly context.json and changed-files.json`);let n=t.find(e=>e.path===`context.json`),r=t.find(e=>e.path===`changed-files.json`);if(!n||n.uncompressedBytes<1||n.uncompressedBytes>65536||!r||r.uncompressedBytes<1||r.uncompressedBytes>33554432)throw Error(`Context archive entries are outside their fixed size contract`)}function H_(e){let t=Dg(e,z_),n=new Set,r=0,i=0;for(let e of t){let t=e.path.toLocaleLowerCase(`en-US`);if(n.has(t))throw Error(`Report archive contains a case-insensitive duplicate: ${e.path}`);if(n.add(t),e.uncompressedBytes<1)throw Error(`Report archive contains an empty file: ${e.path}`);if(e.path===`report.json`&&(r+=1,e.uncompressedBytes>10485760))throw Error(`report.json exceeds its uncompressed size limit`);if(e.path===`capture-boundary.json`&&(i+=1,e.uncompressedBytes>65536))throw Error(`capture-boundary.json exceeds its uncompressed size limit`)}if(r!==1)throw Error(`Report archive must contain one root report.json file`);if(i!==1)throw Error(`Report archive must contain one root capture-boundary.json file`)}function U_(e){let t=Dg(e,B_),n=new Set,r=0;for(let e of t){let t=e.path.toLocaleLowerCase(`en-US`);if(n.has(t))throw Error(`Storybook archive contains a case-insensitive duplicate: ${e.path}`);n.add(t),e.path===`index.html`&&e.uncompressedBytes>0&&(r+=1)}if(r!==1)throw Error(`Storybook archive must contain one non-empty root index.html file`)}async function W_(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch(e){throw Error(`capture-boundary.json must contain valid JSON`,{cause:e})}return w_.parse(t)}function G_(e,t){for(let n of[`context`,`baseStorybook`,`headStorybook`]){let r=e.artifacts[n],i=t[n];if(i.id!==r.id||i.name!==r.name||i.digest!==r.digest)throw Error(`Capture ${n} artifact does not match its exact downloaded identity`)}}async function K_(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch{throw Error(`Kapture context artifact does not contain valid JSON`)}let n=x_.safeParse(t);if(!n.success){let e=n.error.issues[0];throw Error(`Invalid Kapture capture context${e?.path.length?` at ${e.path.join(`.`)}`:``}: ${e?.message??`unknown error`}`)}if(n.data.preview.branch!==n.data.head.ref||n.data.preview.alias!==Lg(n.data.prNumber,n.data.head.ref))throw Error(`Kapture context preview identity is not derived from its pull request branch`);return n.data}async function q_(e,t){let n=await C(e);if(!n.isFile()||n.size<1||n.size>33554432)throw Error(`changed-files.json is outside its fixed size contract`);let r;try{r=JSON.parse(await x(e,`utf8`))}catch{throw Error(`changed-files.json does not contain valid JSON`)}let i=Kg(r);if(i.pullRequest.number!==t.prNumber||i.pullRequest.baseSha!==t.base.sha||i.pullRequest.headSha!==t.head.sha)throw Error(`changed-files.json does not belong to the exact capture context`);return i}function J_(e,t){let n=e.coverage;if(!n)throw Error(`Trusted workflow reports must include audited story coverage`);let r=n.changedFilesEvidence;if(!r)throw Error(`Trusted workflow report coverage must include changed-files evidence`);let i=T(`sha256`).update(JSON.stringify(t)).digest(`hex`);if(r.provider!==t.source.provider||r.manifestDigest!==i||r.pullRequestNumber!==t.pullRequest.number||r.baseSha!==t.pullRequest.baseSha||r.headSha!==t.pullRequest.headSha)throw Error(`Trusted workflow report changed-files evidence does not match its verified context manifest`)}function Y_(e,t){let n=`kapture-context-${Ig(e)}`;if(t.name!==n)throw Error(`Kapture context contents do not match the immutable artifact name`)}function X_(e,t,n,r){if(e.runId!==n.id||e.base.repository!==t.repository.fullName||e.base.ref!==r||e.head.repository!==n.headRepository.fullName||e.head.repositoryId!==n.headRepository.id||e.head.ref!==n.headBranch)throw Error(`Kapture capture context does not belong to the triggering workflow run`);Z_(t,e)}function Z_(e,t){let n=e.pullRequest;if(n&&(n.number!==t.prNumber||n.base.repositoryId!==e.repository.id||n.base.ref!==t.base.ref||n.base.sha!==t.base.sha||n.head.repositoryId!==t.head.repositoryId||n.head.ref!==t.head.ref||n.head.sha!==t.head.sha))throw Error(`workflow_run pull request metadata conflicts with the capture context`)}function Q_(e,t,n,r){if(e.number!==t.prNumber||e.state!==`open`||e.base.repository.id!==n.repository.id||e.base.repository.fullName!==t.base.repository||e.base.ref!==r||e.base.sha!==t.base.sha||e.head.repository.id!==t.head.repositoryId||e.head.repository.fullName!==t.head.repository||e.head.ref!==t.head.ref||e.head.sha!==t.head.sha)throw Error(`Kapture artifacts are stale or do not belong to the current open pull request`);Z_(n,t)}async function $_(e,t,n){let[r,i]=await Promise.all([e.getContentSha(t.base.repository,n,t.base.sha),e.getContentSha(t.head.repository,n,t.head.sha)]);if(!u_.test(r)||i!==r)throw Error(`Pull requests that modify the capture workflow require separate review before publishing`)}function ev(e,t){if(e.id!==t.run.id||e.runNumber!==t.run.runNumber||e.runAttempt!==t.run.attempt||e.workflowId!==t.run.workflowId||e.path!==t.run.workflowPath||e.status!==`completed`||e.conclusion!==`success`||e.event!==`pull_request`||e.headSha!==t.run.headSha||e.headBranch!==t.run.headBranch||e.headRepository.id!==t.run.headRepository.id||e.headRepository.fullName!==t.run.headRepository.fullName||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Triggering capture run metadata changed or no longer matches the event`)}function tv(e,t,n,r,i){if(!i.contentDigest)throw Error(`Trusted report is missing contentDigest`);if(i.headBranch!==n.head.ref)throw Error(`Trusted report branch does not match its verified pull request context`);let a=Ig(n);return{schemaVersion:2,repository:{id:e.repository.id,fullName:e.repository.fullName},context:n,captureRun:{id:t.id,runNumber:t.runNumber,attempt:t.runAttempt,workflowId:t.workflowId,workflowPath:t.path,headSha:t.headSha,headBranch:t.headBranch,headRepositoryId:t.headRepository.id,headRepository:t.headRepository.fullName},artifacts:{context:nv(r.context),baseStorybook:nv(r.baseStorybook),headStorybook:nv(r.headStorybook),report:nv(r.report)},report:{contentDigest:i.contentDigest},trustedArtifactName:`kapture-trusted-report-${a}`}}function nv(e){return{id:e.id,name:e.name,sizeInBytes:e.sizeInBytes,digest:e.digest}}function rv(e){let t=Ig(e.context);if(e.context.runId!==e.captureRun.id||e.context.base.repository!==e.repository.fullName||e.context.head.repository!==e.captureRun.headRepository||e.context.head.repositoryId!==e.captureRun.headRepositoryId||e.context.head.ref!==e.captureRun.headBranch||e.context.preview.branch!==e.context.head.ref||e.context.preview.alias!==Lg(e.context.prNumber,e.context.head.ref)||e.artifacts.context.name!==`kapture-context-${t}`||e.artifacts.baseStorybook.name!==`kapture-storybook-base-${t}`||e.artifacts.headStorybook.name!==`kapture-storybook-head-${t}`||e.artifacts.report.name!==`kapture-visual-report-${t}`||e.trustedArtifactName!==`kapture-trusted-report-${t}`||new Set(sv(e).map(e=>e.id)).size!==4||new Set(sv(e).map(e=>e.name)).size!==4||e.artifacts.context.sizeInBytes>33685504||e.artifacts.baseStorybook.sizeInBytes>536870912||e.artifacts.headStorybook.sizeInBytes>536870912||e.artifacts.report.sizeInBytes>629145600||!m_.test(e.captureRun.workflowPath))throw Error(`Trusted receipt fields are not internally consistent`)}function iv(e,t){if(rv(e),e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName||e.captureRun.id!==t.run.id||e.captureRun.runNumber!==t.run.runNumber||e.captureRun.attempt!==t.run.attempt||e.captureRun.workflowId!==t.run.workflowId||e.captureRun.workflowPath!==t.run.workflowPath||e.captureRun.headSha!==t.run.headSha||e.captureRun.headBranch!==t.run.headBranch||e.captureRun.headRepositoryId!==t.run.headRepository.id||e.captureRun.headRepository!==t.run.headRepository.fullName)throw Error(`Trusted receipt does not belong to the triggering workflow_run event`);Z_(t,e.context)}function av(e,t){if(e.id!==t.captureRun.id||e.runNumber!==t.captureRun.runNumber||e.runAttempt!==t.captureRun.attempt||e.workflowId!==t.captureRun.workflowId||e.path!==t.captureRun.workflowPath||e.status!==`completed`||e.conclusion!==`success`||e.event!==`pull_request`||e.headSha!==t.captureRun.headSha||e.headBranch!==t.captureRun.headBranch||e.headRepository.id!==t.captureRun.headRepositoryId||e.headRepository.fullName!==t.captureRun.headRepository||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Capture run changed after prepare-run verification`)}async function ov(e,t,n){let r=await e.listRunArtifacts(t.captureRun.id);for(let e of sv(t)){let t=r.filter(t=>t.id===e.id);if(t.length!==1||!t[0])throw Error(`Receipt-bound artifact ${e.id} is no longer available`);cv(t[0],e,n)}}function sv(e){return[e.artifacts.context,e.artifacts.baseStorybook,e.artifacts.headStorybook,e.artifacts.report]}function cv(e,t,n){if(e.id!==t.id||e.name!==t.name||e.sizeInBytes!==t.sizeInBytes||e.digest!==t.digest||!F_(e,n))throw Error(`Artifact ${t.id} no longer matches its trusted receipt binding`)}function lv(e,t,n,r){if(e.expired||e.name!==r.trustedArtifactName||e.digest!==t||e.workflowRun.id!==n||e.workflowRun.repositoryId!==r.repository.id||e.workflowRun.headRepositoryId!==r.repository.id||e.sizeInBytes>629145600)throw Error(`Trusted report artifact does not match the exact cleanup binding`)}function uv(e){let t=e.startsWith(`sha256:`)?e:`sha256:${e}`;if(!d_.test(t))throw Error(`trusted-artifact-digest must be a 64-character SHA-256 digest`);return t}function dv(){let e=process.env.GITHUB_RUN_ID;if(!e||!/^[1-9][0-9]*$/.test(e))throw Error(`GITHUB_RUN_ID must identify the current trusted reporter workflow run`);let t=Number(e);if(!Number.isSafeInteger(t))throw Error(`GITHUB_RUN_ID must be a safe positive integer`);return t}async function fv(e,t,n,r,i,a){let o=await e.getWorkflowRun(n.id);ev(o,t),await M_(e,o),Q_(await e.getPullRequest(r.prNumber),r,t,i),await $_(e,r,a)}function pv(e,t){return{repository:e.repository.ref,issueNumber:t.prNumber,headSha:t.head.sha,captureRunId:e.run.id,captureRunAttempt:e.run.attempt,captureWorkflowId:e.run.workflowId,captureRunHeadBranch:e.run.headBranch,captureRunHeadRepositoryId:e.run.headRepository.id}}function mv(e){let t=Dv(e,`workflow_run pull request`),n=Dv(t.base,`workflow_run pull request base`),r=Dv(t.head,`workflow_run pull request head`);return{number:wv(t.number,`workflow_run pull request number`),base:{repositoryId:wv(Dv(n.repo,`workflow_run pull request base repository`).id,`workflow_run pull request base repository ID`),ref:Sv(n.ref,`workflow_run pull request base ref`),sha:xv(n.sha,`workflow_run pull request base SHA`)},head:{repositoryId:wv(Dv(r.repo,`workflow_run pull request head repository`).id,`workflow_run pull request head repository ID`),ref:Sv(r.ref,`workflow_run pull request head ref`),sha:xv(r.sha,`workflow_run pull request head SHA`)}}}async function hv(e){let t=f(e??process.env.RUNNER_TEMP??ce());return await y(t,{recursive:!0}),b(`${t}${p}kapture-prepare-`)}async function gv(e,t){let n=f(e),r=f(n,`..`);await y(r,{recursive:!0}),await w(n,`${JSON.stringify(t,null,2)}\n`,{flag:`wx`})}async function _v(e,t){try{await C(e)}catch(e){if(e.code===`ENOENT`)return;throw e}throw Error(`${t} already exists: ${e}`)}function vv(e){if(!m_.test(e)||e.includes(`//`)||e.includes(`..`))throw Error(`capture-workflow-path must be a safe .github/workflows YAML path`);return e}function yv(e,t){let n=Cv(e,`${t} full name`);if(!p_.test(n))throw Error(`${t} full name is invalid`);return n}function bv(e){let[t,n,...r]=e.split(`/`);if(!t||!n||r.length>0)throw Error(`Repository full name is invalid`);return{owner:t,repo:n}}function xv(e,t){let n=Cv(e,t);if(!u_.test(n))throw Error(`${t} must be a lowercase full SHA`);return n}function Sv(e,t){let n=Cv(e,t);if(Ev(n))throw Error(`${t} contains control characters`);return n}function Cv(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);return e}function wv(e,t){if(!Tv(e))throw Error(`${t} must be a positive integer`);return e}function Tv(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function Ev(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127})}function Dv(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Ov(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}function kv(e,t){let n=d(e,t);return n===``||!s(n)&&n!==`..`&&!n.startsWith(`..${p}`)}function Av(e){let t=e.KAPTURE_ARTIFACT_SUFFIX;if(!t||!/^pr-[1-9][0-9]*-base-[0-9a-f]{40}-head-[0-9a-f]{40}$/.test(t))throw Error(`KAPTURE_ARTIFACT_SUFFIX must identify exact PR/base/head revisions`);let n=(n,r)=>{let i=e[`KAPTURE_${n}_ARTIFACT_ID`]??``,a=e[`KAPTURE_${n}_ARTIFACT_DIGEST`]??``;if(!/^[1-9][0-9]*$/.test(i)||!/^[0-9a-f]{64}$/.test(a))throw Error(`${n} requires an artifact ID and SHA-256 digest`);return{id:Number(i),name:`${r}-${t}`,digest:`sha256:${a}`}};return w_.parse({schemaVersion:1,artifacts:{context:n(`CONTEXT`,`kapture-context`),baseStorybook:n(`BASE`,`kapture-storybook-base`),headStorybook:n(`HEAD`,`kapture-storybook-head`)}})}A();const jv=k({meta:{name:`bind-artifacts`,description:`Record the exact downloaded artifact identities for trusted publication`},args:{output:{type:`string`,required:!0,description:`New capture-boundary.json path inside the raw report`}},async run({args:e}){let t=Av(process.env);await w(f(e.output),`${JSON.stringify(t)}\n`,{flag:`wx`,mode:384})}});var Mv=class{#e;#t;#n;constructor(e,t,n=fetch){if(!e)throw Error(`GITHUB_TOKEN is required`);this.#e=e,this.#t=t,this.#n=n}async getWorkflowRun(e){return Pv(await this.#i(`GET`,`${this.#r()}/actions/runs/${e}`))}async listWorkflowRuns(e,t){let n=[];for(let r=1;r<=10;r+=1){let i=new URLSearchParams({event:`pull_request`,branch:t,per_page:`100`,page:String(r)}),a=Bv($(await this.#i(`GET`,`${this.#r()}/actions/workflows/${e}/runs?${i}`),`workflow runs response`).workflow_runs,`workflow_runs`).map(Fv);if(n.push(...a),a.length<100)return n}throw Error(`GitHub returned more than 1000 workflow runs`)}async listRunArtifacts(e){let t=[];for(let n=1;n<=10;n+=1){let r=new URLSearchParams({per_page:`100`,page:String(n)}),i=Bv($(await this.#i(`GET`,`${this.#r()}/actions/runs/${e}/artifacts?${r}`),`artifacts response`).artifacts,`artifacts`).map(Iv);if(t.push(...i),i.length<100)return t}throw Error(`GitHub returned more than 1000 workflow artifacts`)}async getArtifact(e){let t=await this.#o(`GET`,`${this.#r()}/actions/artifacts/${e}`);return t.status===404?null:(await Nv(t,`GET`,`/actions/artifacts/${e}`),Iv(await t.json()))}async listCaptureCacheArtifacts(e){let t=new URLSearchParams({name:e,per_page:`10`});return Bv($(await this.#i(`GET`,`${this.#r()}/actions/artifacts?${t}`),`cache artifacts`).artifacts,`artifacts`).map(Iv)}async isMergedCaptureRun(e,t){let n=Bv($(await this.#i(`GET`,`${this.#r()}/actions/runs/${e}`),`capture run`).pull_requests,`pull_requests`);n.length===0&&/^[a-f0-9]{40}$/.test(t)&&(n=Bv(await this.#i(`GET`,`${this.#r()}/commits/${t}/pulls?per_page=5`),`associated pull requests`));for(let e of n.slice(0,5)){let n=$(e,`pull request`).number;if(!Number.isSafeInteger(n)||Number(n)<=0)continue;let r=$(await this.#i(`GET`,`${this.#r()}/pulls/${n}`),`pull request`);if(r.merged===!0&&$(r.head,`head`).sha===t)return!0}return!1}async downloadArtifactArchive(e,t){if(!Number.isSafeInteger(t)||t<=0)throw Error(`Artifact download byte limit must be positive`);let n=await this.#o(`GET`,`${this.#r()}/actions/artifacts/${e}/zip`,`manual`),r=await this.#a(n,e);await Nv(r,`GET`,`/actions/artifacts/${e}/zip`);let i=r.headers.get(`content-length`);if(i!==null){let n=Number(i);if(!Number.isSafeInteger(n)||n<0||n>t)throw Error(`Artifact ${e} exceeds the ${t} byte download limit`)}if(!r.body)throw Error(`Artifact ${e} download returned no body`);let a=r.body.getReader(),o=[],s=0;try{for(;;){let{done:n,value:r}=await a.read();if(n)break;if(s+=r.byteLength,s>t)throw await a.cancel(),Error(`Artifact ${e} exceeds the ${t} byte download limit`);o.push(Buffer.from(r))}}finally{a.releaseLock()}if(s<1)throw Error(`Artifact ${e} download is empty`);return Buffer.concat(o,s)}async deleteArtifact(e){let t=await this.#o(`DELETE`,`${this.#r()}/actions/artifacts/${e}`);t.status!==404&&await Nv(t,`DELETE`,`/actions/artifacts/${e}`)}async getPullRequest(e){return Lv(await this.#i(`GET`,`${this.#r()}/pulls/${e}`))}async listOpenPullRequestsForHead(e,t,n){let r=zv(e),i=[];for(let e=1;e<=10;e+=1){let a=new URLSearchParams({state:`open`,base:n,head:`${r.owner}:${t}`,per_page:`100`,page:String(e)}),o=Bv(await this.#i(`GET`,`${this.#r()}/pulls?${a}`),`pull requests response`).map(Lv);if(i.push(...o),o.length<100)return i}throw Error(`GitHub returned more than 1000 matching pull requests`)}async getContentSha(e,t,n){let r=zv(e),i=t.split(`/`).map(encodeURIComponent).join(`/`),a=new URLSearchParams({ref:n});return Gv($(await this.#i(`GET`,`/repos/${encodeURIComponent(r.owner)}/${encodeURIComponent(r.repo)}/contents/${i}?${a}`),`contents response`).sha,`contents SHA`)}#r(){let{owner:e,repo:t}=this.#t;return`/repos/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}async#i(e,t){let n=await this.#o(e,t);return await Nv(n,e,t),n.json()}async#a(e,t){if(e.status<300||e.status>399)return e;let n=e.headers.get(`location`);if(!n)throw Error(`Artifact ${t} redirect is missing its location`);let r;try{r=new URL(n)}catch{throw Error(`Artifact ${t} redirect location is invalid`)}if(r.protocol!==`https:`||r.username||r.password)throw Error(`Artifact ${t} redirect must be a credential-free HTTPS URL`);return this.#n(r,{method:`GET`,headers:{Accept:`application/octet-stream`,"User-Agent":`kapture-cli`},redirect:`follow`})}#o(e,t,n=`follow`){return this.#n(`https://api.github.com${t}`,{method:e,headers:{Accept:`application/vnd.github+json`,Authorization:`Bearer ${this.#e}`,"X-GitHub-Api-Version":`2022-11-28`,"User-Agent":`kapture-cli`},redirect:n})}};async function Nv(e,t,n){if(!e.ok)throw Error(`GitHub API ${t} ${n} failed with status ${e.status}`)}function Pv(e){let t=$(e,`workflow run`);return{id:Vv(t.id,`workflow run ID`),runNumber:Vv(t.run_number,`workflow run number`),runAttempt:Vv(t.run_attempt,`workflow run attempt`),workflowId:Vv(t.workflow_id,`workflow ID`),path:Hv(t.path,`workflow path`),status:Hv(t.status,`workflow run status`),conclusion:Uv(t.conclusion,`workflow run conclusion`),event:Hv(t.event,`workflow run event`),headSha:Gv(t.head_sha,`workflow run head SHA`),headBranch:Hv(t.head_branch,`workflow run head branch`),headRepository:Rv(t.head_repository,`workflow run head repository`),repository:Rv(t.repository,`workflow run repository`)}}function Fv(e){let t=$(e,`workflow run candidate`);return{id:Vv(t.id,`workflow run ID`),runNumber:Vv(t.run_number,`workflow run number`),headRepositoryId:Vv($(t.head_repository,`workflow run head repository`).id,`workflow run head repository ID`)}}function Iv(e){let t=$(e,`workflow artifact`),n=$(t.workflow_run,`artifact workflow run`);return{id:Vv(t.id,`artifact ID`),name:Hv(t.name,`artifact name`),sizeInBytes:Vv(t.size_in_bytes,`artifact size`),digest:Kv(t.digest,`artifact digest`),expired:Wv(t.expired,`artifact expired`),workflowRun:{id:Vv(n.id,`artifact workflow run ID`),repositoryId:Vv(n.repository_id,`artifact workflow repository ID`),headRepositoryId:Vv(n.head_repository_id,`artifact workflow head repository ID`),headBranch:Hv(n.head_branch,`artifact workflow head branch`),headSha:Gv(n.head_sha,`artifact workflow head SHA`)}}}function Lv(e){let t=$(e,`pull request`),n=$(t.base,`pull request base`),r=$(t.head,`pull request head`),i=Hv(t.state,`pull request state`);if(i!==`open`&&i!==`closed`)throw Error(`Pull request state is invalid`);return{number:Vv(t.number,`pull request number`),state:i,base:{ref:Hv(n.ref,`pull request base ref`),sha:Gv(n.sha,`pull request base SHA`),repository:Rv(n.repo,`pull request base repository`)},head:{ref:Hv(r.ref,`pull request head ref`),sha:Gv(r.sha,`pull request head SHA`),repository:Rv(r.repo,`pull request head repository`)}}}function Rv(e,t){let n=$(e,t),r=Hv(n.full_name,`${t} full name`);return zv(r),{id:Vv(n.id,`${t} ID`),fullName:r}}function zv(e){let t=e.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!t?.[1]||!t[2])throw Error(`Repository full name is invalid`);return{owner:t[1],repo:t[2]}}function $(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Bv(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}function Vv(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function Hv(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);for(let n of e){let e=n.codePointAt(0)??0;if(e<=31||e===127)throw Error(`${t} contains control characters`)}return e}function Uv(e,t){return e===null?null:Hv(e,t)}function Wv(e,t){if(typeof e!=`boolean`)throw Error(`${t} must be a boolean`);return e}function Gv(e,t){if(typeof e!=`string`||!/^[0-9a-f]{40}$/.test(e))throw Error(`${t} must be a lowercase full SHA`);return e}function Kv(e,t){if(typeof e!=`string`||!/^sha256:[0-9a-f]{64}$/.test(e))throw Error(`${t} must be a SHA-256 digest`);return e}A();const qv=k({meta:{name:`cleanup`,description:`Delete only exact receipt-bound Kapture artifact IDs`},args:{receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},"trusted-artifact-id":{type:`string`,description:`Exact current trusted report artifact ID`},"trusted-artifact-digest":{type:`string`,description:`upload-artifact SHA-256 digest for the current trusted report artifact`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf(),r=Yv(n),i=e[`trusted-artifact-id`]?Jv(e[`trusted-artifact-id`],`trusted-artifact-id`):void 0,a=await k_(new Mv(t,r),{event:n,receiptPath:f(e.receipt),...i===void 0?{}:{trustedArtifactId:i},...e[`trusted-artifact-digest`]?{trustedArtifactDigest:e[`trusted-artifact-digest`]}:{}});await W({"deleted-artifact-count":a.length,"deleted-artifact-ids":a.join(`,`)})}});function Jv(e,t){if(!/^[1-9][0-9]*$/.test(e))throw Error(`${t} must be a positive integer`);let n=Number(e);if(!Number.isSafeInteger(n))throw Error(`${t} must be a safe integer`);return n}function Yv(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}A();const Xv=k({meta:{name:`context`,description:`Validate a pull request event and write immutable Kapture capture context`},args:{"allow-initial-adoption":{type:`boolean`,default:!1,description:`Explicitly allow head-only setup validation when the base has no adapter`},"adapter-package-json":{type:`string`,description:`Optional project-relative package.json to check for the adapter on the exact base revision`},output:{type:`string`,required:!0,description:`Path for the normalized context JSON`},"changed-files-output":{type:`string`,required:!0,description:`Path for the versioned changed-files manifest`},"base-branch":{type:`string`,description:`Expected pull request base branch`}},async run({args:e}){let t=Fg(await cf(),e[`base-branch`]),n=process.env.GITHUB_TOKEN;if(!n)throw Error(`GITHUB_TOKEN is required`);let[r,i]=t.base.repository.split(`/`);if(!r||!i)throw Error(`Capture context repository is invalid`);let o=new af(n,{owner:r,repo:i});if(e[`allow-initial-adoption`]&&!e[`adapter-package-json`])throw Error(`allow-initial-adoption requires adapter-package-json`);if(e[`allow-initial-adoption`]&&t.base.repository!==t.head.repository)throw Error(`Fork initial adoption is not supported`);let s=await Gg(o,t),c=e[`adapter-package-json`]?Zv(await o.readPackageManifest(e[`adapter-package-json`],t.base.sha),e[`allow-initial-adoption`]?{allowInitialAdoption:!0,headManifest:await o.readPackageManifest(e[`adapter-package-json`],t.head.sha),adapterVersion:Qe}:void 0):`compare`,l=f(e.output),u=f(e[`changed-files-output`]);if(l===u)throw Error(`output and changed-files-output must be different paths`);await Promise.all([y(a(l),{recursive:!0}),y(a(u),{recursive:!0})]),await Promise.all([w(l,`${JSON.stringify(t,null,2)}\n`,{flag:`wx`}),w(u,`${JSON.stringify(s,null,2)}\n`,{flag:`wx`})]),await W({"integration-mode":c,"artifact-suffix":Ig(t),"base-repository":t.base.repository,"base-ref":t.base.ref,"base-sha":t.base.sha,"changed-files-complete":String(s.complete),"changed-files-count":s.files.length,"changed-files-path":u,"context-path":l,"head-repository":t.head.repository,"head-repository-id":t.head.repositoryId,"head-ref":t.head.ref,"head-sha":t.head.sha,"pr-number":t.prNumber,"preview-branch":t.preview.branch,"preview-alias":t.preview.alias})}});function Zv(e,t){let n=Qv(e);if(t?.allowInitialAdoption){if(Qv(t.headManifest)!==t.adapterVersion)throw Error(`Head adapter must match the exact CLI version`);if(n===void 0)return`initial-adoption`;if(n!==t.adapterVersion)throw Error(`Base adapter must match the exact CLI version; not initial adoption`)}if(n!==void 0)return`compare`;throw Error(`The selected base package manifest does not declare @kaptures/storybook. Select the adapter's workspace manifest or omit --adapter-package-json to validate the built Storybook at capture time.`)}function Qv(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Invalid package manifest`);let t=e,n;for(let e of[`dependencies`,`devDependencies`]){let r=t[e];if(r!==void 0&&(!r||typeof r!=`object`||Array.isArray(r)))throw Error(`Invalid package dependencies`);let i=r?.[`@kaptures/storybook`];if(r&&Object.hasOwn(r,`@kaptures/storybook`)){if(typeof i!=`string`||!i.trim())throw Error(`Invalid adapter declaration`);if(n!==void 0&&n!==i)throw Error(`Conflicting adapter declarations`);n=i}}return n}const $v=/^[0-9a-f]{40}$/,ey=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,ty=/^\.github\/workflows\/[A-Za-z0-9_./-]+\.ya?ml$/,ny=`Base branch changed; rerun visual capture`,ry=new Set([`action_required`,`cancelled`,`failure`,`neutral`,`skipped`,`stale`,`startup_failure`,`success`,`timed_out`]);async function iy(e,t,n){let r=wy(n.captureWorkflowPath),i=Oy(n.baseBranch,`base branch`),a=qd(n.statusContext),o=sy(n.event,r),s=await cy(e,o,i);if(!s.ok)return xy(s.reason);if(await py(t,o,s.target))return xy(`final-report-exists`,s.target);let c=await cy(e,o,i);if(!c.ok)return xy(c.reason,s.target);if(!by(s.target,c.target))return xy(`pull-request-changed`,c.target);if(await py(t,o,c.target))return xy(`final-report-exists`,c.target);let l=vy(o,c.target);return await t.setReviewStatus(c.target.headSha,l.state,l.description,a),{status:l.state,reason:`status-written`,prNumber:c.target.prNumber,headSha:c.target.headSha}}async function ay(e,t,n){let r=wy(n.captureWorkflowPath),i=Oy(n.baseBranch,`base branch`),a=qd(n.statusContext),o=oy(n.event,r),s=await cy(e,o,i);if(!s.ok)return Sy(s.reason);let c=hy(o,await my(t,o,s.target,a),s.target);if(c)return Sy(c,s.target);let l=await cy(e,o,i);if(!l.ok)return Sy(l.reason,s.target);if(!by(s.target,l.target))return Sy(`pull-request-changed`,l.target);let u=hy(o,await my(t,o,l.target,a),l.target);if(u)return Sy(u,l.target);let d=l.target.baseDrift?ny:o.run.conclusion===`success`?`Visual report publication did not complete`:`Visual capture did not succeed (${o.run.conclusion})`;return await t.setReviewStatus(l.target.headSha,`error`,d,a),{status:`error`,reason:`status-written`,prNumber:l.target.prNumber,headSha:l.target.headSha}}function oy(e,t){let n=sy(e,t);if(n.run.status!==`completed`)throw Error(`Kapture finalize-run requires a completed workflow_run event`);return{...n,run:{...n.run,status:`completed`}}}function sy(e,t){let n=Ny(e,`GitHub workflow_run event`),r=Ay(n.action,`workflow_run action`);if(r!==`in_progress`&&r!==`completed`)throw Error(`Kapture reconcile-run requires an in_progress or completed workflow_run event`);let i=Ny(n.repository,`event repository`),a=Ty(i.full_name,`event repository`),o=jy(i.id,`event repository ID`),s=Ny(n.workflow_run,`workflow_run`),c=wy(Ay(s.path,`workflow path`));if(c!==wy(t))throw Error(`workflow_run path ${c} does not match ${t}`);if(s.event!==`pull_request`)throw Error(`Kapture reconcile-run requires a pull_request capture run`);let l=Ay(s.status,`workflow run status`),u=ky(s.conclusion,`workflow run conclusion`);if(r===`in_progress`&&(l!==`in_progress`||u!==null))throw Error(`An in_progress workflow_run event must describe an unfinished run`);if(r===`completed`&&(l!==`completed`||u===null||!ry.has(u)))throw Error(`A completed workflow_run event must have a supported conclusion`);let d=Ny(s.head_repository,`workflow_run head repository`),f={id:jy(d.id,`workflow run head repository ID`),fullName:Ty(d.full_name,`workflow run head repository`)},p=Oy(s.head_branch,`workflow run head branch`),m=Py(s.pull_requests,`workflow_run pull requests`);if(m.length>1)throw Error(`workflow_run must contain at most one pull request`);let h=m[0]?Cy(m[0]):void 0;if(h&&(h.base.repositoryId!==o||h.head.repositoryId!==f.id||h.head.ref!==p))throw Error(`workflow_run pull request metadata conflicts with run provenance`);return{repository:{id:o,fullName:a,ref:Ey(a)},run:{id:jy(s.id,`workflow run ID`),runNumber:jy(s.run_number,`workflow run number`),attempt:jy(s.run_attempt,`workflow run attempt`),workflowId:jy(s.workflow_id,`workflow ID`),workflowPath:c,status:l,conclusion:u,event:`pull_request`,headSha:Dy(s.head_sha,`workflow run head SHA`),headBranch:p,headRepository:f},...h?{pullRequest:h}:{}}}async function cy(e,t,n){let r=await e.getWorkflowRun(t.run.id);return ly(r,t),r.runAttempt===t.run.attempt?r.status!==t.run.status||r.conclusion!==t.run.conclusion?{ok:!1,reason:`stale-run-state`}:await uy(e,r)?dy(e,t,n):{ok:!1,reason:`superseded-run`}:{ok:!1,reason:`stale-run-attempt`}}function ly(e,t){if(e.id!==t.run.id||e.runNumber!==t.run.runNumber||e.workflowId!==t.run.workflowId||wy(e.path)!==t.run.workflowPath||e.event!==`pull_request`||e.headSha!==t.run.headSha||e.headBranch!==t.run.headBranch||e.headRepository.id!==t.run.headRepository.id||e.headRepository.fullName!==t.run.headRepository.fullName||e.repository.id!==t.repository.id||e.repository.fullName!==t.repository.fullName)throw Error(`Triggering capture run identity no longer matches the workflow_run event`)}async function uy(e,t){let n=(await e.listWorkflowRuns(t.workflowId,t.headBranch)).filter(e=>e.headRepositoryId===t.headRepository.id);if(n.filter(e=>e.id===t.id).some(e=>e.runNumber!==t.runNumber))throw Error(`Latest workflow run metadata conflicts with the triggering run`);return n.reduce((e,t)=>e?t.runNumber===e.runNumber?t.id>e.id?t:e:t.runNumber>e.runNumber?t:e:t,void 0)?.id===t.id}async function dy(e,t,n){if(t.pullRequest){if(t.pullRequest.base.ref!==n)return{ok:!1,reason:`base-branch-mismatch`};let r=await e.getPullRequest(t.pullRequest.number);return fy(r,t,n)?{ok:!0,target:yy(r,r.base.sha!==t.pullRequest.base.sha)}:{ok:!1,reason:`pull-request-not-current`}}let r=(await e.listOpenPullRequestsForHead(t.run.headRepository.fullName,t.run.headBranch,n)).filter(e=>e.state===`open`&&e.base.repository.id===t.repository.id&&e.base.repository.fullName===t.repository.fullName&&e.base.ref===n&&e.head.repository.id===t.run.headRepository.id&&e.head.repository.fullName===t.run.headRepository.fullName&&e.head.ref===t.run.headBranch);return r.length===0?{ok:!1,reason:`pull-request-not-found`}:r.length===1?{ok:!0,target:yy(r[0])}:{ok:!1,reason:`pull-request-ambiguous`}}function fy(e,t,n){let r=t.pullRequest;return!!(r&&e.number===r.number&&e.state===`open`&&e.base.repository.id===t.repository.id&&e.base.repository.fullName===t.repository.fullName&&e.base.ref===n&&e.head.repository.id===t.run.headRepository.id&&e.head.repository.fullName===t.run.headRepository.fullName&&e.head.ref===t.run.headBranch&&e.head.sha===r.head.sha)}async function py(e,t,n){return _y(await e.findCurrentReportMarker(n.prNumber,n.baseSha,n.headSha),t)}async function my(e,t,n,r){let i=await e.findCurrentReportMarker(n.prNumber,n.baseSha,n.headSha),a=await e.getLatestReviewStatus(n.headSha,r);return{marker:_y(i,t)?i:null,status:a}}function hy(e,t,n){return n.baseDrift&&t.status?.state===`error`&&t.status.description===ny?`base-drift-already-recorded`:e.run.conclusion===`success`?gy(t)?`final-report-exists`:t.status?.state===`error`&&t.status.description===`Visual report publication did not complete`?`publication-failure-already-recorded`:void 0:t.status?.state===`error`?`capture-failure-already-recorded`:void 0}function gy(e){let{marker:t,status:n}=e;return!t?.reportUrl||!n||t.reportUrl!==n.targetUrl?!1:t.status===`clean`?n.state===`success`&&n.description===`No visual changes`:t.status===`changed`?n.state===`pending`&&n.description===`Visual changes require approval`:n.state===`failure`}function _y(e,t){return!!(e&&e.captureRunId===t.run.id&&e.captureRunAttempt===t.run.attempt&&e.captureWorkflowId===t.run.workflowId&&e.captureRunHeadBranch===t.run.headBranch&&e.captureRunHeadRepositoryId===t.run.headRepository.id)}function vy(e,t){return t.baseDrift?{state:`error`,description:ny}:e.run.status===`in_progress`?{state:`pending`,description:`Visual capture is in progress`}:e.run.conclusion===`success`?{state:`pending`,description:`Visual report is awaiting publication`}:{state:`error`,description:`Visual capture did not succeed (${e.run.conclusion})`}}function yy(e,t=!1){return{prNumber:e.number,baseSha:e.base.sha,headSha:e.head.sha,baseDrift:t}}function by(e,t){return e.prNumber===t.prNumber&&e.baseSha===t.baseSha&&e.headSha===t.headSha&&e.baseDrift===t.baseDrift}function xy(e,t){return{status:`noop`,reason:e,...t?{prNumber:t.prNumber,headSha:t.headSha}:{}}}function Sy(e,t){return{status:`noop`,reason:e,...t?{prNumber:t.prNumber,headSha:t.headSha}:{}}}function Cy(e){let t=Ny(e,`workflow_run pull request`),n=Ny(t.base,`workflow_run pull request base`),r=Ny(t.head,`workflow_run pull request head`);return{number:jy(t.number,`workflow_run pull request number`),base:{repositoryId:jy(Ny(n.repo,`workflow_run pull request base repository`).id,`workflow_run pull request base repository ID`),ref:Oy(n.ref,`workflow_run pull request base ref`),sha:Dy(n.sha,`workflow_run pull request base SHA`)},head:{repositoryId:jy(Ny(r.repo,`workflow_run pull request head repository`).id,`workflow_run pull request head repository ID`),ref:Oy(r.ref,`workflow_run pull request head ref`),sha:Dy(r.sha,`workflow_run pull request head SHA`)}}}function wy(e){if(!ty.test(e)||e.includes(`//`)||e.includes(`..`))throw Error(`capture-workflow-path must be a safe .github/workflows YAML path`);return e}function Ty(e,t){let n=Ay(e,`${t} full name`);if(!ey.test(n))throw Error(`${t} full name is invalid`);return n}function Ey(e){let[t,n,...r]=e.split(`/`);if(!t||!n||r.length>0)throw Error(`Repository full name is invalid`);return{owner:t,repo:n}}function Dy(e,t){let n=Ay(e,t);if(!$v.test(n))throw Error(`${t} must be a lowercase full SHA`);return n}function Oy(e,t){let n=Ay(e,t);if(My(n))throw Error(`${t} contains control characters`);return n}function ky(e,t){return e===null?null:Ay(e,t)}function Ay(e,t){if(typeof e!=`string`||e.length<1||e.length>512)throw Error(`${t} must be a non-empty bounded string`);if(My(e))throw Error(`${t} contains control characters`);return e}function jy(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer`);return e}function My(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=31||t===127})}function Ny(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Py(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e}const Fy={"allow-initial-adoption":{type:`boolean`,default:!1},"adapter-package-json":{type:`string`}};async function Iy(e,t,n){if(!t[`allow-initial-adoption`])return!1;let r=t[`adapter-package-json`];if(!r)throw Error(`allow-initial-adoption requires adapter-package-json`);let i=process.env.GITHUB_TOKEN;if(!n&&!i)throw Error(`GITHUB_TOKEN is required`);let a=sy(e,t[`capture-workflow-path`]);if(a.run.headRepository.fullName!==a.repository.fullName)throw Error(`Fork initial adoption is not supported`);let o=await cy(n?.runs??new Mv(i,a.repository.ref),a,t[`base-branch`]);if(!o.ok||o.target.baseDrift)return!1;let s=n?.readPackageManifest??((e,t)=>new af(i,a.repository.ref).readPackageManifest(e,t));return Zv(await s(r,o.target.baseSha),{allowInitialAdoption:!0,adapterVersion:Qe,headManifest:await s(r,o.target.headSha)})===`initial-adoption`}A();const Ly=k({meta:{name:`finalize-run`,description:`Close an unfinished status for the exact completed trusted workflow run`},args:{...Fy,"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf();if(await Iy(n,e)){await W({status:`noop`,"finalize-reason":`initial-adoption-not-compared`});return}let r=Ry(n),i=await ay(new Mv(t,r),new af(t,r),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],statusContext:qd(e[`status-context`])});await W({status:i.status,"finalize-reason":i.reason,...i.prNumber===void 0?{}:{"pr-number":i.prNumber},...i.headSha?{"head-sha":i.headSha}:{}})}});function Ry(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}const zy={files:s_,fileBytes:c_,totalBytes:l_};function By(e,t){if(!t||s(t)||!/^[A-Za-z0-9._/-]+$/.test(t)||t.split(`/`).some(e=>!e||e===`.`||e===`..`))throw Error(`Storybook directory must be a project-relative path without dot segments`);return f(e,t)}async function Vy(e,t,n=zy){let r=By(e,t),i=await te(e),a=f(e);for(let e of t.split(`/`)){a=c(a,e);let t=await v(a);if(t.isSymbolicLink()||!t.isDirectory())throw Error(`Storybook path must contain only non-symlink directories`)}let o=await te(r),l=d(i,o);if(l===`..`||l.startsWith(`..${p}`)||s(l))throw Error(`Storybook directory escapes the project root`);let u=(await v(r)).dev,m=[r],h=0,g=0,_=0;for(;m.length;){let e=m.pop();if(!e)break;for(let t of await S(e)){if(_++,_>n.files)throw Error(`Storybook exceeds its entry count boundary`);let r=c(e,t),i=await v(r);if(i.isSymbolicLink()||i.dev!==u)throw Error(`Storybook must not contain symbolic links or cross-device entries`);if(i.isDirectory()){m.push(r);continue}if(!i.isFile())throw Error(`Storybook must contain only regular files and directories`);if(h++,g+=i.size,h>n.files||i.size>n.fileBytes||g>n.totalBytes)throw Error(`Storybook exceeds its file or size boundary`)}}for(let e of[`index.html`,`iframe.html`,`index.json`])if(!(await v(c(r,e))).isFile())throw Error(`Storybook is missing a regular ${e}`);return{directory:r,files:h,bytes:g}}const Hy=`<!-- kapture-preview -->`;function Uy(e,t,n,r){if(e.base.repository!==e.head.repository||t.id!==e.runId||t.runAttempt!==n||t.path!==r||t.event!==`pull_request`||t.headBranch!==e.head.ref||t.headRepository.id!==e.head.repositoryId||t.headRepository.fullName!==e.head.repository||t.repository.fullName!==e.base.repository)throw Error(`Preview requires the exact same-repository pull request workflow run`)}function Wy(e,t){if(t.baseRevision!==e.base.sha||t.headRevision!==e.head.sha)throw Error(`Preview report must match the exact event base/head revisions`)}function Gy(e,t,n){let{summary:r}=e,i=Gd(t);if(!i)throw Error(`Preview report URL is required`);let a=Object.values(e.entries).filter(e=>e.status===`changed`).sort((e,t)=>e.id.localeCompare(t.id)),o=a.slice(0,10).map(e=>{let t=new URL(i);return t.hash=encodeURIComponent(e.id),`- [${Zd(`${e.title} / ${e.name} · ${e.viewport.name}`)}](${Gd(t.toString())})`});return a.length>10&&o.push(`- [View ${a.length-10} more changed snapshots](${i})`),[Hy,`## Kapture preview`,``,`[Pixel comparison dashboard](${i})`,``,`Base: ${Zd(n.base.ref)} → Head: ${Zd(n.head.ref)}`,``,`Snapshots: ${r.total} · Changed: ${r.changed} · Unchanged: ${r.unchanged} · Unstable: ${r.unstable} · Added: ${r.added} · Removed: ${r.removed} · Errors: ${r.errors}`,...o.length?[``,`### Changed snapshots`,``,...o]:[],``,`Head: \`${e.headRevision}\``,`Report digest: \`${e.contentDigest}\``,``,`> Preview only. This result does not approve visual changes. Event-driven approval requires the production workflows on the default branch.`].join(`
|
|
668
|
+
`)}A();const Ky=k({meta:{name:`prepare-preview`,description:`Rebuild a same-repository pre-adoption preview without an approval gate`},args:{input:{type:`string`,required:!0},output:{type:`string`,required:!0},"base-branch":{type:`string`,required:!0},"storybook-directory":{type:`string`}},async run({args:e}){if(process.env.GITHUB_EVENT_NAME!==`pull_request`)throw Error(`Preview requires pull_request`);let t=Fg(await cf(),e[`base-branch`]);if(t.base.repository!==t.head.repository)throw Error(`Fork previews are not supported`);let n=f(e.output),r=await lg({inputDir:f(e.input),outputDir:n,trustedBaseBranch:t.base.ref,trustedHeadBranch:t.head.ref,...e[`storybook-directory`]?{storybookUrl:`./storybook/`}:{}});if(Wy(t,r.report),e[`storybook-directory`]){let t=f(e[`storybook-directory`]);await Vy(a(t),i(t)),await _(t,f(n,`storybook`),{recursive:!0,errorOnExist:!0,force:!1})}await W({"report-directory":n,"report-path":f(n,`report.json`),"report-digest":r.report.contentDigest??``,"head-sha":t.head.sha,"preview-alias":t.preview.alias})}});A();const qy=k({meta:{name:`prepare-run`,description:`Download, verify, and rebuild a completed workflow_run report`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},output:{type:`string`,default:`.kapture/trusted-report`,description:`New directory for the trusted static report`},receipt:{type:`string`,default:`.kapture/trusted-run-receipt.json`,description:`Path for the strict trusted-run receipt`},"storybook-url":{type:`string`,description:`Trusted HTTPS Storybook URL or the fixed same-origin ./storybook/ directory`},"temporary-root":{type:`string`,description:`Trusted temporary directory root (defaults to RUNNER_TEMP)`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf(),r=await E_(new Mv(t,Jy(n)),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],outputDir:f(e.output),receiptPath:f(e.receipt),...e[`storybook-url`]?{storybookUrl:e[`storybook-url`]}:{},...e[`temporary-root`]?{temporaryRoot:f(e[`temporary-root`])}:{}});await W({"base-sha":r.receipt.context.base.sha,"context-artifact-id":r.receipt.artifacts.context.id,"head-repository":r.receipt.context.head.repository,"head-sha":r.receipt.context.head.sha,"pr-number":r.receipt.context.prNumber,"preview-branch":r.receipt.context.preview.branch,"preview-alias":r.receipt.context.preview.alias,"raw-report-artifact-id":r.receipt.artifacts.report.id,"report-digest":r.receipt.report.contentDigest,"report-directory":r.reportDirectory,"report-path":r.reportPath,receipt:r.receiptPath,"run-attempt":r.receipt.captureRun.attempt,"run-head-branch":r.receipt.captureRun.headBranch,"run-head-repository-id":r.receipt.captureRun.headRepositoryId,"run-head-sha":r.receipt.captureRun.headSha,"run-id":r.receipt.captureRun.id,"changed-files-complete":String(r.changedFiles.complete),"changed-files-count":r.changedFiles.files.length,"trusted-artifact-name":r.receipt.trustedArtifactName,"workflow-id":r.receipt.captureRun.workflowId})}});function Jy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}A();const Yy=k({meta:{name:`prepare-storybook-run`,description:`Verify and extract the exact receipt-bound head Storybook artifact`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},output:{type:`string`,required:!0,description:`New directory for the verified head Storybook`},receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},"temporary-root":{type:`string`,description:`Trusted temporary directory root (defaults beside output)`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf(),r=await O_(new Mv(t,Xy(n)),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],outputDir:f(e.output),receiptPath:f(e.receipt),...e[`temporary-root`]?{temporaryRoot:f(e[`temporary-root`])}:{}});await W({"head-ref":r.context.head.ref,"head-repository":r.context.head.repository,"head-sha":r.context.head.sha,"head-storybook-artifact-id":r.artifact.id,"pr-number":r.context.prNumber,"preview-branch":r.context.preview.branch,"preview-alias":r.context.preview.alias,receipt:r.receiptPath,"storybook-directory":r.storybookDirectory})}});function Xy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}A();const Zy=k({meta:{name:`reconcile-run`,description:`Reconcile a trusted workflow_run event with the current PR status`},args:{"capture-workflow-path":{type:`string`,default:`.github/workflows/visual-capture.yml`,description:`Trusted path of the pull_request capture workflow`},"base-branch":{type:`string`,required:!0,description:`Expected pull request base branch`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf(),r=Qy(n),i=await iy(new Mv(t,r),new af(t,r),{event:n,captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],statusContext:qd(e[`status-context`])});await W({status:i.status,"reconcile-reason":i.reason,...i.prNumber===void 0?{}:{"pr-number":i.prNumber},...i.headSha?{"head-sha":i.headSha}:{}})}});function Qy(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}A();async function $y(e,t,n=async(e,t)=>{switch(e){case`reconcile-run`:await ze(Zy,{rawArgs:t});break;case`prepare-run`:await ze(qy,{rawArgs:t});break;case`prepare-storybook-run`:await ze(Yy,{rawArgs:t})}}){let r=[`--capture-workflow-path`,t.captureWorkflowPath,`--base-branch`,t.baseBranch];if(await n(`reconcile-run`,[...r,`--status-context`,t.statusContext]),!e||typeof e!=`object`)throw Error(`Invalid workflow_run event`);let i=e;return i.action!==`completed`||i.workflow_run?.conclusion!==`success`?!1:(await n(`prepare-run`,[...r,`--output`,t.output,`--receipt`,t.receipt,...t.includeStorybook?[`--storybook-url`,`./storybook/`]:[]]),t.includeStorybook&&await n(`prepare-storybook-run`,[...r,`--output`,f(t.output,`storybook`),`--receipt`,t.receipt]),!0)}const eb=k({meta:{name:`prepare-review`,description:`Reconcile a workflow run and prepare verified static files for any hosting provider`},args:{...Fy,"capture-workflow-path":{type:`string`,default:`.github/workflows/kapture-capture.yml`},"base-branch":{type:`string`,required:!0},output:{type:`string`,required:!0},receipt:{type:`string`,required:!0},"include-storybook":{type:`boolean`,default:!1},"status-context":{type:`string`,default:`Kapture Visual Review`}},async run({args:e}){await W({ready:`false`});let t=await cf();if(await Iy(t,e)){await W({"integration-mode":`initial-adoption`,comparison:`not-performed`});return}let n=await $y(t,{captureWorkflowPath:e[`capture-workflow-path`],baseBranch:e[`base-branch`],output:f(e.output),receipt:f(e.receipt),includeStorybook:e[`include-storybook`],statusContext:e[`status-context`]});await W({ready:String(n)})}});A();const tb=k({meta:{name:`publish-preview`,description:`Publish a preview-only status and comment; never issue an approval marker`},args:{report:{type:`string`,required:!0},"report-digest":{type:`string`,required:!0},"report-url":{type:`string`,required:!0},"base-branch":{type:`string`,required:!0},"capture-workflow-path":{type:`string`,default:`.github/workflows/kapture-capture.yml`}},async run({args:e}){if(process.env.GITHUB_EVENT_NAME!==`pull_request`)throw Error(`Preview requires pull_request`);let t=Fg(await cf(),e[`base-branch`]),n=process.env.GITHUB_TOKEN;if(!n)throw Error(`GITHUB_TOKEN is required`);let[r,i]=t.base.repository.split(`/`);if(!r||!i)throw Error(`Invalid repository`);let a=new af(n,{owner:r,repo:i}),o=new Mv(n,{owner:r,repo:i}),s=await o.getWorkflowRun(t.runId);Uy(t,s,Number(process.env.GITHUB_RUN_ATTEMPT),e[`capture-workflow-path`]);let c=await dg(f(e.report),e[`report-digest`]);Wy(t,c);let l=Gd(e[`report-url`]);if(!l)throw Error(`Preview report URL is required`);let u=async()=>{let n=await a.getPullRequest(t.prNumber);if(n.number!==t.prNumber||n.state!==`open`||n.head.sha!==t.head.sha||n.base.sha!==t.base.sha)throw Error(`Ignoring an obsolete preview result`);let r=await o.getWorkflowRun(t.runId);Uy(t,r,s.runAttempt,e[`capture-workflow-path`]),await M_(o,r)};await u();let d=await a.postOrUpdateReportComment(t.prNumber,Gy(c,l,t),Hy);if(await u(),await a.setReviewStatus(t.head.sha,c.summary.errors?`failure`:`success`,`Preview only; visual changes require separate review`,`Kapture Preview`,l),await W({"comment-id":d,"report-digest":c.contentDigest??``}),c.summary.errors)throw Error(`Preview contains capture errors`)}});A();const nb=k({meta:{name:`publish-run`,description:`Revalidate a prepare-run receipt and publish its deployed visual report`},args:{receipt:{type:`string`,required:!0,description:`Path to the strict prepare-run receipt`},report:{type:`string`,required:!0,description:`Path to the trusted image-bound report.json`},"report-url":{type:`string`,required:!0,description:`Immutable HTTPS URL of the deployed dashboard`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`PR comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await cf(),r=rb(n),i=Gd(e[`report-url`]);if(!i)throw Error(`report-url is required`);let a=await D_(new Mv(t,r),new af(t,r),{event:n,receiptPath:f(e.receipt),reportPath:f(e.report),reportUrl:i,statusContext:qd(e[`status-context`]),commentLanguage:Fd(e[`comment-language`])});if(await W({status:a.status,"changed-count":a.changedCount,"comment-id":a.commentId,"report-digest":a.reportDigest}),a.status===`error`)throw Error(`Visual capture errors were published to the trusted report`)}catch(e){throw await W({status:`error`}),e}}});function rb(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`GitHub event payload must be an object`);let t=e.repository;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`GitHub event repository must be an object`);let n=t.full_name;if(typeof n!=`string`)throw Error(`GitHub event repository is invalid`);let r=n.match(/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/);if(!r?.[1]||!r[2])throw Error(`GitHub event repository is invalid`);return{owner:r[1],repo:r[2]}}A(),tg();const ib=k({meta:{name:`report`,description:`Publish a trusted Kapture PR report and commit status`},args:{report:{type:`string`,required:!0,description:`Path to image-bound trusted report.json`},"report-url":{type:`string`,description:`HTTPS URL for the full report or workflow run`},"status-context":{type:`string`,default:`Kapture Visual Review`,description:`GitHub commit status context`},"comment-language":{type:`string`,default:`en`,description:`PR comment language (en or ko)`}},async run({args:e}){try{let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await Ph(e.report),r=lf(await cf()),i=qd(e[`status-context`]),a=Gd(e[`report-url`]),o=await yf(new af(t,r.repository),r,n,i,a,Fd(e[`comment-language`]));if(await W({status:o.status,"changed-count":o.changedCount,"comment-id":o.commentId,"report-digest":o.reportDigest}),o.status===`error`)throw Error(`${n.summary.errors} visual capture error(s)`)}catch(e){throw await W({status:`error`}),e}}});async function ab(e){let{client:t}=e,n=await t.getContentSha(e.repository,e.workflow,e.trustedRevision),r=await t.listCaptureCacheArtifacts(e.name);for(let i of r.slice(0,5)){if(i.expired||i.name!==e.name||i.sizeInBytes>1024**3||!/^sha256:[a-f0-9]{64}$/.test(i.digest))continue;let r=await t.getWorkflowRun(i.workflowRun.id);if(r.status!==`completed`||r.conclusion!==`success`||r.event!==`pull_request`||r.path!==e.workflow||r.repository.fullName!==e.repository||r.headRepository.fullName!==e.repository||i.workflowRun.repositoryId!==r.repository.id||i.workflowRun.headRepositoryId!==r.repository.id||!await t.isMergedCaptureRun(r.id,r.headSha)||await t.getContentSha(e.repository,e.workflow,r.headSha)!==n)continue;let a=await t.downloadArtifactArchive(i.id,1024**3);if(`sha256:${T(`sha256`).update(a).digest(`hex`)}`!==i.digest)throw Error(`Capture cache archive digest mismatch`);return await Og(a,e.output,{maxEntries:2e4,maxFileBytes:64*1024**2,maxTotalBytes:1024**3,allowPath:e=>e===`cache.json`||e===`manifest.json`||/^images\/[A-Za-z0-9._-]+\.png$/.test(e),allowDirectoryPath:e=>e===`images`}),!0}return!1}Md(),A();const ob=k({meta:{name:`restore-capture`,description:`Restore merged head evidence matching the exact base build; cache misses never skip tests`},args:{"base-dir":{type:`string`,required:!0},"head-dir":{type:`string`,required:!0},workflow:{type:`string`,required:!0,description:`Repository-relative capture workflow path`},"base-revision":{type:`string`,required:!0}},async run({args:e}){if(!/^\.github\/workflows\/[A-Za-z0-9._-]+\.ya?ml$/.test(e.workflow)||!/^[a-f0-9]{40}$/.test(e[`base-revision`]))throw Error(`Expected capture workflow path and exact base revision`);let t=process.env.GITHUB_REPOSITORY??``,n=/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(t);if(!n)throw Error(`GITHUB_REPOSITORY is required`);let r=await _l(f(e[`base-dir`]),Qe),i=await _l(f(e[`head-dir`]),Qe),a=await b(c(ce(),`kapture-capture-cache-`)),o=await b(c(ce(),`kapture-head-cache-`)),s=!1;try{s=await ab({client:new Mv(process.env.GITHUB_TOKEN??``,{owner:n[1],repo:n[2]}),name:`kapture-capture-${r}`,repository:t,workflow:e.workflow,trustedRevision:e[`base-revision`],output:a})}catch(e){console.warn(`Capture cache unavailable; capturing normally: ${e instanceof Error?e.message:String(e)}`)}await W({"cache-directory":a,"cache-hit":String(s),"head-cache-directory":o,"head-cache-name":`kapture-capture-${i}`})}});A();const sb=k({meta:{name:`validate-build`,description:`Validate a Storybook artifact boundary before upload or capture`},args:{root:{type:`string`,required:!0,description:`Trusted checkout or artifact extraction root`},directory:{type:`string`,required:!0,description:`Storybook directory relative to root`},"path-only":{type:`boolean`,default:!1,description:`Validate the input path before building`}},async run({args:e}){if(e[`path-only`]){await W({directory:By(e.root,e.directory)});return}let t=await Vy(e.root,e.directory);await W(t),console.log(`Validated ${t.files} Storybook files (${t.bytes} bytes).`)}});A(),tg();const cb=k({meta:{name:`verify`,description:`Verify that a Kapture report matches the current pull request`},args:{report:{type:`string`,required:!0,description:`Path to untrusted report.json`}},async run({args:e}){let t=process.env.GITHUB_TOKEN;if(!t)throw Error(`GITHUB_TOKEN is required`);let n=await Ph(e.report),r=lf(await cf());await vf(new af(t,r.repository),r,n)}});A();const lb=k({meta:{name:`github`,description:`Verify, publish, and approve GitHub visual reviews`},subCommands:{"restore-capture":ob,context:Xv,"validate-build":sb,"bind-artifacts":jv,"prepare-review":eb,"prepare-preview":Ky,"publish-preview":tb,verify:cb,report:ib,approve:Sf,"prepare-run":qy,"prepare-storybook-run":Yy,"publish-run":nb,"reconcile-run":Zy,"finalize-run":Ly,cleanup:qv}});async function ub(e,t){let{report:n,resolveImage:r}=await db(e),i=n.entries[t];if(!i)throw Error(`Kapture report does not contain snapshot ${t}`);let a=[],o=(e,t)=>{t&&(gb(e,t),a.push({role:e,mediaType:`image/png`,source:r(t)}))};return o(`base`,i.baseImage),o(`head`,i.headImage),o(`diff`,i.diffImage),o(`base-repeat`,i.instability?.base?.repeatImage),o(`base-instability-diff`,i.instability?.base?.diffImage),o(`head-repeat`,i.instability?.head?.repeatImage),o(`head-instability-diff`,i.instability?.head?.diffImage),{version:1,report:{baseRevision:n.baseRevision,headRevision:n.headRevision,...n.contentDigest?{contentDigest:n.contentDigest}:{}},snapshot:{id:i.id,storyId:i.storyId,title:i.title,name:i.name,viewport:i.viewport,status:i.status,...i.changedPixels===void 0?{}:{changedPixels:i.changedPixels},...i.diffRatio===void 0?{}:{diffRatio:i.diffRatio},...i.threshold?{threshold:i.threshold}:{},...i.error?{error:i.error}:{}},images:a}}async function db(e){let t=hb(e);return t?pb(t):fb(e)}async function fb(e){let t=f(e),n=await C(t);if(!n.isFile()||n.size>10485760)throw Error(`Kapture report must be a file no larger than ${Ih} bytes`);let r=mb(await x(t,`utf8`)),i=a(t);return{report:r,resolveImage:e=>{let t=f(i,e);if(d(i,t).startsWith(`..`))throw Error(`Kapture report contains an unsafe image path: ${e}`);return{type:`path`,value:t}}}}async function pb(e){let t=await fetch(e,{redirect:`error`});if(!t.ok)throw Error(`Kapture report request failed with HTTP ${t.status}`);let n=Number(t.headers.get(`content-length`));if(Number.isFinite(n)&&n>10485760)throw Error(`Kapture report must be no larger than ${Ih} bytes`);let r=await t.text();if(Buffer.byteLength(r)>10485760)throw Error(`Kapture report must be no larger than ${Ih} bytes`);return{report:mb(r),resolveImage:t=>{let n=new URL(t,e);if(n.origin!==e.origin||n.protocol!==`https:`)throw Error(`Kapture report contains an unsafe image URL: ${t}`);return{type:`url`,value:n.toString()}}}}function mb(e){try{return Mh(JSON.parse(e))}catch(e){throw e instanceof SyntaxError?Error(`Kapture report does not contain valid JSON`):e}}function hb(e){let t;try{t=new URL(e)}catch{return}if(t.protocol!==`https:`||t.username||t.password)throw Error(`Remote Kapture report must be an HTTPS URL without credentials`);return t}function gb(e,t){let n=`images/${e}/`,r=t.slice(n.length);if(!t.startsWith(n)||!r||r.includes(`/`)||r.includes(`\\`)||!r.endsWith(`.png`))throw Error(`Kapture report contains an invalid ${e} image path: ${t}`)}var _b,vb=E((()=>{A(),tg(),_b=k({meta:{name:`inspect`,description:`Print machine-readable snapshot evidence for agents and review tools`},args:{report:{type:`string`,required:!0,description:`Local report.json path or public HTTPS report.json URL`},snapshot:{type:`string`,required:!0,description:`Exact snapshot ID`}},async run({args:e}){let t=await ub(e.report,e.snapshot);process.stdout.write(`${JSON.stringify(t,null,2)}\n`)}})})),yb=E((()=>{Pc()})),bb=E((()=>{yb()})),xb=Se({createKaptureMcpServer:()=>Cb,getSnapshotEvidenceResult:()=>wb,startKaptureMcpServer:()=>Sb});async function Sb(e){let{serveStdio:t}=await import(`@modelcontextprotocol/server/stdio`);t(()=>Cb(e),{onerror:e=>console.error(e.message)})}async function Cb(e){let{McpServer:t}=await import(`@modelcontextprotocol/server`),n=new t({name:`kapture`,version:Qe},{instructions:`Use list_snapshots to find visual changes, then get_snapshot_evidence to inspect the exact PNG evidence. Unstable snapshots are nondeterministic and do not represent an approvable baseline change.`});return n.registerTool(`list_snapshots`,{title:`List Kapture snapshots`,description:`List snapshot IDs, statuses, stories, viewports, and diff metrics from a report.`,inputSchema:Cs({status:Os([`unchanged`,`changed`,`unstable`,`added`,`removed`,`error`]).optional().describe(`Optional exact status filter`)}),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0}},async({status:t})=>{let{report:n}=await db(e),r=Object.values(n.entries).filter(e=>!t||e.status===t).map(e=>({id:e.id,storyId:e.storyId,title:e.title,name:e.name,viewport:e.viewport,status:e.status,changedPixels:e.changedPixels,changedPixelPercentage:e.diffRatio===void 0?void 0:e.diffRatio*100})),i={baseRevision:n.baseRevision,headRevision:n.headRevision,summary:n.summary,snapshots:r};return{content:[{type:`text`,text:JSON.stringify(i,null,2)}],structuredContent:i}}),n.registerTool(`get_snapshot_evidence`,{title:`Get Kapture snapshot evidence`,description:`Return machine-readable metadata and the actual base, head, diff, and instability PNGs for one snapshot.`,inputSchema:Cs({snapshotId:R().min(1).max(512).describe(`Exact ID returned by list_snapshots`)}),annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0}},async({snapshotId:t})=>wb(e,t)),n}async function wb(e,t){let n=await ub(e,t),r=await Promise.all(n.images.map(Tb));return{content:[{type:`text`,text:JSON.stringify(kb(n),null,2)},...r],structuredContent:kb(n)}}async function Tb(e){return{type:`image`,data:(e.source.type===`path`?await Eb(e.source.value):await Db(e.source.value)).toString(`base64`),mimeType:`image/png`,_meta:{"kapture/role":e.role}}}async function Eb(e){let t=await v(e);if(t.isSymbolicLink()||!t.isFile()||t.size>Ab)throw Error(`Kapture evidence image must be no larger than ${Ab} bytes`);return Ob(await x(e),e)}async function Db(e){let t=await fetch(e,{redirect:`error`});if(!t.ok)throw Error(`Kapture evidence request failed with HTTP ${t.status}`);let n=Number(t.headers.get(`content-length`));if(Number.isFinite(n)&&n>Ab)throw Error(`Kapture evidence image must be no larger than ${Ab} bytes`);return Ob(Buffer.from(await t.arrayBuffer()),e)}function Ob(e,t){if(e.byteLength>Ab||!e.subarray(0,8).equals(jb))throw Error(`Kapture evidence is not a supported PNG: ${t}`);return e}function kb(e){return{...e,images:e.images.map(t=>({role:t.role,mediaType:t.mediaType,source:t.source,contentBlockIndex:e.images.indexOf(t)+1}))}}var Ab,jb,Mb=E((()=>{bb(),vb(),Ab=26214400,jb=Buffer.from([137,80,78,71,13,10,26,10])}));A();const Nb=k({meta:{name:`mcp`,description:`Serve Kapture snapshot evidence to agents over MCP stdio`},args:{report:{type:`string`,required:!0,description:`Local report.json path or public HTTPS report.json URL`}},async run({args:e}){let{startKaptureMcpServer:t}=await Promise.resolve().then(()=>(Mb(),xb));await t(e.report)}});Md(),A();const Pb=k({meta:{name:`plan`,description:`Select affected Storybook stories from base/head dependency manifests`},args:{"base-dir":{type:`string`,required:!0,description:`Built base Storybook directory`},"head-dir":{type:`string`,required:!0,description:`Built head Storybook directory`},"changed-files":{type:`string`,required:!0,description:`Path to a versioned changed-files manifest or legacy JSON path array`},output:{type:`string`,default:`.kapture/plan.json`,description:`Affected-story plan output path`}},async run({args:e}){let t=await Fb(f(e[`changed-files`])),n=await jl({baseDir:f(e[`base-dir`]),headDir:f(e[`head-dir`]),changedFiles:t.files,changedFilesComplete:t.complete,...t.evidence?{changedFilesEvidence:t.evidence}:{}}),r=f(e.output);await y(a(r),{recursive:!0}),await w(r,`${JSON.stringify(n,null,2)}\n`,`utf8`),n.selectionMode===`affected`?X.success(`Selected ${n.selectedStoryIds.length} of ${n.totalStoryIds.length} affected stories`):X.warn(`Selected all ${n.totalStoryIds.length} stories (${n.fallbackReasons.map(e=>e.code).join(`, `)})`),X.info(`Plan: ${r}`)}});async function Fb(e){let t;try{t=JSON.parse(await x(e,`utf8`))}catch(t){throw Error(`Failed to read changed files JSON from ${e}`,{cause:t})}if(!Array.isArray(t)){let e=Kg(t);return{files:e.files,complete:e.complete,evidence:{provider:e.source.provider,manifestDigest:T(`sha256`).update(JSON.stringify(e)).digest(`hex`),pullRequestNumber:e.pullRequest.number,baseSha:e.pullRequest.baseSha,headSha:e.pullRequest.headSha}}}if(t.length>1e5)throw Error(`changed-files contains too many paths`);return{files:t.map(e=>qg(e,`changed file path`)),complete:!0}}A();const Ib=k({meta:{name:`report`,description:`Build trusted static Kapture reports`},subCommands:{build:cg}});function Lb(e){let t=`## Kapture initial adoption
|
|
669
669
|
|
|
670
670
|
**Comparison not performed. Visual approval is unavailable.**
|
|
671
671
|
|
|
672
|
-
`;if(`error`in e)return`${t}Capture failed before a complete result was saved: ${
|
|
673
|
-
`)}async function
|
|
672
|
+
`;if(`error`in e)return`${t}Capture failed before a complete result was saved: ${Zd(e.error,500)}\n`;let{report:n}=e,r=n.snapshots.filter(e=>e.error!==void 0).length,i=[...n.snapshots].sort((e,t)=>Number(t.error!==void 0)-Number(e.error!==void 0));return[t,`Base: \`${n.baseRevision}\` → Head: \`${n.headRevision}\``,``,`Snapshots: ${i.length} · Captured: ${i.length-r} · Errors: ${r}`,``,`Head-only installation validation. Download this run's artifact for setup.json and PNGs; this is not a baseline or a visual review result.`,``,`| Story | Viewport | Capture result |`,`| --- | --- | --- |`,...i.slice(0,100).map(e=>`| ${Zd(`${e.title} / ${e.name}`)} | ${Zd(e.viewport.name)} (${e.viewport.width} × ${e.viewport.height}) | ${e.error===void 0?`Captured`:`Error: ${Zd(e.error)}`} |`),...i.length>100?[``,`Showing the first 100 snapshots (errors first). See setup.json for all snapshots.`]:[],``].join(`
|
|
673
|
+
`)}async function Rb(e){let t=process.env.GITHUB_STEP_SUMMARY;t&&await h(t,Lb(e))}Fc();const zb=R().max(4096),Bb=R().regex(/^[a-f0-9]{40}$/),Vb=B({id:zb,title:zb,name:zb,viewport:B({name:zb,width:z().int().positive(),height:z().int().positive()}),image:R().regex(/^images\/[a-zA-Z0-9._-]+\.png$/).optional(),sha256:R().regex(/^[a-f0-9]{64}$/).optional(),error:zb.optional()}).superRefine((e,t)=>{(e.error===void 0?!e.image||!e.sha256:e.image||e.sha256)&&t.addIssue({code:`custom`,message:`Snapshot must contain an image digest or an error`})}),Hb=B({version:V(1),kind:V(`initial-adoption`),comparison:V(`not-performed`),baseRevision:Bb,headRevision:Bb,snapshots:Ss(Vb).min(1).max(rg)}).superRefine((e,t)=>{new Set(e.snapshots.map(e=>e.id)).size!==e.snapshots.length&&t.addIssue({code:`custom`,message:`Duplicate snapshot IDs`})});function Ub(e,t){return Hb.parse({version:1,kind:`initial-adoption`,comparison:`not-performed`,baseRevision:t,headRevision:e.revision,snapshots:Object.values(e.snapshots).sort((e,t)=>e.id.localeCompare(t.id)).map(e=>({id:e.id,title:e.title,name:e.name,viewport:e.viewport,...e.error===void 0?{image:e.imageFile,sha256:e.sha256}:{error:e.error}}))})}Md(),A();const Wb=k({meta:{name:`setup`,description:`Head-only installation validation without visual comparison or approval`},subCommands:{capture:k({meta:{name:`capture`,description:`Save head PNGs and setup.json, and write a GitHub Job Summary`},args:{"head-dir":{type:`string`,required:!0},"base-revision":{type:`string`,required:!0},"head-revision":{type:`string`,required:!0},output:{type:`string`,required:!0},workers:{type:`string`,default:`4`},locale:{type:`string`,default:`en-US`},timezone:{type:`string`,default:`UTC`},"install-browser":{type:`boolean`,default:!1},"browser-with-deps":{type:`boolean`,default:!1}},async run({args:e}){try{for(let t of[e[`base-revision`],e[`head-revision`]])if(!/^[a-f0-9]{40}$/.test(t))throw Error(`Setup requires full revision SHAs`);let t=Number(e.workers);if(!Number.isInteger(t)||t<1||t>8)throw Error(`Invalid workers`);e[`install-browser`]&&await et(e[`browser-with-deps`]);let n=f(e.output),r=Ub(await Tu({headDir:f(e[`head-dir`]),headRevision:e[`head-revision`],outputDir:n,adapterVersion:Qe,workers:t,locale:e.locale,timezone:e.timezone}),e[`base-revision`]);await w(c(n,`setup.json`),JSON.stringify(r),{flag:`wx`});let i=r.snapshots.filter(e=>e.error!==void 0).length;await Rb({report:r}),await W({"artifact-directory":n,"capture-errors":i,comparison:`not-performed`}),console.log(`Setup validation: ${r.snapshots.length} snapshots, ${i} errors. Comparison not performed.`),i&&(process.exitCode=2)}catch(e){throw await Rb({error:e instanceof Error?e.message:String(e)}),e}}})}});Md(),A();const Gb=k({meta:{name:`test`,description:`Capture and compare base/head Storybooks in one hermetic browser environment`},args:{"github-artifacts":{type:`boolean`,default:!1,description:`Validate downloaded builds, bind Actions artifact identities and preserve error reports for publication`},"base-dir":{type:`string`,required:!0,description:`Built base Storybook directory`},"head-dir":{type:`string`,required:!0,description:`Built head Storybook directory`},"base-capture-dir":{type:`string`,description:`Verified capture directory for the exact base revision; captures head only`},"capture-cache-dir":{type:`string`,description:`Optional verified content-addressed head cache to reuse as base; misses capture normally`},"capture-cache-output":{type:`string`,description:`Export stable head capture evidence for subsequent runs`},"base-revision":{type:`string`,required:!0,description:`Base Git revision`},"head-revision":{type:`string`,required:!0,description:`Head Git revision`},"changed-files":{type:`string`,description:`Versioned changed-files manifest used to capture only provably affected stories`},"install-browser":{type:`boolean`,default:!1,description:`Install the pinned Chrome runtime only when at least one story is selected`},"browser-with-deps":{type:`boolean`,default:!1,description:`Install Linux browser dependencies together with Chrome`},output:{type:`string`,default:`.kapture`,description:`Output directory`},workers:{type:`string`,default:`4`,description:`Concurrent isolated story lanes`},"pixel-color-threshold":{type:`string`,default:`0.2`,description:`Per-pixel perceptual color threshold`},"max-changed-pixel-percentage":{type:`string`,default:`0`,description:`Maximum percentage of changed pixels allowed without review (0 to 100)`},"frozen-time":{type:`string`,default:`2026-01-01T00:00:00.000Z`,description:`ISO time exposed to stories`},"random-seed":{type:`string`,default:`20260101`,description:`Math.random seed`},locale:{type:`string`,default:`en-US`,description:`BCP 47 browser locale`},timezone:{type:`string`,default:`UTC`,description:`IANA browser time zone`},"dashboard-dir":{type:`string`,description:`Dashboard build directory (defaults to the CLI embedded dashboard)`}},async run({args:e}){let t=Xb(e.workers),n=Zb(e[`pixel-color-threshold`],`pixel-color-threshold`),r=Qb(e[`max-changed-pixel-percentage`],`max-changed-pixel-percentage`),o=Yb(e[`random-seed`],`random-seed`),s=f(e[`base-dir`]),c=f(e[`head-dir`]),l=e[`github-artifacts`]?Av(process.env):void 0;if(l){let t=`-base-${e[`base-revision`]}-head-${e[`head-revision`]}`;if(!l.artifacts.context.name.endsWith(t))throw Error(`Artifact identities must match the requested base/head revisions`);await Promise.all([s,c].map(e=>Vy(a(e),i(e))))}let u=e[`changed-files`]?await Kb(s,c,f(e[`changed-files`]),e[`base-revision`],e[`head-revision`]):void 0;Jb(u),e[`install-browser`]&&qb(u)&&(X.start(`Installing the Kapture browser runtime…`),await et(e[`browser-with-deps`])),X.start(e[`base-capture-dir`]?`Reusing the verified base capture and capturing affected head stories…`:`Capturing base and head Storybooks in one hermetic environment…`);let d=await Eu({baseDir:s,headDir:c,...e[`base-capture-dir`]?{baseCaptureDir:f(e[`base-capture-dir`])}:{},...e[`capture-cache-dir`]?{captureCacheDir:f(e[`capture-cache-dir`])}:{},...e[`capture-cache-output`]?{captureCacheOutput:f(e[`capture-cache-output`])}:{},baseRevision:e[`base-revision`],headRevision:e[`head-revision`],outputDir:f(e.output),workers:t,threshold:{pixelColorThreshold:n,maxChangedPixelRatio:r/100},frozenTime:e[`frozen-time`],randomSeed:o,locale:e.locale,timezone:e.timezone,adapterVersion:Qe,selectionPlan:u});await Xu(e[`dashboard-dir`]?f(e[`dashboard-dir`]):f(a(fe(import.meta.url)),`dashboard`),f(e.output,`report`)),l&&(await w(f(e.output,`report`,`capture-boundary.json`),`${JSON.stringify(l)}\n`,{flag:`wx`,mode:384}),await W({"report-directory":f(e.output,`report`),"report-path":f(e.output,`report`,`report.json`),"capture-errors":d.report.summary.errors}));let{summary:p}=d.report;X.success(`${p.total} snapshots: ${p.changed} changed, ${p.unstable} unstable, ${p.added} added, ${p.removed} removed, ${p.unchanged} unchanged, ${p.errors} errors`),X.info(`Environment: ${d.report.environment.id}`),X.info(`Report: ${f(e.output,`report`,`report.json`)}`),p.errors>0&&!l&&(process.exitCode=2)}});async function Kb(e,t,n,r,i){let a=await Fb(n);if(a.evidence&&(a.evidence.baseSha!==r||a.evidence.headSha!==i))throw Error(`changed-files manifest base/head SHAs must match --base-revision and --head-revision`);return jl({baseDir:e,headDir:t,changedFiles:a.files,changedFilesComplete:a.complete,...a.evidence?{changedFilesEvidence:a.evidence}:{}})}function qb(e){return!e||e.selectedStoryIds.length>0}function Jb(e){if(!e){X.info(`Story coverage: full capture (no changed-files manifest)`);return}if(e.selectionMode===`affected`){X.info(`Story coverage: ${e.selectedStoryIds.length} affected, ${e.skippedStoryIds.length} proven unaffected`);return}X.warn(`Story coverage: full fallback (${e.fallbackReasons.map(e=>e.code).join(`, `)})`)}function Yb(e,t){let n=Number.parseInt(e,10);if(!Number.isInteger(n)||n<=0)throw Error(`${t} must be a positive integer`);return n}function Xb(e){let t=Yb(e,`workers`);if(t>8)throw Error(`workers must be between 1 and 8`);return t}function Zb(e,t){let n=Number.parseFloat(e);if(!Number.isFinite(n)||n<0||n>1)throw Error(`${t} must be between 0 and 1`);return n}function Qb(e,t){let n=Number(e);if(!Number.isFinite(n)||n<0||n>100)throw Error(`${t} must be between 0 and 100`);return n}A(),tg();const $b=k({meta:{name:`validate`,description:`Validate a Kapture report as a CI gate`},args:{report:{type:`string`,required:!0,description:`Path to report.json`},"fail-on-diff":{type:`boolean`,default:!1,description:`Exit 1 when visual changes require review`}},async run({args:e}){let t=f(e.report),n=await C(t);if(!n.isFile()||n.size>10485760)throw Error(`Kapture report must be a file no larger than ${Ih} bytes`);let r=Mh(JSON.parse(await x(t,`utf8`)));if(r.summary.errors>0){X.error(`${r.summary.errors} capture or comparison error(s)`),process.exitCode=2;return}let i=r.summary.changed+r.summary.added+r.summary.removed;if(r.summary.unstable>0&&X.warn(`${r.summary.unstable} unstable snapshot(s) are non-blocking`),i>0&&e[`fail-on-diff`]){X.warn(`${i} visual change(s) require human approval`),process.exitCode=1;return}X.success(i>0?`${i} visual change(s) detected`:`No visual changes`)}});A(),vb(),Ue(k({meta:{name:`kapture`,version:Qe,description:`Hermetic Storybook visual review`},subCommands:{setup:Wb,test:Gb,validate:$b,browser:tt,ci:lt,plan:Pb,report:Ib,github:lb,inspect:_b,mcp:Nb}}));export{};
|