Some checks failed
CI / build-and-test (pull_request) Failing after 1m19s
CI (.gitea/workflows/ci.yaml): lint → typecheck → vitest w/ coverage → OpenNext build → preview smoke → bundle-size budgets; Node 20; npm ci; artifacts; safe env; D1 dry-run scaffold. Budgets: add scripts/budgets.mjs; TOTAL_STATIC_MAX_BYTES and MAX_ASSET_BYTES thresholds; report top offenders; fail on breach; README CI section. Flags: add lib/flags.ts with typed booleans and safe defaults (ADMIN_ENABLED, ARTISTS_MODULE_ENABLED, UPLOADS_ADMIN_ENABLED, BOOKING_ENABLED, PUBLIC_APPOINTMENT_REQUESTS_ENABLED, REFERENCE_UPLOADS_PUBLIC_ENABLED, DEPOSITS_ENABLED, PUBLIC_DB_ARTISTS_ENABLED, ADVANCED_NAV_SCROLL_ANIMATIONS_ENABLED, STRICT_CI_GATES_ENABLED, ISR_CACHE_R2_ENABLED); robust parsing; client provider; unit tests. Wiring: gate Admin shell and admin write APIs (503 JSON on uploads and artists writes); disable booking submit and short-circuit booking mutations when off; render static Hero/Artists when advanced animations off; tests for UI and API guards. Ops: expand docs/prd/rollback-strategy.md with “Feature Flags Operations,” Cloudflare Dashboard and wrangler.toml steps, preview simulation, incident playbook, and post-toggle smoke checklist. Release: add docs/releases/2025-09-19-feature-flags-rollout.md with last-good commit, preview/production flag matrices, rollback notes, and smoke results; link from rollback doc. Chore: fix TS issues (gift-cards boolean handling, Lenis options, tailwind darkMode), remove next-on-pages peer conflict, update package.json scripts, configure Gitea act_runner label, open draft PR to trigger CI. Refs: CI-1, FF-1, FF-2, FF-3, OPS-1 Impact: defaults preserve current behavior; no runtime changes unless flags flipped
1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{38759:function(e,t,r){Promise.resolve().then(r.bind(r,58519)),Promise.resolve().then(r.t.bind(r,89086,23)),Promise.resolve().then(r.t.bind(r,36854,23)),Promise.resolve().then(r.t.bind(r,47960,23))},58519:function(e,t,r){"use strict";r.d(t,{default:function(){return Q}});var s=r(57437),i=r(80605),n=r(45345),a=r(21733),u=r(18238),l=r(24112),o=class extends l.l{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,r){let s=t.queryKey,i=t.queryHash??(0,n.Rm)(s,t),u=this.get(i);return u||(u=new a.A({client:e,queryKey:s,queryHash:i,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(s)}),this.add(u)),u}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){u.Vr.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,n._x)(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>(0,n._x)(e,t)):t}notify(e){u.Vr.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){u.Vr.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){u.Vr.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},h=r(2894),c=class extends l.l{constructor(e={}){super(),this.config=e,this.#t=new Set,this.#r=new Map,this.#s=0}#t;#r;#s;build(e,t,r){let s=new h.m({client:e,mutationCache:this,mutationId:++this.#s,options:e.defaultMutationOptions(t),state:r});return this.add(s),s}add(e){this.#t.add(e);let t=f(e);if("string"==typeof t){let r=this.#r.get(t);r?r.push(e):this.#r.set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(this.#t.delete(e)){let t=f(e);if("string"==typeof t){let r=this.#r.get(t);if(r){if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&this.#r.delete(t)}}}this.notify({type:"removed",mutation:e})}canRun(e){let t=f(e);if("string"!=typeof t)return!0;{let r=this.#r.get(t),s=r?.find(e=>"pending"===e.state.status);return!s||s===e}}runNext(e){let t=f(e);if("string"!=typeof t)return Promise.resolve();{let r=this.#r.get(t)?.find(t=>t!==e&&t.state.isPaused);return r?.continue()??Promise.resolve()}}clear(){u.Vr.batch(()=>{this.#t.forEach(e=>{this.notify({type:"removed",mutation:e})}),this.#t.clear(),this.#r.clear()})}getAll(){return Array.from(this.#t)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,n.X7)(t,e))}findAll(e={}){return this.getAll().filter(t=>(0,n.X7)(e,t))}notify(e){u.Vr.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return u.Vr.batch(()=>Promise.all(e.map(e=>e.continue().catch(n.ZT))))}};function f(e){return e.options.scope?.id}var d=r(87045),y=r(57853);function p(e){return{onFetch:(t,r)=>{let s=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],u=t.state.data?.pageParams||[],l={pages:[],pageParams:[]},o=0,h=async()=>{let r=!1,h=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(t.signal.aborted?r=!0:t.signal.addEventListener("abort",()=>{r=!0}),t.signal)})},c=(0,n.cG)(t.options,t.fetchOptions),f=async(e,s,i)=>{if(r)return Promise.reject();if(null==s&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:s,direction:i?"backward":"forward",meta:t.options.meta};return h(e),e})(),u=await c(a),{maxPages:l}=t.options,o=i?n.Ht:n.VX;return{pages:o(e.pages,u,l),pageParams:o(e.pageParams,s,l)}};if(i&&a.length){let e="backward"===i,t={pages:a,pageParams:u},r=(e?function(e,{pages:t,pageParams:r}){return t.length>0?e.getPreviousPageParam?.(t[0],t,r[0],r):void 0}:m)(s,t);l=await f(t,r,e)}else{let t=e??a.length;do{let e=0===o?u[0]??s.initialPageParam:m(s,l);if(o>0&&null==e)break;l=await f(l,e),o++}while(o<t)}return l};t.options.persister?t.fetchFn=()=>t.options.persister?.(h,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r):t.fetchFn=h}}}function m(e,{pages:t,pageParams:r}){let s=t.length-1;return t.length>0?e.getNextPageParam(t[s],t,r[s],r):void 0}var g=class{#i;#n;#a;#u;#l;#o;#h;#c;constructor(e={}){this.#i=e.queryCache||new o,this.#n=e.mutationCache||new c,this.#a=e.defaultOptions||{},this.#u=new Map,this.#l=new Map,this.#o=0}mount(){this.#o++,1===this.#o&&(this.#h=d.j.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#i.onFocus())}),this.#c=y.N.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#i.onOnline())}))}unmount(){this.#o--,0===this.#o&&(this.#h?.(),this.#h=void 0,this.#c?.(),this.#c=void 0)}isFetching(e){return this.#i.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#i.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=this.#i.build(this,t),s=r.state.data;return void 0===s?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime((0,n.KC)(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(s))}getQueriesData(e){return this.#i.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,r){let s=this.defaultQueryOptions({queryKey:e}),i=this.#i.get(s.queryHash),a=i?.state.data,u=(0,n.SE)(t,a);if(void 0!==u)return this.#i.build(this,s).setData(u,{...r,manual:!0})}setQueriesData(e,t,r){return u.Vr.batch(()=>this.#i.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,r)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#i.get(t.queryHash)?.state}removeQueries(e){let t=this.#i;u.Vr.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=this.#i;return u.Vr.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){let r={revert:!0,...t};return Promise.all(u.Vr.batch(()=>this.#i.findAll(e).map(e=>e.cancel(r)))).then(n.ZT).catch(n.ZT)}invalidateQueries(e,t={}){return u.Vr.batch(()=>(this.#i.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType==="none")?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??"active"},t))}refetchQueries(e,t={}){let r={...t,cancelRefetch:t.cancelRefetch??!0};return Promise.all(u.Vr.batch(()=>this.#i.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,r);return r.throwOnError||(t=t.catch(n.ZT)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(n.ZT)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let r=this.#i.build(this,t);return r.isStaleByTime((0,n.KC)(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(n.ZT).catch(n.ZT)}fetchInfiniteQuery(e){return e.behavior=p(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(n.ZT).catch(n.ZT)}ensureInfiniteQueryData(e){return e.behavior=p(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return y.N.isOnline()?this.#n.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#i}getMutationCache(){return this.#n}getDefaultOptions(){return this.#a}setDefaultOptions(e){this.#a=e}setQueryDefaults(e,t){this.#u.set((0,n.Ym)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#u.values()],r={};return t.forEach(t=>{(0,n.to)(e,t.queryKey)&&Object.assign(r,t.defaultOptions)}),r}setMutationDefaults(e,t){this.#l.set((0,n.Ym)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#l.values()],r={};return t.forEach(t=>{(0,n.to)(e,t.mutationKey)&&Object.assign(r,t.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#a.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,n.Rm)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===n.CN&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#a.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#i.clear(),this.#n.clear()}},b=r(29827),_=function(){return null},v=r(2265),O=r(77680);function E(e){let{children:t}=e;return(0,v.useEffect)(()=>{let e;return(async()=>{e=new(await r.e(9742).then(r.bind(r,9742))).default({duration:1.2,easing:e=>Math.min(1,1.001-Math.pow(2,-10*e))}),requestAnimationFrame(function t(r){e.raf(r),requestAnimationFrame(t)})})(),()=>{e&&e.destroy()}},[]),(0,s.jsx)(s.Fragment,{children:t})}var C=v.createContext(void 0),q={setTheme:e=>{},themes:[]},A=()=>{var e;return null!=(e=v.useContext(C))?e:q},P=r(14438);let D=e=>{let{...t}=e,{theme:r="system"}=A();return(0,s.jsx)(P.x7,{theme:r,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...t})};function Q(e){let{children:t,initialFlags:r}=e,[n]=(0,v.useState)(()=>new g({defaultOptions:{queries:{staleTime:6e4,retry:(e,t)=>(!((null==t?void 0:t.status)>=400)||!((null==t?void 0:t.status)<500))&&e<3}}}));return(0,s.jsx)(i.SessionProvider,{children:(0,s.jsxs)(b.aH,{client:n,children:[(0,s.jsx)(O.OH,{value:r,children:(0,s.jsx)(v.Suspense,{fallback:(0,s.jsx)("div",{children:"Loading..."}),children:(0,s.jsxs)(E,{children:[t,(0,s.jsx)(D,{})]})})}),(0,s.jsx)(_,{initialIsOpen:!1})]})})}r(47960)},77680:function(e,t,r){"use strict";r.d(t,{OH:function(){return y},ye:function(){return p}});var s=r(57437),i=r(2265),n=r(40257);let a="__UNITED_TATTOO_RUNTIME_FLAGS__",u=Object.freeze({ADMIN_ENABLED:!0,ARTISTS_MODULE_ENABLED:!0,UPLOADS_ADMIN_ENABLED:!0,BOOKING_ENABLED:!0,PUBLIC_APPOINTMENT_REQUESTS_ENABLED:!1,REFERENCE_UPLOADS_PUBLIC_ENABLED:!1,DEPOSITS_ENABLED:!1,PUBLIC_DB_ARTISTS_ENABLED:!1,ADVANCED_NAV_SCROLL_ANIMATIONS_ENABLED:!0,STRICT_CI_GATES_ENABLED:!0,ISR_CACHE_R2_ENABLED:!0}),l=Object.keys(u),o=new Set(l),h=new Set,c=null;function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.refresh&&(c=null),c)return c;let t=function(){let e={};for(let t of l){let r=function(e){let t=function(){if("undefined"!=typeof globalThis)return globalThis[a]}();return t&&void 0!==t[e]?t[e]:void 0!==n&&n.env&&void 0!==n.env[e]?n.env[e]:void 0}(t),s=function(e,t){if("boolean"==typeof e)return e;if("string"==typeof e){let t=e.trim().toLowerCase();if("true"===t||"1"===t)return!0;if("false"===t||"0"===t)return!1}return t}(r,u[t]);(null==r||"string"==typeof r&&""===r.trim())&&(h.has(t)||h.add(t)),e[t]=s}return Object.freeze(e)}();return c=t,t}new Proxy({},{get:(e,t)=>{if(o.has(t))return f()[t]},ownKeys:()=>l,getOwnPropertyDescriptor:(e,t)=>{if(o.has(t))return{configurable:!0,enumerable:!0,value:f()[t]}}});let d=(0,i.createContext)(u);function y(e){let{value:t,children:r}=e;return(0,i.useEffect)(()=>{"undefined"!=typeof globalThis&&(globalThis[a]=t),c=t},[t]),(0,s.jsx)(d.Provider,{value:t,children:r})}function p(e){return(0,i.useContext)(d)[e]}},47960:function(){},89086:function(e){e.exports={style:{fontFamily:"'__Playfair_Display_0a80b4', '__Playfair_Display_Fallback_0a80b4'",fontStyle:"normal"},className:"__className_0a80b4",variable:"__variable_0a80b4"}},36854:function(e){e.exports={style:{fontFamily:"'__Source_Sans_3_1fdbab', '__Source_Sans_3_Fallback_1fdbab'",fontStyle:"normal"},className:"__className_1fdbab",variable:"__variable_1fdbab"}}},function(e){e.O(0,[3587,3773,605,9763,1432,2971,2117,1744],function(){return e(e.s=38759)}),_N_E=e.O()}]); |