blogwright-analytics 0.4.0-beta.1 → 0.4.0-beta.3
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/README.md +1 -1
- package/dist/app/_app/immutable/chunks/D1DPCGav.js +1 -0
- package/dist/app/_app/immutable/entry/{app.Bx3Nm8dB.js → app.bmQ6qGMT.js} +2 -2
- package/dist/app/_app/immutable/entry/start.Dbi2RtrK.js +1 -0
- package/dist/app/_app/immutable/nodes/{1.CgIvAGf6.js → 1.Biso6Rq1.js} +1 -1
- package/dist/app/_app/version.json +1 -1
- package/dist/app/index.html +6 -6
- package/dist/aws/firehose.d.ts +32 -1
- package/dist/aws/firehose.js +11 -0
- package/dist/commands.js +1 -1
- package/dist/nodes.d.ts +65 -18
- package/dist/nodes.js +407 -78
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.js +2 -2
- package/dist/queries.d.ts +1 -1
- package/dist/queries.js +1 -1
- package/dist/transform-bundle/transform-manifest.json +2 -2
- package/package.json +2 -2
- package/dist/app/_app/immutable/chunks/CouIqODb.js +0 -1
- package/dist/app/_app/immutable/entry/start.BC_BYyPt.js +0 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ through DuckDB. The site's existing CloudWatch log delivery is untouched - one C
|
|
|
7
7
|
delivery source carries several deliveries, so this one is added beside it.
|
|
8
8
|
|
|
9
9
|
This package owns the whole pipeline: its own four AWS service clients (S3 Tables,
|
|
10
|
-
Firehose, Glue, Lambda), the
|
|
10
|
+
Firehose, Glue, Lambda), the fourteen resource nodes those clients reconcile, the
|
|
11
11
|
record-transform Lambda, the named query set, and the dashboard application. It depends
|
|
12
12
|
on `blogwright-core` (ports, the SigV4 transport and signer, the S3 and Secrets Manager
|
|
13
13
|
clients) and on DuckDB, which is reached only through the `AnalyticsQuery` port's one
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{G as e,K as t,dt as n,lt as r,n as i,pt as a,q as o,t as s}from"./D2BnX0Uk.js";import"./B3vZDoek.js";var c=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var v=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);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);y.delete(t)}}return window.fetch(t,n)}function x(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${g(...e)}"]`}return n}var te=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,ne=/^\/\((?:[^)]+)\)$/;function re(e){let t=[];return{pattern:e===`/`||ne.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1447kmy?.base??``,de=globalThis.__sveltekit_1447kmy?.assets??S??``,fe=`1788238916385`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var Ce={v:h};function we(){let{set:e,subscribe:t}=a(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Ce.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ee],[...new Set([...Ee])];function De(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function Oe(e){return e instanceof c||e instanceof u?e.status:500}function ke(e){return e instanceof u?e.text:`Internal Error`}var j,M,Ae,je=i.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(i.toString()),Me=`a:`;je?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Me)},M={current:null},Ae={current:!1}):(j=new class{#e=n({});get data(){return e(this.#e)}set data(e){r(this.#e,e)}#t=n(null);get form(){return e(this.#t)}set form(e){r(this.#t,e)}#n=n(null);get error(){return e(this.#n)}set error(e){r(this.#n,e)}#r=n({});get params(){return e(this.#r)}set params(e){r(this.#r,e)}#i=n({id:null});get route(){return e(this.#i)}set route(e){r(this.#i,e)}#a=n({});get state(){return e(this.#a)}set state(e){r(this.#a,e)}#o=n(-1);get status(){return e(this.#o)}set status(e){r(this.#o,e)}#s=n(new URL(Me));get url(){return e(this.#s)}set url(e){r(this.#s,e)}},M=new class{#e=n(null);get current(){return e(this.#e)}set current(e){r(this.#e,e)}},Ae=new class{#e=n(!1);get current(){return e(this.#e)}set current(e){r(this.#e,e)}},Ce.v=()=>Ae.current=!0);function Ne(e){Object.assign(j,e)}var{onMount:Pe,tick:Fe}=s,Ie=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=le(`sveltekit:scroll`)??{},F=le(`sveltekit:snapshot`)??{},I={url:Se({}),page:Se({}),navigating:a(null),updated:we()};function Le(e){P[e]=E()}function Re(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function ze(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var Be,Ve,R,z,He,B,Ue={},We={},V=[],H=[],U=null;function Ge(){U?.fork?.then(e=>e?.discard()),U=null,Q={element:void 0,href:void 0}}var Ke=new Map,qe=new Set,Je=new Set,W=new Set,G={branch:[],error:null,url:null,nav:null},Ye=!1,Xe=!1,Ze=!0,K=!1,q=!1,Qe=!1,$e=!1,et,J,Y,X,tt=new Set,nt=new Map,rt=new Map;async function it(e,t,n){if(globalThis.__sveltekit_1447kmy.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1447kmy.data;for(let t in e)Ue[t]=e[t];for(let e in n)Ue[e]=n[e];for(let e in r)Ue[e]=r[e];for(let e in t)We[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),Be=ce(e),z=document.documentElement,He=t,Ve=e.nodes[0],R=e.nodes[1],Ve(),R(),J=history.state?.[C],Y=history.state?.[w],J||(J=Y=Date.now(),history.replaceState({...history.state,[C]:J,[w]:Y},``));let r=P[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Mt(He,n)):(await Z({type:`enter`,url:_e(B.hash?Rt(new URL(location.href)):location.href),replace_state:!0}),i()),jt()}function at(){V.length=0,$e=!1}function ot(e){H.some(e=>e?.snapshot)&&(F[e]=H.map(e=>e?.snapshot?.capture()))}function st(e){F[e]?.forEach((e,t)=>{H[t]?.snapshot?.restore(e)})}function ct(){Le(J),ue(me,P),ot(Y),ue(pe,F)}async function lt(e,t,n,r){let i,a;t.invalidateAll&&Ge(),await Z({type:`goto`,url:_e(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{if(t.invalidateAll){$e=!0,i=new Set;for(let[e,t]of nt)for(let[n,r]of t)r.resource?.reset(),i.add(A(e,n));a=new Set;for(let[e,t]of rt)for(let n of t.keys())a.add(A(e,n))}t.invalidate&&t.invalidate.forEach(At)}}),t.invalidateAll&&o().then(o).then(()=>{for(let[e,t]of nt)for(let[n,{resource:r}]of t)i?.has(A(e,n))&&r.start();for(let[e,t]of rt)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.reconnect()})}async function ut(e){if(e.id!==U?.id){Ge();let t={};tt.add(t),U={id:e.id,token:t,promise:bt({...e,preload:t}).then(e=>(tt.delete(t),e.type===`loaded`&&e.state.error&&Ge(),e)),fork:null}}return U.promise}async function dt(e){let t=(await wt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ft(e,t,n){let r={params:G.params,route:{id:G.route?.id??null},url:new URL(location.href)};if(G={...e.state,nav:r},Ne(e.props.page),et=new B.root({target:t,props:{...e.props,stores:I,components:H},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[J]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};W.forEach(t=>t(e))}st(Y),Xe=!0}async function pt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:Lt(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;e<Math.max(n.length,G.branch.length);e+=1){let t=n[e],r=G.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!G.url||e.href!==G.url.href||G.error!==a||s!==void 0&&s!==j.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:j.data}),l}async function mt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function ht(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Xe?b(r,i.href,t):ee(r,t)}}function gt(e,t,n,r,i,a){if($e)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==G.params[e])return!0;for(let e of i.dependencies)if(V.some(t=>t(new URL(e))))return!0;return!1}function _t(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function vt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function yt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Lt(j),constructors:[]}}}async function bt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return tt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=G.url?e!==Et(G.url):!1,p=G.route?i.id!==G.route.id:!1,m=vt(G.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=G.branch[t];return e[1]===a?.loader&&!gt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,mt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:_t(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(h);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(a&&tt.has(a))return yt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=Oe(t),u;if(t instanceof c)u=t.body;else{if(await I.updated.check())return await ze(),await L(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await xt(e,v,o);return d?pt({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Ot(n,{id:i.id},u,s)}else v.push(void 0);return pt({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function xt(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function St({status:e,error:t,url:n,route:r}){let i={};try{return pt({url:n,params:i,branch:[await mt({loader:Ve,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:_t(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await lt(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ct(e){let t=e.href;if(Ke.has(t))return Ke.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>ht(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();Ke.set(t,r),n=await r}catch{Ke.delete(t);return}return n}async function wt(e,t){if(e&&!k(e,S,B.hash)){let n=await Ct(e);if(!n)return;let r=Tt(n);for(let n of Be){let i=n.exec(r);if(i)return{id:Et(e),invalidating:t,route:n,params:p(i),url:e}}}}function Tt(e){return f(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Et(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Dt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=It(G,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:n,popped:r,keepfocus:i,noscroll:a,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=X;X=d;let _=await wt(n,!1),v=e===`enter`?It(G,_,n,e):Dt({url:n,type:e,delta:r?.delta,intent:_,scroll:r?.scroll,event:m});if(!v){p(),X===d&&(X=g);return}let y=J,ee=Y;f(),K=!0,Xe&&v.navigation.type!==`enter`&&I.navigating.set(M.current=v.navigation);let b=_&&await bt(_);if(!b){if(k(n,S,B.hash))return await L(n,s);b=await Ot(n,{id:null},await $(new u(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,s)}if(n=_?.url||n,X!==d){v.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:e,url:new URL(b.location,n),popped:r,keepfocus:i,noscroll:a,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}if(b=await St({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await I.updated.check())return await ze(),await L(n,s);if(at(),Le(y),ot(ee),b.props.page.url.pathname!==n.pathname&&(n.pathname=b.props.page.url.pathname),c=r?r.state:c,!r){let e=+!s,t={[C]:J+=e,[w]:Y+=e,[he]:c};(s?history.replaceState:history.pushState).call(history,t,``,n),s||Re(J,Y)}let x=_&&U?.id===_.id?U.fork:null;U?.fork&&!x?Ge():(U=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let te;if(Xe){let e=(await Promise.all(Array.from(Je,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{W.delete(e)})}e.push(t),e.forEach(e=>{W.add(e)})}let r=v.navigation.to;G={...b.state,nav:{params:r.params,route:r.route,url:r.url}},b.props.page&&(b.props.page.url=n),!i&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let a=x&&await x;a?te=a.commit():(N=null,et.$set(b.props),N&&Object.assign(b.props.page,N),Ne(b.props.page),te=t?.()),Qe=!0}else await ft(b,He,!1);let{activeElement:ne}=document;if(await te,await o(),await o(),X!==d){v.reject(Error(`navigation aborted`));return}b.props.page&&N&&Object.assign(b.props.page,N);let re=null;if(Ze){let e=r?r.scroll:a?E():null;e?scrollTo(e.x,e.y):(re=n.hash&&document.getElementById(zt(n)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!i&&!ie&&Ft(n,!re),Ze=!0,K=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),W.forEach(e=>e(v.navigation)),e===`popstate`&&st(Y),I.navigating.set(M.current=null)}async function Ot(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!Ye?await St({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function kt(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(dt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=be(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=xe(r,S,B.hash);if(o||s)return;let c=O(r),l=a&&Et(G.url)===Et(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await wt(a,!1);if(!e)return;ut(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,dt(a))}}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=xe(e,S,B.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&dt(t))}}W.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=Oe(e),r=ke(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function At(e){if(typeof e==`function`)V.push(e);else{let{href:t}=new URL(e,location.href);V.push(e=>e.href===t)}}function jt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ct(),!K){let e=It(G,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ct()}),navigator.connection?.saveData||kt(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Dt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=G.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Le(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Pt){if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(X={},n===J)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=G.url?m(location)===m(G.url):!1;if(o===Y&&(Qe||s)){i!==j.state&&(j.state=i),e(a),P[J]=E(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),B.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[C]:++J,[w]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Ie.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){G.url=j.url=e,I.page.set(Lt(j)),I.page.notify()}}async function Mt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ye=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await wt(u,!1)||{}),d=Be.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Nt(r.uses)),mt({loader:B.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:_t(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await pt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l)return await L(new URL(t.location,location.href));f=await St({status:Oe(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await ft(f,e,p))}function Nt(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??[])}}var Pt=!1;function Ft(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=zt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;Pt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Pt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function It(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Lt(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 Rt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function zt(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Te as i,M as n,j as r,it as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.UTMEigHJ.js","../chunks/D2BnX0Uk.js","../chunks/xihTtKlq.js","../assets/0.BTQrrh5B.css","../nodes/1.
|
|
2
|
-
import{$ as e,B as t,Ct as n,E as r,F as i,G as a,I as o,L as s,N as c,_t as l,dt as u,et as d,ft as f,gt as p,i as m,it as h,j as g,lt as _,n as v,ot as y,q as b,r as x,rt as S,s as C,tt as w}from"../chunks/D2BnX0Uk.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=s(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=s(`<!> <!>`,1);function k(s,x){l(x,!0);let T=m(x,`components`,23,()=>[]),E=m(x,`data_0`,3,null),k=m(x,`data_1`,3,null);w(()=>x.stores.page.set(x.page)),d(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),k(),x.stores.page.notify()});let A=u(!1),j=u(!1),M=u(null);v(()=>{let e=x.stores.page.subscribe(()=>{a(A)&&(_(j,!0),b().then(()=>{_(M,document.title||`untitled page`,!0)}))});return _(A,!0),e});let N=f(()=>x.constructors[1]);var P=O(),F=h(P),I=e=>{let t=f(()=>x.constructors[0]);var n=o(),s=h(n);r(s,()=>a(t),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var n=o(),s=h(n);r(s,()=>a(N),(e,t)=>{C(t(e,{get data(){return k()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),i(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),i(e,n)},L=e=>{let t=f(()=>x.constructors[0]);var n=o(),s=h(n);r(s,()=>a(t),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),i(e,n)};g(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=y(F,2),z=r=>{var o=D(),s=S(o),l=n=>{var r=t();e(()=>c(r,a(M))),i(n,r)};g(s,e=>{a(j)&&e(l)}),n(o),i(r,o)};g(R,e=>{a(A)&&e(z)}),i(s,P),p()}var A=x(k),j=[()=>T(()=>import(`../nodes/0.UTMEigHJ.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>T(()=>import(`../nodes/1.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.UTMEigHJ.js","../chunks/D2BnX0Uk.js","../chunks/xihTtKlq.js","../assets/0.BTQrrh5B.css","../nodes/1.Biso6Rq1.js","../chunks/D1DPCGav.js","../chunks/B3vZDoek.js","../nodes/2.CQMIFodk.js","../chunks/HclGiUj8.js","../chunks/Bd1gDe3Y.js","../chunks/Doz7YX1W.js","../chunks/CyCGwyzf.js","../chunks/ZvRY-WVy.js","../chunks/DKMlMI4a.js","../chunks/Dh958be7.js","../chunks/CvyVA_jC.js","../chunks/caXkbKD3.js","../chunks/C58PZtCD.js","../assets/Group.DaJMILJc.css","../chunks/DJc8C0NK.js","../chunks/Db0q5_zr.js","../chunks/CCch3uox.js","../chunks/V9ZjaxiY.js","../chunks/BID1NNRh.js","../chunks/-aNGNaBT.js","../chunks/RobXhXPM.js","../chunks/Dfvzj6n2.js","../chunks/xIq_fFFM.js","../chunks/BZrG8lR6.js","../assets/Text.j9l35qB0.css","../chunks/DCkHk5n_.js","../chunks/BC0iYSWx.js","../assets/Path.CvpwNZ6g.css","../chunks/BJngAqxk.js","../chunks/B5KRA4hC.js","../chunks/BR2LaRms.js","../chunks/CRTcXoMo.js","../chunks/vDgBJUjM.js","../assets/Rect.CtRaGMmQ.css","../chunks/DMoYijy0.js","../assets/Line.fkmsECm9.css","../chunks/D0Ty6LN0.js","../assets/Circle.C5MKzgk2.css","../chunks/BnKf2MvA.js","../assets/2.DoCaRy3T.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,B as t,Ct as n,E as r,F as i,G as a,I as o,L as s,N as c,_t as l,dt as u,et as d,ft as f,gt as p,i as m,it as h,j as g,lt as _,n as v,ot as y,q as b,r as x,rt as S,s as C,tt as w}from"../chunks/D2BnX0Uk.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=s(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=s(`<!> <!>`,1);function k(s,x){l(x,!0);let T=m(x,`components`,23,()=>[]),E=m(x,`data_0`,3,null),k=m(x,`data_1`,3,null);w(()=>x.stores.page.set(x.page)),d(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),k(),x.stores.page.notify()});let A=u(!1),j=u(!1),M=u(null);v(()=>{let e=x.stores.page.subscribe(()=>{a(A)&&(_(j,!0),b().then(()=>{_(M,document.title||`untitled page`,!0)}))});return _(A,!0),e});let N=f(()=>x.constructors[1]);var P=O(),F=h(P),I=e=>{let t=f(()=>x.constructors[0]);var n=o(),s=h(n);r(s,()=>a(t),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var n=o(),s=h(n);r(s,()=>a(N),(e,t)=>{C(t(e,{get data(){return k()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),i(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),i(e,n)},L=e=>{let t=f(()=>x.constructors[0]);var n=o(),s=h(n);r(s,()=>a(t),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),i(e,n)};g(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=y(F,2),z=r=>{var o=D(),s=S(o),l=n=>{var r=t();e(()=>c(r,a(M))),i(n,r)};g(s,e=>{a(j)&&e(l)}),n(o),i(r,o)};g(R,e=>{a(A)&&e(z)}),i(s,P),p()}var A=x(k),j=[()=>T(()=>import(`../nodes/0.UTMEigHJ.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>T(()=>import(`../nodes/1.Biso6Rq1.js`),__vite__mapDeps([4,1,5,6,2]),import.meta.url),()=>T(()=>import(`../nodes/2.CQMIFodk.js`),__vite__mapDeps([7,1,8,2,9,6,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]),import.meta.url)],M=[],N={"/":[2]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,t}from"../chunks/D1DPCGav.js";export{e as load_css,t as start};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,F as t,L as n,N as r,_t as i,at as a,gt as o,it as s,ot as c}from"../chunks/D2BnX0Uk.js";import{r as l}from"../chunks/
|
|
1
|
+
import{$ as e,F as t,L as n,N as r,_t as i,at as a,gt as o,it as s,ot as c}from"../chunks/D2BnX0Uk.js";import{r as l}from"../chunks/D1DPCGav.js";import"../chunks/xihTtKlq.js";var u={get data(){return l.data},get error(){return l.error},get form(){return l.form},get params(){return l.params},get route(){return l.route},get state(){return l.state},get status(){return l.status},get url(){return l.url}},d=n(`<h1> </h1> <p> </p>`,1);function f(n,l){i(l,!0);var f=d(),p=s(f),m=a(p,!0),h=c(p,2),g=a(h,!0);e(()=>{r(m,u.status),r(g,u.error?.message)}),t(n,f),o()}export{f as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1788238916385"}
|
package/dist/app/index.html
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<!-- A dashboard bound to loopback has no icon to serve; an empty data URL
|
|
7
7
|
answers the browser's request without a round trip that would 404. -->
|
|
8
8
|
<link rel="icon" href="data:," />
|
|
9
|
-
<link href="./_app/immutable/entry/start.
|
|
10
|
-
<link href="./_app/immutable/chunks/
|
|
9
|
+
<link href="./_app/immutable/entry/start.Dbi2RtrK.js" rel="modulepreload">
|
|
10
|
+
<link href="./_app/immutable/chunks/D1DPCGav.js" rel="modulepreload">
|
|
11
11
|
<link href="./_app/immutable/chunks/D2BnX0Uk.js" rel="modulepreload">
|
|
12
12
|
<link href="./_app/immutable/chunks/B3vZDoek.js" rel="modulepreload">
|
|
13
|
-
<link href="./_app/immutable/entry/app.
|
|
13
|
+
<link href="./_app/immutable/entry/app.bmQ6qGMT.js" rel="modulepreload">
|
|
14
14
|
<link href="./_app/immutable/chunks/HclGiUj8.js" rel="modulepreload">
|
|
15
15
|
<link href="./_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
|
|
16
16
|
<link href="./_app/immutable/nodes/0.UTMEigHJ.js" rel="modulepreload">
|
|
@@ -63,15 +63,15 @@
|
|
|
63
63
|
|
|
64
64
|
<script>
|
|
65
65
|
{
|
|
66
|
-
|
|
66
|
+
__sveltekit_1447kmy = {
|
|
67
67
|
base: new URL(".", location).pathname.slice(0, -1)
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
const element = document.currentScript.parentElement;
|
|
71
71
|
|
|
72
72
|
Promise.all([
|
|
73
|
-
import("./_app/immutable/entry/start.
|
|
74
|
-
import("./_app/immutable/entry/app.
|
|
73
|
+
import("./_app/immutable/entry/start.Dbi2RtrK.js"),
|
|
74
|
+
import("./_app/immutable/entry/app.bmQ6qGMT.js")
|
|
75
75
|
]).then(([kit, app]) => {
|
|
76
76
|
kit.start(app, element);
|
|
77
77
|
});
|
package/dist/aws/firehose.d.ts
CHANGED
|
@@ -72,6 +72,25 @@ export interface IcebergDestinationInput {
|
|
|
72
72
|
* without this processor would fail every record with nothing surfacing as an error.
|
|
73
73
|
*/
|
|
74
74
|
readonly transformLambdaArn: string;
|
|
75
|
+
/**
|
|
76
|
+
* The CloudWatch log group Firehose writes its delivery errors into, sent as
|
|
77
|
+
* `CloudWatchLoggingOptions.LogGroupName`. Firehose creates neither the group nor the
|
|
78
|
+
* stream inside it, so both have to exist before a record can fail into them.
|
|
79
|
+
*
|
|
80
|
+
* Required rather than optional, for {@link STREAM_APPEND_ONLY}'s reason: this client
|
|
81
|
+
* builds exactly one shape of destination and always enables logging, so an optional
|
|
82
|
+
* field would model a call site that does not exist. A destination that quietly
|
|
83
|
+
* omitted the options is the failure this field exists to remove - one where the only
|
|
84
|
+
* account of an undelivered record is the record's absence.
|
|
85
|
+
*/
|
|
86
|
+
readonly logGroupName: string;
|
|
87
|
+
/**
|
|
88
|
+
* The log stream inside {@link IcebergDestinationInput.logGroupName}, sent as
|
|
89
|
+
* `CloudWatchLoggingOptions.LogStreamName`. Named explicitly because enabling logging
|
|
90
|
+
* through the API - rather than through the console - creates neither the group nor
|
|
91
|
+
* the stream, so the caller owns both names.
|
|
92
|
+
*/
|
|
93
|
+
readonly logStreamName: string;
|
|
75
94
|
}
|
|
76
95
|
/**
|
|
77
96
|
* A delivery stream's lifecycle state in this repo's vocabulary rather than the
|
|
@@ -85,7 +104,7 @@ export type DeliveryState = 'creating' | 'create-failed' | 'active' | 'deleting'
|
|
|
85
104
|
* The narrow view of `DescribeDeliveryStream` that `analytics status` needs, plus the
|
|
86
105
|
* three fields {@link FirehoseClient.updateDestination} cannot be called without.
|
|
87
106
|
*
|
|
88
|
-
* The last
|
|
107
|
+
* The last four are optional and are set only when the response actually carried them.
|
|
89
108
|
* `VersionId` and `Destinations` are documented as required members of
|
|
90
109
|
* `DeliveryStreamDescription`, so on the service's own response model they are always
|
|
91
110
|
* there - but an absent one must reach the caller as absent rather than as `''` or
|
|
@@ -124,6 +143,18 @@ export interface DeliveryStreamStatus {
|
|
|
124
143
|
* that omits the flag.
|
|
125
144
|
*/
|
|
126
145
|
readonly appendOnly?: boolean | undefined;
|
|
146
|
+
/**
|
|
147
|
+
* Whether the live destination has CloudWatch error logging switched on, off
|
|
148
|
+
* `Destinations[0].IcebergDestinationDescription.CloudWatchLoggingOptions.Enabled`.
|
|
149
|
+
*
|
|
150
|
+
* Read back rather than assumed, for {@link DeliveryStreamStatus.appendOnly}'s reason:
|
|
151
|
+
* it is the second flag the stream node compares to decide whether the destination
|
|
152
|
+
* needs reconciling, and assuming a stream this plugin created carries the
|
|
153
|
+
* configuration this plugin sends today is exactly wrong for every stream created
|
|
154
|
+
* before it sent this one. Absent for a destination that is not an Iceberg one, or for
|
|
155
|
+
* a response that reports no logging options at all.
|
|
156
|
+
*/
|
|
157
|
+
readonly loggingEnabled?: boolean | undefined;
|
|
127
158
|
}
|
|
128
159
|
/**
|
|
129
160
|
* The current version and destination id `UpdateDestination` conditions on - the two
|
package/dist/aws/firehose.js
CHANGED
|
@@ -139,6 +139,15 @@ function buildIcebergDestination(input) {
|
|
|
139
139
|
ErrorOutputPrefix: input.errorOutputPrefix,
|
|
140
140
|
},
|
|
141
141
|
AppendOnly: STREAM_APPEND_ONLY,
|
|
142
|
+
// Firehose's only account of a record it could not deliver. Off by default, and
|
|
143
|
+
// `IcebergDestinationConfiguration` and `IcebergDestinationUpdate` both accept the
|
|
144
|
+
// member, so the one builder enables it on the create and on the reconcile alike -
|
|
145
|
+
// an existing stream is switched on in place rather than replaced.
|
|
146
|
+
CloudWatchLoggingOptions: {
|
|
147
|
+
Enabled: true,
|
|
148
|
+
LogGroupName: input.logGroupName,
|
|
149
|
+
LogStreamName: input.logStreamName,
|
|
150
|
+
},
|
|
142
151
|
BufferingHints: {
|
|
143
152
|
IntervalInSeconds: input.bufferIntervalSeconds,
|
|
144
153
|
SizeInMBs: input.bufferSizeMb,
|
|
@@ -240,6 +249,7 @@ export class FirehoseClient {
|
|
|
240
249
|
const versionId = description?.VersionId;
|
|
241
250
|
const destinationId = destination?.DestinationId;
|
|
242
251
|
const appendOnly = destination?.IcebergDestinationDescription?.AppendOnly;
|
|
252
|
+
const loggingEnabled = destination?.IcebergDestinationDescription?.CloudWatchLoggingOptions?.Enabled;
|
|
243
253
|
return {
|
|
244
254
|
name: description?.DeliveryStreamName ?? name,
|
|
245
255
|
arn: description?.DeliveryStreamARN ?? '',
|
|
@@ -248,6 +258,7 @@ export class FirehoseClient {
|
|
|
248
258
|
...(versionId !== undefined ? { versionId } : {}),
|
|
249
259
|
...(destinationId !== undefined ? { destinationId } : {}),
|
|
250
260
|
...(appendOnly !== undefined ? { appendOnly } : {}),
|
|
261
|
+
...(loggingEnabled !== undefined ? { loggingEnabled } : {}),
|
|
251
262
|
};
|
|
252
263
|
}
|
|
253
264
|
catch (err) {
|
package/dist/commands.js
CHANGED
|
@@ -172,7 +172,7 @@ function logStreamHealth(ctx, entries) {
|
|
|
172
172
|
* A failed read degrades to a warning, which is the whole point of doing it
|
|
173
173
|
* last: the table is the one part of this listing that needs credentials the
|
|
174
174
|
* node reads do not (the vendor library attaches the catalog itself), so an
|
|
175
|
-
* operator with no session still gets all
|
|
175
|
+
* operator with no session still gets all fourteen nodes and the stream's health.
|
|
176
176
|
*/
|
|
177
177
|
async function logRowCount(ctx, query) {
|
|
178
178
|
const config = resolveAnalyticsConfig(ctx);
|
package/dist/nodes.d.ts
CHANGED
|
@@ -3,24 +3,29 @@
|
|
|
3
3
|
* CloudFront-logs-to-Iceberg pipeline is built from and nothing else: the
|
|
4
4
|
* site's own bucket, distribution and log group stay in the CLI's graph
|
|
5
5
|
* (`packages/cli/src/nodes.ts`) and are never touched from here. This module
|
|
6
|
-
* carries all
|
|
6
|
+
* carries all fourteen of them, in four chains. The table chain - the S3 Tables bucket,
|
|
7
7
|
* the namespace inside it, the `page_views` table, and the Glue federation
|
|
8
8
|
* Firehose reads that table through - runs `analytics-table-bucket` ->
|
|
9
9
|
* `analytics-namespace` -> `analytics-table` ->
|
|
10
10
|
* `analytics-catalog-integration`. The transform chain - the long-lived
|
|
11
|
-
* `visitor_key` salt, the
|
|
12
|
-
* secret's ARN, and the
|
|
13
|
-
*
|
|
14
|
-
* `analytics-transform-
|
|
15
|
-
*
|
|
16
|
-
* -
|
|
17
|
-
*
|
|
18
|
-
*
|
|
11
|
+
* `visitor_key` salt, the log group the function's own output lands in, the
|
|
12
|
+
* Lambda execution role whose policy names that secret's ARN, and the
|
|
13
|
+
* record-transform function itself - runs `analytics-salt-secret` ->
|
|
14
|
+
* `analytics-transform-role` -> `analytics-transform-function`, with
|
|
15
|
+
* `analytics-transform-log-group` a second edge into that function. The
|
|
16
|
+
* delivery chain - the bucket every record Firehose cannot deliver lands in,
|
|
17
|
+
* the log group Firehose's delivery errors land in, the role it assumes, and
|
|
18
|
+
* the stream itself - runs `analytics-error-bucket` ->
|
|
19
|
+
* `analytics-firehose-role` -> `analytics-firehose-stream`, with
|
|
20
|
+
* `analytics-firehose-log-group` a second edge into that stream, and joins the
|
|
21
|
+
* other two chains through the role's five grants and the stream's
|
|
22
|
+
* destination. The vended-delivery chain -
|
|
19
23
|
* the CloudWatch delivery destination pointing at that stream and the delivery
|
|
20
24
|
* joining it to the site's log source - runs `analytics-log-destination` ->
|
|
21
25
|
* `analytics-log-delivery` and hangs off the stream. All four are wired through
|
|
22
26
|
* `dependsOn`, and a node depends on every node whose recorded ARN it
|
|
23
|
-
* interpolates
|
|
27
|
+
* interpolates - plus the two writers whose log group has to exist before the
|
|
28
|
+
* first line they write, which is an ordering with nothing read back. {@link buildAnalyticsNodes} at the foot of this module returns
|
|
24
29
|
* the assembled set, and `plugin.ts` hands it to the SPI's `Plugin.nodes`;
|
|
25
30
|
* assembling an array is all it does - nothing here reconciles anything.
|
|
26
31
|
*
|
|
@@ -41,8 +46,8 @@
|
|
|
41
46
|
* over the host's `signingUsEast1` signer; no node here picks a region for a
|
|
42
47
|
* request. {@link ANALYTICS_REGION} below is the same region as *text*, needed
|
|
43
48
|
* only because an ARN spells its region out and because every node `title`
|
|
44
|
-
* states the pin, so the bootstrap output an operator reads carries it.
|
|
45
|
-
* the
|
|
49
|
+
* states the pin, so the bootstrap output an operator reads carries it. Twelve
|
|
50
|
+
* of the fourteen titles state it as the region they are created in; the two IAM
|
|
46
51
|
* role nodes state it as the pipeline they serve, because IAM is global and
|
|
47
52
|
* "created in us-east-1" is not a property a role has (§Region pinning says so
|
|
48
53
|
* in as many words) - a title claiming otherwise would be the pin stated
|
|
@@ -80,7 +85,7 @@ type AnalyticsContext = PluginContext<AnalyticsConfig>;
|
|
|
80
85
|
/** One node of the analytics graph. */
|
|
81
86
|
type AnalyticsNode = ResourceNode<AnalyticsContext>;
|
|
82
87
|
/**
|
|
83
|
-
* The `analytics-firehose-stream` node id. Exported, alone among the
|
|
88
|
+
* The `analytics-firehose-stream` node id. Exported, alone among the fourteen,
|
|
84
89
|
* because `analytics status` reads this node's recorded outputs back out of
|
|
85
90
|
* the scoped state its `read` hydrated - the stream's delivery health - and a
|
|
86
91
|
* second copy of the string in `commands.ts` would be a state key with two
|
|
@@ -163,6 +168,22 @@ export declare function analyticsCatalogIntegrationNode(): AnalyticsNode;
|
|
|
163
168
|
* anything had changed. The teardown says what it kept and how to remove it.
|
|
164
169
|
*/
|
|
165
170
|
export declare function analyticsSaltSecretNode(): AnalyticsNode;
|
|
171
|
+
/**
|
|
172
|
+
* The transform Lambda's own log group: the mapping decisions, the drop path,
|
|
173
|
+
* and the cold-start read of the salt secret - the only place this pipeline
|
|
174
|
+
* says *why* a record went where it did.
|
|
175
|
+
*
|
|
176
|
+
* Lambda writes into it under the execution role's existing
|
|
177
|
+
* `logs:CreateLogStream` and `logs:PutLogEvents`, scoped to this group and no
|
|
178
|
+
* other ({@link transformLogGroupArn}). The role is deliberately not granted
|
|
179
|
+
* `logs:CreateLogGroup`, because this node is what creates the group.
|
|
180
|
+
*
|
|
181
|
+
* It is at the head of the chain that writes to it -
|
|
182
|
+
* `analytics-transform-function` declares the edge - and the role does not,
|
|
183
|
+
* because the role's policy *derives* this group's ARN from the function's name
|
|
184
|
+
* rather than reading a recorded one, so there is no output to wait for.
|
|
185
|
+
*/
|
|
186
|
+
export declare function analyticsTransformLogGroupNode(): AnalyticsNode;
|
|
166
187
|
/**
|
|
167
188
|
* The transform Lambda's execution role: permission to write its own logs and
|
|
168
189
|
* to read the one secret it needs, and nothing else.
|
|
@@ -226,7 +247,11 @@ export declare function transformUpdate(recorded: {
|
|
|
226
247
|
* artifact's name, even though the zip travels inline rather than through a
|
|
227
248
|
* bucket (see {@link MAX_INLINE_ZIP_BYTES} for why inline).
|
|
228
249
|
*
|
|
229
|
-
* It depends on `analytics-transform-role`, whose recorded ARN it runs as
|
|
250
|
+
* It depends on `analytics-transform-role`, whose recorded ARN it runs as, and
|
|
251
|
+
* on `analytics-transform-log-group`, whose ARN it reads nothing of: a group
|
|
252
|
+
* that does not exist when the function first runs is a log line lost with
|
|
253
|
+
* nothing raised, and on teardown the reverse order the engine walks removes
|
|
254
|
+
* the function before the group holding the evidence of what it did.
|
|
230
255
|
*/
|
|
231
256
|
export declare function analyticsTransformFunctionNode(): AnalyticsNode;
|
|
232
257
|
/**
|
|
@@ -257,10 +282,32 @@ export declare function analyticsTransformFunctionNode(): AnalyticsNode;
|
|
|
257
282
|
* transform did not run on them - inside a bucket the site serves from.
|
|
258
283
|
*/
|
|
259
284
|
export declare function analyticsErrorBucketNode(): AnalyticsNode;
|
|
285
|
+
/**
|
|
286
|
+
* The log group Firehose writes its delivery errors to, and the log stream
|
|
287
|
+
* inside it that they are written to.
|
|
288
|
+
*
|
|
289
|
+
* **Firehose creates neither.** Enabling error logging through the API rather
|
|
290
|
+
* than the console requires the group *and* the stream to exist in advance, so
|
|
291
|
+
* this node creates both - and re-ensures the stream on every `update` beside
|
|
292
|
+
* the retention, which is why {@link analyticsLogGroupNode} takes a stream at
|
|
293
|
+
* all. Without that, a group left by a run that stopped between
|
|
294
|
+
* `CreateLogGroup` and `CreateLogStream` is permanently one call short, with
|
|
295
|
+
* `read()` reporting it present and `update()` doing nothing about it, and the
|
|
296
|
+
* symptom is a delivery failure with nowhere to be explained.
|
|
297
|
+
*
|
|
298
|
+
* {@link DESTINATION_DELIVERY_STREAM} is the only stream created:
|
|
299
|
+
* `BackupDelivery` belongs to a destination configured with S3 backup, and the
|
|
300
|
+
* Iceberg destination this pipeline builds configures none.
|
|
301
|
+
*
|
|
302
|
+
* It is at the head of the chain that writes to it -
|
|
303
|
+
* `analytics-firehose-stream` declares the edge - while the delivery role does
|
|
304
|
+
* not, for the reason `analytics-transform-log-group`'s counterpart does not.
|
|
305
|
+
*/
|
|
306
|
+
export declare function analyticsFirehoseLogGroupNode(): AnalyticsNode;
|
|
260
307
|
/**
|
|
261
308
|
* The role Firehose assumes to read the catalog, write the table, invoke the
|
|
262
|
-
* transform
|
|
263
|
-
* resources, no `*`.
|
|
309
|
+
* transform, store what it could not deliver and say so in one log stream -
|
|
310
|
+
* five grants, five concrete resources, no `*`.
|
|
264
311
|
*
|
|
265
312
|
* It declares `dependsOn` on the three nodes whose recorded ARNs those grants
|
|
266
313
|
* interpolate. `topoSort` drains zero-indegree nodes alphabetically
|
|
@@ -366,7 +413,7 @@ export declare function analyticsLogDestinationNode(): AnalyticsNode;
|
|
|
366
413
|
*/
|
|
367
414
|
export declare function analyticsLogDeliveryNode(): AnalyticsNode;
|
|
368
415
|
/**
|
|
369
|
-
* The plugin's
|
|
416
|
+
* The plugin's fourteen resource nodes, assembled in the order the change spec's
|
|
370
417
|
* §Analytics pipeline → Resource nodes table lists them. This is what
|
|
371
418
|
* `Plugin.nodes` (`plugin.ts`) hands the CLI's generic `analytics bootstrap`
|
|
372
419
|
* and `analytics destroy` verbs, and it is the whole of what this package
|
|
@@ -387,7 +434,7 @@ export declare function analyticsLogDeliveryNode(): AnalyticsNode;
|
|
|
387
434
|
*
|
|
388
435
|
* **No `ctx` parameter, deliberately.** The SPI declares `nodes?(ctx)` and the
|
|
389
436
|
* CLI calls it with one, so this function is assignable to it as written - a
|
|
390
|
-
* zero-argument function satisfies a one-argument signature. None of the
|
|
437
|
+
* zero-argument function satisfies a one-argument signature. None of the fourteen
|
|
391
438
|
* factories needs a context to be *built*: each reads `ctx` inside `read`,
|
|
392
439
|
* `create`, `update` and `delete`, when the reconcile is actually running. A
|
|
393
440
|
* parameter accepted and ignored here would be an unused binding and, worse, a
|