lula2 0.6.5-nightly.4 → 0.6.6

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.html CHANGED
@@ -6,28 +6,28 @@
6
6
  <link rel="icon" href="/lula.png" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1" />
8
8
 
9
- <link rel="modulepreload" href="/_app/immutable/entry/start.Dfo0VaTH.js">
10
- <link rel="modulepreload" href="/_app/immutable/chunks/DuUZ8ki1.js">
11
- <link rel="modulepreload" href="/_app/immutable/chunks/r5h841NE.js">
12
- <link rel="modulepreload" href="/_app/immutable/entry/app.DEqpNvcg.js">
9
+ <link rel="modulepreload" href="/_app/immutable/entry/start.BSicA9mk.js">
10
+ <link rel="modulepreload" href="/_app/immutable/chunks/upmOm7UR.js">
11
+ <link rel="modulepreload" href="/_app/immutable/chunks/kqS9jm6m.js">
12
+ <link rel="modulepreload" href="/_app/immutable/entry/app.BDCsr7Tu.js">
13
13
  <link rel="modulepreload" href="/_app/immutable/chunks/DsnmJJEf.js">
14
- <link rel="modulepreload" href="/_app/immutable/chunks/Bmfatfij.js">
15
- <link rel="modulepreload" href="/_app/immutable/chunks/D7KkMNZk.js">
16
- <link rel="modulepreload" href="/_app/immutable/chunks/4O6_nj87.js">
14
+ <link rel="modulepreload" href="/_app/immutable/chunks/DoNUPQ2F.js">
15
+ <link rel="modulepreload" href="/_app/immutable/chunks/DQTRhwGS.js">
16
+ <link rel="modulepreload" href="/_app/immutable/chunks/oPg1Ic49.js">
17
17
  </head>
18
18
  <body data-sveltekit-preload-data="hover">
19
19
  <div style="display: contents">
20
20
  <script>
21
21
  {
22
- __sveltekit_c2lh6f = {
22
+ __sveltekit_nen0in = {
23
23
  base: ""
24
24
  };
25
25
 
26
26
  const element = document.currentScript.parentElement;
27
27
 
28
28
  Promise.all([
29
- import("/_app/immutable/entry/start.Dfo0VaTH.js"),
30
- import("/_app/immutable/entry/app.DEqpNvcg.js")
29
+ import("/_app/immutable/entry/start.BSicA9mk.js"),
30
+ import("/_app/immutable/entry/app.BDCsr7Tu.js")
31
31
  ]).then(([kit, app]) => {
32
32
  kit.start(app, element);
33
33
  });
package/dist/index.js CHANGED
@@ -5693,7 +5693,7 @@ Lula reviewed ${filesCount} files changed that affect compliance.
5693
5693
  `;
5694
5694
  }
5695
5695
  async function analyzeDeletedFiles(context) {
5696
- const { octokit, owner, repo, files } = context;
5696
+ const { octokit, owner, repo, baseSha, files } = context;
5697
5697
  const deletedFilesWithAnnotations = [];
5698
5698
  for (const file of files) {
5699
5699
  if (file.status === "removed") {
@@ -5703,7 +5703,7 @@ async function analyzeDeletedFiles(context) {
5703
5703
  owner,
5704
5704
  repo,
5705
5705
  path: file.filename,
5706
- ref: "main"
5706
+ ref: baseSha
5707
5707
  });
5708
5708
  if (containsLulaAnnotations(oldText)) {
5709
5709
  deletedFilesWithAnnotations.push(file.filename);
@@ -5804,15 +5804,17 @@ function generateRemovedBlocksContent(filename, removedBlocks, oldText) {
5804
5804
  return content;
5805
5805
  }
5806
5806
  async function analyzeModifiedFiles(context) {
5807
- const { octokit, owner, repo, prBranch, files } = context;
5807
+ const { octokit, owner, repo, baseSha, headSha, files } = context;
5808
5808
  let changesContent = "";
5809
5809
  let hasFindings = false;
5810
5810
  for (const file of files) {
5811
5811
  if (file.status === "added" || file.status === "removed") continue;
5812
5812
  try {
5813
+ const oldPath = file.status === "renamed" && file.previous_filename ? file.previous_filename : file.filename;
5814
+ const newPath = file.filename;
5813
5815
  const [oldText, newText] = await Promise.all([
5814
- fetchRawFileViaAPI({ octokit, owner, repo, path: file.filename, ref: "main" }),
5815
- fetchRawFileViaAPI({ octokit, owner, repo, path: file.filename, ref: prBranch })
5816
+ fetchRawFileViaAPI({ octokit, owner, repo, path: oldPath, ref: baseSha }),
5817
+ fetchRawFileViaAPI({ octokit, owner, repo, path: newPath, ref: headSha })
5816
5818
  ]);
5817
5819
  const changedBlocks = getChangedBlocks(oldText, newText);
5818
5820
  const removedBlocks = getRemovedBlocks(oldText, newText);
@@ -5863,6 +5865,8 @@ function crawlCommand() {
5863
5865
  const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
5864
5866
  const pr = await octokit.pulls.get({ owner, repo, pull_number });
5865
5867
  const prBranch = pr.data.head.ref;
5868
+ const baseSha = pr.data.base.sha;
5869
+ const headSha = pr.data.head.sha;
5866
5870
  const { data: files } = await octokit.pulls.listFiles({ owner, repo, pull_number });
5867
5871
  const context = {
5868
5872
  octokit,
@@ -5870,6 +5874,8 @@ function crawlCommand() {
5870
5874
  repo,
5871
5875
  pull_number,
5872
5876
  prBranch,
5877
+ baseSha,
5878
+ headSha,
5873
5879
  files
5874
5880
  };
5875
5881
  const analysisResult = await performComplianceAnalysis(context);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lula2",
3
- "version": "0.6.5-nightly.4",
3
+ "version": "0.6.6",
4
4
  "description": "A tool for managing compliance as code in your GitHub repositories.",
5
5
  "bin": {
6
6
  "lula2": "./dist/lula2"
@@ -33,6 +33,25 @@
33
33
  "!dist/**/*.test.js*",
34
34
  "!dist/**/*.test.d.ts*"
35
35
  ],
36
+ "scripts": {
37
+ "dev": "vite dev --port 5173",
38
+ "dev:api": "tsx --watch index.ts --debug ui --port 3000 --no-open-browser",
39
+ "dev:full": "concurrently \"npm run dev:api\" \"npm run dev\"",
40
+ "build": "npm run build:svelte && npm run build:cli && npm run postbuild:cli",
41
+ "build:svelte": "vite build",
42
+ "build:cli": "esbuild index.ts cli/**/*.ts --bundle --platform=node --target=node22 --format=esm --outdir=dist --external:express --external:commander --external:js-yaml --external:yaml --external:isomorphic-git --external:glob --external:open --external:ws --external:cors --external:multer --external:@octokit/rest --external:undici --external:xlsx-republish --external:csv-parse",
43
+ "postbuild:cli": "cp cli-wrapper.mjs dist/lula2 && chmod +x dist/lula2",
44
+ "preview": "vite preview",
45
+ "prepare": "svelte-kit sync || echo ''",
46
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json && tsc --noEmit",
47
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
48
+ "format": "prettier --write 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
49
+ "format:check": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
50
+ "lint": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts' && eslint src cli",
51
+ "test": "npm run test:unit -- --run --coverage",
52
+ "test:integration": "vitest --config integration/vitest.config.integration.ts",
53
+ "test:unit": "vitest"
54
+ },
36
55
  "dependencies": {
37
56
  "@octokit/rest": "^22.0.0",
38
57
  "@types/ws": "^8.18.1",
@@ -105,23 +124,5 @@
105
124
  "main",
106
125
  "next"
107
126
  ]
108
- },
109
- "scripts": {
110
- "dev": "vite dev --port 5173",
111
- "dev:api": "tsx --watch index.ts --debug ui --port 3000 --no-open-browser",
112
- "dev:full": "concurrently \"npm run dev:api\" \"npm run dev\"",
113
- "build": "npm run build:svelte && npm run build:cli && npm run postbuild:cli",
114
- "build:svelte": "vite build",
115
- "build:cli": "esbuild index.ts cli/**/*.ts --bundle --platform=node --target=node22 --format=esm --outdir=dist --external:express --external:commander --external:js-yaml --external:yaml --external:isomorphic-git --external:glob --external:open --external:ws --external:cors --external:multer --external:@octokit/rest --external:undici --external:xlsx-republish --external:csv-parse",
116
- "postbuild:cli": "cp cli-wrapper.mjs dist/lula2 && chmod +x dist/lula2",
117
- "preview": "vite preview",
118
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json && tsc --noEmit",
119
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
120
- "format": "prettier --write 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
121
- "format:check": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts'",
122
- "lint": "prettier --check 'src/**/*.{ts,js,svelte}' 'cli/**/*.ts' 'index.ts' 'tests/**/*.ts' && eslint src cli",
123
- "test": "npm run test:unit -- --run --coverage",
124
- "test:integration": "vitest --config integration/vitest.config.integration.ts",
125
- "test:unit": "vitest"
126
127
  }
127
- }
128
+ }
@@ -1 +0,0 @@
1
- import{b0 as ye,o as je,g as A,h as T,d as I,bj as gt,bk as Ne,ab as De,bl as qe}from"./r5h841NE.js";class be{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class ke{constructor(t,n){this.status=t,this.location=n}}class Ee extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function _t(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function mt(e){return e.split("%25").map(decodeURI).join("%25")}function vt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function de({href:e}){return e.split("#")[0]}function wt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function yt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const bt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&F.delete(Se(e)),bt(e,t));const F=new Map;function kt(e,t){const n=Se(e,t),a=document.querySelector(n);if(a?.textContent){a.remove();let{body:r,...s}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&F.set(n,{body:r,init:s,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=yt(r)),Promise.resolve(new Response(r,s))}return window.fetch(e,t)}function Et(e,t,n){if(F.size>0){const a=Se(e,n),r=F.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(r.body,r.init);F.delete(a)}}return window.fetch(t,n)}function Se(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${wt(...r)}"]`}return a}const St=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Rt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Lt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return he(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return he(String.fromCharCode(...c.slice(2).split("-").map(m=>parseInt(m,16))));const f=St.exec(c),[,h,v,u,g]=f;return t.push({name:u,matcher:g,optional:!!h,rest:!!v,chained:v?l===1&&o[0]==="":!1}),v?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return he(c)}).join("")}).join("")}/?$`),params:t}}function xt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Lt(e){return e.slice(1).split("/").filter(xt)}function Ut(e,t,n){const a={},r=e.slice(1),s=r.filter(i=>i!==void 0);let o=0;for(let i=0;i<t.length;i+=1){const c=t[i];let l=r[i-o];if(c.chained&&c.rest&&o&&(l=r.slice(i-o,i+1).filter(f=>f).join("/"),o=0),l===void 0){c.rest&&(a[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){a[c.name]=l;const f=t[i+1],h=r[i+1];f&&!f.rest&&f.optional&&h&&c.chained&&(o=0),!f&&!h&&Object.keys(a).length===s.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return a}function he(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function At({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([i,[c,l,f]])=>{const{pattern:h,params:v}=Rt(i),u={id:i,exec:g=>{const m=h.exec(g);if(m)return Ut(m,v,a)},errors:[1,...f||[]].map(g=>e[g]),layouts:[0,...l||[]].map(o),leaf:s(c)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function s(i){const c=i<0;return c&&(i=~i),[c,e[i]]}function o(i){return i===void 0?i:[r.has(i),e[i]]}}function Ye(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ve(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}const x=globalThis.__sveltekit_c2lh6f?.base??"",Tt=globalThis.__sveltekit_c2lh6f?.assets??x??"",It="1761611497852",ze="sveltekit:snapshot",He="sveltekit:scroll",Je="sveltekit:states",Ot="sveltekit:pageurl",B="sveltekit:history",W="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ie=location.origin;function Re(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ce(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Be={...j,"":j.hover};function Xe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Qe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Xe(e)}}function _e(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const i=location.hash.split("#")[1]||"/";a.hash=`#${i}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,s=!a||!!r||le(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=a?.origin===ie&&e.hasAttribute("download");return{url:a,external:s,target:r,download:o}}function Z(e){let t=null,n=null,a=null,r=null,s=null,o=null,i=e;for(;i&&i!==document.documentElement;)a===null&&(a=V(i,"preload-code")),r===null&&(r=V(i,"preload-data")),t===null&&(t=V(i,"keepfocus")),n===null&&(n=V(i,"noscroll")),s===null&&(s=V(i,"reload")),o===null&&(o=V(i,"replacestate")),i=Xe(i);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Be[a??"off"],preload_data:Be[r??"off"],keepfocus:c(t),noscroll:c(n),reload:c(s),replace_state:c(o)}}function Ke(e){const t=ye(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function s(o){let i;return t.subscribe(c=>{(i===void 0||n&&c!==i)&&o(i=c)})}return{notify:a,set:r,subscribe:s}}const Ze={v:()=>{}};function $t(){const{set:e,subscribe:t}=ye(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${Tt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==It;return o&&(e(!0),Ze.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function le(e,t,n){return e.origin!==ie||!e.pathname.startsWith(t)?!0:n?!(e.pathname===t+"/"||e.pathname===t+"/index.html"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===t):!1}function sn(e){}const et=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...et];const Pt=new Set([...et]);[...Pt];function Ct(e){return e.filter(t=>t!=null)}function xe(e){return e instanceof be||e instanceof Ee?e.status:500}function jt(e){return e instanceof Ee?e.text:"Internal Error"}let k,Y,pe;const Nt=je.toString().includes("$$")||/function \w+\(\) \{\}/.test(je.toString());Nt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},Y={current:null},pe={current:!1}):(k=new class{#e=A({});get data(){return T(this.#e)}set data(t){I(this.#e,t)}#t=A(null);get form(){return T(this.#t)}set form(t){I(this.#t,t)}#n=A(null);get error(){return T(this.#n)}set error(t){I(this.#n,t)}#a=A({});get params(){return T(this.#a)}set params(t){I(this.#a,t)}#r=A({id:null});get route(){return T(this.#r)}set route(t){I(this.#r,t)}#o=A({});get state(){return T(this.#o)}set state(t){I(this.#o,t)}#s=A(-1);get status(){return T(this.#s)}set status(t){I(this.#s,t)}#i=A(new URL("https://example.com"));get url(){return T(this.#i)}set url(t){I(this.#i,t)}},Y=new class{#e=A(null);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},pe=new class{#e=A(!1);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},Ze.v=()=>pe.current=!0);function Dt(e){Object.assign(k,e)}const{tick:qt}=gt,Vt=new Set(["icon","shortcut icon","apple-touch-icon"]),D=Ye(He)??{},z=Ye(ze)??{},C={url:Ke({}),page:Ke({}),navigating:ye(null),updated:$t()};function Le(e){D[e]=ce()}function Bt(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;z[n];)delete z[n],n+=1}function H(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function tt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(x||"/");e&&await e.update()}}function Me(){}let Ue,me,ee,$,ve,w;const te=[],ne=[];let S=null;function nt(){S?.fork?.then(e=>e?.discard()),S=null}const Q=new Map,at=new Set,Kt=new Set,G=new Set;let _={branch:[],error:null,url:null},rt=!1,ae=!1,Fe=!0,J=!1,M=!1,ot=!1,Ae=!1,Te,y,R,N;const re=new Set,Ge=new Map;async function fn(e,t,n){globalThis.__sveltekit_c2lh6f?.data&&globalThis.__sveltekit_c2lh6f.data,document.URL!==location.href&&(location.href=location.href),w=e,await e.hooks.init?.(),Ue=At(e),$=document.documentElement,ve=t,me=e.nodes[0],ee=e.nodes[1],me(),ee(),y=history.state?.[B],R=history.state?.[W],y||(y=R=Date.now(),history.replaceState({...history.state,[B]:y,[W]:R},""));const a=D[y];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await tn(ve,n)):(await K({type:"enter",url:Re(w.hash?rn(new URL(location.href)):location.href),replace_state:!0}),r()),en()}function Mt(){te.length=0,Ae=!1}function st(e){ne.some(t=>t?.snapshot)&&(z[e]=ne.map(t=>t?.snapshot?.capture()))}function it(e){z[e]?.forEach((t,n)=>{ne[n]?.snapshot?.restore(t)})}function We(){Le(y),Ve(He,D),st(R),Ve(ze,z)}async function ct(e,t,n,a){let r;t.invalidateAll&&nt(),await K({type:"goto",url:Re(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{t.invalidateAll&&(Ae=!0,r=[...Ge.keys()]),t.invalidate&&t.invalidate.forEach(Zt)}}),t.invalidateAll&&De().then(De).then(()=>{Ge.forEach(({resource:s},o)=>{r?.includes(o)&&s.refresh?.()})})}async function Ft(e){if(e.id!==S?.id){const t={};if(re.add(t),S={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(re.delete(t),n.type==="loaded"&&n.state.error&&nt(),n)),fork:null},qe){const n=S;n.fork=n.promise.then(a=>{if(n===S&&a.type==="loaded")try{return qe(()=>{Te.$set(a.props)})}catch{}return null})}}return S.promise}async function ge(e){const t=(await ue(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}function lt(e,t,n){_=e.state;const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),Te=new w.root({target:t,props:{...e.props,stores:C,components:ne},hydrate:n,sync:!1}),it(R),n){const r={from:null,to:{params:_.params,route:{id:_.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(s=>s(r))}ae=!0}function oe({url:e,params:t,branch:n,status:a,error:r,route:s,form:o}){let i="never";if(x&&(e.pathname===x||e.pathname===x+"/"))i="always";else for(const u of n)u?.slash!==void 0&&(i=u.slash);e.pathname=_t(e.pathname,i),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:r,route:s},props:{constructors:Ct(n).map(u=>u.node.component),page:Ce(k)}};o!==void 0&&(c.props.form=o);let l={},f=!k,h=0;for(let u=0;u<Math.max(n.length,_.branch.length);u+=1){const g=n[u],m=_.branch[u];g?.data!==m?.data&&(f=!0),g&&(l={...l,...g.data},f&&(c.props[`data_${h}`]=l),h+=1)}return(!_.url||e.href!==_.url.href||_.error!==r||o!==void 0&&o!==k.form||f)&&(c.props.page={error:r,params:t,route:{id:s?.id??null},state:{},status:a,url:new URL(e),form:o??null,data:f?l:k.data}),c}async function Ie({loader:e,parent:t,url:n,params:a,route:r,server_data_node:s}){let o=null;const i={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},c=await e();return{node:c,loader:e,server:s,universal:c.universal?.load?{type:"data",data:o,uses:i}:null,data:o??s?.data??null,slash:c.universal?.trailingSlash??s?.slash}}function Gt(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const s=ae?Et(a,r.href,t):kt(a,t);return{resolved:r,promise:s}}function Wt(e,t,n,a,r,s){if(Ae)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const o of r.search_params)if(a.has(o))return!0;for(const o of r.params)if(s[o]!==_.params[o])return!0;for(const o of r.dependencies)if(te.some(i=>i(new URL(o))))return!0;return!1}function Oe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),s=t.searchParams.getAll(a);r.every(o=>s.includes(o))&&s.every(o=>r.includes(o))&&n.delete(a)}return n}function zt({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:Ce(k),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:a,route:r,preload:s}){if(S?.id===e)return re.delete(S.token),S.promise;const{errors:o,layouts:i,leaf:c}=r,l=[...i,c];o.forEach(p=>p?.().catch(()=>{})),l.forEach(p=>p?.[1]().catch(()=>{}));const f=_.url?e!==se(_.url):!1,h=_.route?r.id!==_.route.id:!1,v=Yt(_.url,n);let u=!1;const g=l.map(async(p,d)=>{if(!p)return;const E=_.branch[d];return p[1]===E?.loader&&!Wt(u,h,f,v,E.universal?.uses,a)?E:(u=!0,Ie({loader:p[1],url:n,params:a,route:r,parent:async()=>{const O={};for(let U=0;U<d;U+=1)Object.assign(O,(await g[U])?.data);return O},server_data_node:Oe(p[0]?{type:"skip"}:null,p[0]?E?.server:void 0)}))});for(const p of g)p.catch(()=>{});const m=[];for(let p=0;p<l.length;p+=1)if(l[p])try{m.push(await g[p])}catch(d){if(d instanceof ke)return{type:"redirect",location:d.location};if(re.has(s))return zt({error:await X(d,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let E=xe(d),L;if(d instanceof be)L=d.body;else{if(await C.updated.check())return await tt(),await H(n);L=await X(d,{params:a,url:n,route:{id:r.id}})}const O=await Ht(p,m,o);return O?oe({url:n,params:a,branch:m.slice(0,O.idx).concat(O.node),status:E,error:L,route:r}):await dt(n,{id:r.id},L,E)}else m.push(void 0);return oe({url:n,params:a,branch:m,status:200,error:null,route:r,form:t?void 0:null})}async function Ht(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function $e({status:e,error:t,url:n,route:a}){const r={};let s=null;try{const o=await Ie({loader:me,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Oe(s)}),i={node:await ee(),loader:ee,universal:null,server:null,data:null};return oe({url:n,params:r,branch:[o,i],status:e,error:t,route:null})}catch(o){if(o instanceof ke)return ct(new URL(o.location,location.href),{},0);throw o}}async function Jt(e){const t=e.href;if(Q.has(t))return Q.get(t);let n;try{const a=(async()=>{let r=await w.hooks.reroute({url:new URL(e),fetch:async(s,o)=>Gt(s,o,e).promise})??e;if(typeof r=="string"){const s=new URL(e);w.hash?s.hash=r:s.pathname=r,r=s}return r})();Q.set(t,a),n=await a}catch{Q.delete(t);return}return n}async function ue(e,t){if(e&&!le(e,x,w.hash)){const n=await Jt(e);if(!n)return;const a=Xt(n);for(const r of Ue){const s=r.exec(a);if(s)return{id:se(e),invalidating:t,route:r,params:vt(s),url:e}}}}function Xt(e){return mt(w.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(x.length))||"/"}function se(e){return(w.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ft({url:e,type:t,intent:n,delta:a,event:r}){let s=!1;const o=Pe(_,n,e,t);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const i={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return J||at.forEach(c=>c(i)),s?null:o}async function K({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:s,state:o={},redirect_count:i=0,nav_token:c={},accept:l=Me,block:f=Me,event:h}){const v=N;N=c;const u=await ue(t,!1),g=e==="enter"?Pe(_,u,t,e):ft({url:t,type:e,delta:n?.delta,intent:u,event:h});if(!g){f(),N===c&&(N=v);return}const m=y,p=R;l(),J=!0,ae&&g.navigation.type!=="enter"&&C.navigating.set(Y.current=g.navigation);let d=u&&await ut(u);if(!d){if(le(t,x,w.hash))return await H(t,s);d=await dt(t,{id:null},await X(new Ee(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=u?.url||t,N!==c)return g.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(i<20){await K({type:e,url:new URL(d.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:s,state:o,redirect_count:i+1,nav_token:c}),g.fulfil(void 0);return}d=await $e({status:500,error:await X(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await C.updated.check()&&(await tt(),await H(t,s));if(Mt(),Le(m),st(p),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),o=n?n.state:o,!n){const b=s?0:1,q={[B]:y+=b,[W]:R+=b,[Je]:o};(s?history.replaceState:history.pushState).call(history,q,"",t),s||Bt(y,R)}const E=S?.fork;if(S=null,d.props.page.state=o,ae){const b=(await Promise.all(Array.from(Kt,P=>P(g.navigation)))).filter(P=>typeof P=="function");if(b.length>0){let P=function(){b.forEach(fe=>{G.delete(fe)})};b.push(P),b.forEach(fe=>{G.add(fe)})}_=d.state,d.props.page&&(d.props.page.url=t);const q=E&&await E;q?q.commit():Te.$set(d.props),Dt(d.props.page),ot=!0}else lt(d,ve,!1);const{activeElement:L}=document,O=[qt()];Ne&&O.push(Ne()),await Promise.all(O);let U=n?n.scroll:r?ce():null;if(Fe){const b=t.hash&&document.getElementById(ht(t));if(U)scrollTo(U.x,U.y);else if(b){b.scrollIntoView();const{top:q,left:P}=b.getBoundingClientRect();U={x:pageXOffset+P,y:pageYOffset+q}}else scrollTo(0,0)}const pt=document.activeElement!==L&&document.activeElement!==document.body;!a&&!pt&&an(t,U),Fe=!0,d.props.page&&Object.assign(k,d.props.page),J=!1,e==="popstate"&&it(R),g.fulfil(void 0),G.forEach(b=>b(g.navigation)),C.navigating.set(Y.current=null)}async function dt(e,t,n,a,r){return e.origin===ie&&e.pathname===location.pathname&&!rt?await $e({status:a,error:n,url:e,route:t}):await H(e,r)}function Qt(){let e,t,n;$.addEventListener("mousemove",i=>{const c=i.target;clearTimeout(e),e=setTimeout(()=>{s(c,j.hover)},20)});function a(i){i.defaultPrevented||s(i.composedPath()[0],j.tap)}$.addEventListener("mousedown",a),$.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(i=>{for(const c of i)c.isIntersecting&&(ge(new URL(c.target.href)),r.unobserve(c.target))},{threshold:0});async function s(i,c){const l=Qe(i,$),f=l===t&&c>=n;if(!l||f)return;const{url:h,external:v,download:u}=_e(l,x,w.hash);if(v||u)return;const g=Z(l),m=h&&se(_.url)===se(h);if(!(g.reload||m))if(c<=g.preload_data){t=l,n=j.tap;const p=await ue(h,!1);if(!p)return;Ft(p)}else c<=g.preload_code&&(t=l,n=c,ge(h))}function o(){r.disconnect();for(const i of $.querySelectorAll("a")){const{url:c,external:l,download:f}=_e(i,x,w.hash);if(l||f)continue;const h=Z(i);h.reload||(h.preload_code===j.viewport&&r.observe(i),h.preload_code===j.eager&&ge(c))}}G.add(o),o()}function X(e,t){if(e instanceof be)return e.body;const n=xe(e),a=jt(e);return w.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function dn(e,t={}){return e=new URL(Re(e)),e.origin!==ie?Promise.reject(new Error("goto: invalid URL")):ct(e,t,0)}function Zt(e){if(typeof e=="function")te.push(e);else{const{href:t}=new URL(e,location.href);te.push(n=>n.href===t)}}function en(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!J){const a=Pe(_,void 0,null,"leave"),r={...a.navigation,cancel:()=>{n=!0,a.reject(new Error("navigation cancelled"))}};at.forEach(s=>s(r))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||Qt(),$.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=Qe(t.composedPath()[0],$);if(!n)return;const{url:a,external:r,target:s,download:o}=_e(n,x,w.hash);if(!a)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const i=Z(n);if(!(n instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||o)return;const[l,f]=(w.hash?a.hash.replace(/^#/,""):a.href).split("#"),h=l===de(location);if(r||i.reload&&(!h||!f)){ft({url:a,type:"link",event:t})?J=!0:t.preventDefault();return}if(f!==void 0&&h){const[,v]=_.url.href.split("#");if(v===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const u=n.ownerDocument.getElementById(decodeURIComponent(f));u&&(u.scrollIntoView(),u.focus())}return}if(M=!0,Le(y),e(a),!i.replace_state)return;M=!1}t.preventDefault(),await new Promise(v=>{requestAnimationFrame(()=>{setTimeout(v,0)}),setTimeout(v,100)}),await K({type:"link",url:a,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??a.href===location.href,event:t})}),$.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if((a?.formTarget||n.target)==="_blank"||(a?.formMethod||n.method)!=="get")return;const o=new URL(a?.hasAttribute("formaction")&&a?.formAction||n.action);if(le(o,x,!1))return;const i=t.target,c=Z(i);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(i,a);o.search=new URLSearchParams(l).toString(),K({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!we){if(t.state?.[B]){const n=t.state[B];if(N={},n===y)return;const a=D[n],r=t.state[Je]??{},s=new URL(t.state[Ot]??location.href),o=t.state[W],i=_.url?de(location)===de(_.url):!1;if(o===R&&(ot||i)){r!==k.state&&(k.state=r),e(s),D[y]=ce(),a&&scrollTo(a.x,a.y),y=n;return}const l=n-y;await K({type:"popstate",url:s,popped:{state:r,scroll:a,delta:l},accept:()=>{y=n,R=o},block:()=>{history.go(-l)},nav_token:N,event:t})}else if(!M){const n=new URL(location.href);e(n),w.hash&&location.reload()}}}),addEventListener("hashchange",()=>{M&&(M=!1,history.replaceState({...history.state,[B]:++y,[W]:R},"",location.href))});for(const t of document.querySelectorAll("link"))Vt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(Y.current=null)});function e(t){_.url=k.url=t,C.page.set(Ce(k)),C.page.notify()}}async function tn(e,{status:t=200,error:n,node_ids:a,params:r,route:s,server_route:o,data:i,form:c}){rt=!0;const l=new URL(location.href);let f;({params:r={},route:s={id:null}}=await ue(l,!1)||{}),f=Ue.find(({id:u})=>u===s.id);let h,v=!0;try{const u=a.map(async(m,p)=>{const d=i[p];return d?.uses&&(d.uses=nn(d.uses)),Ie({loader:w.nodes[m],url:l,params:r,route:s,parent:async()=>{const E={};for(let L=0;L<p;L+=1)Object.assign(E,(await u[L]).data);return E},server_data_node:Oe(d)})}),g=await Promise.all(u);if(f){const m=f.layouts;for(let p=0;p<m.length;p++)m[p]||g.splice(p,0,void 0)}h=oe({url:l,params:r,branch:g,status:t,error:n,form:c,route:f??null})}catch(u){if(u instanceof ke){await H(new URL(u.location,location.href));return}h=await $e({status:xe(u),error:await X(u,{url:l,params:r,route:s}),url:l,route:s}),e.textContent="",v=!1}h.props.page&&(h.props.page.state={}),lt(h,e,v)}function nn(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let we=!1;function an(e,t=null){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=ht(e);if(a&&document.getElementById(a)){const{x:s,y:o}=t??ce();setTimeout(()=>{const i=history.state;we=!0,location.replace(`#${a}`),w.hash&&location.replace(e.hash),history.replaceState(i,"",e.hash),scrollTo(s,o),we=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const s=[];for(let o=0;o<r.rangeCount;o+=1)s.push(r.getRangeAt(o));setTimeout(()=>{if(r.rangeCount===s.length){for(let o=0;o<r.rangeCount;o+=1){const i=s[o],c=r.getRangeAt(o);if(i.commonAncestorContainer!==c.commonAncestorContainer||i.startContainer!==c.startContainer||i.endContainer!==c.endContainer||i.startOffset!==c.startOffset||i.endOffset!==c.endOffset)return}r.removeAllRanges()}})}}}function Pe(e,t,n,a){let r,s;const o=new Promise((c,l)=>{r=c,s=l});return o.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:a,complete:o},fulfil:r,reject:s}}function Ce(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function rn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function ht(e){let t;if(w.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{fn as a,dn as g,sn as l,k as p,C as s};
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/DuUZ8ki1.js";export{o as load_css,r as start};