gazetta 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/admin-dist/assets/index-B6pVot0Y.css +1 -0
  2. package/admin-dist/assets/index-DniLwxJA.js +609 -0
  3. package/admin-dist/assets/{vendor-primevue-BnR1c_bQ.js → vendor-primevue-C0Q_YTCb.js} +330 -431
  4. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +1 -0
  5. package/admin-dist/index.html +4 -4
  6. package/dist/admin-api/index.d.ts +26 -5
  7. package/dist/admin-api/index.d.ts.map +1 -1
  8. package/dist/admin-api/index.js +175 -13
  9. package/dist/admin-api/index.js.map +1 -1
  10. package/dist/admin-api/routes/compare.d.ts +3 -1
  11. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  12. package/dist/admin-api/routes/compare.js +34 -24
  13. package/dist/admin-api/routes/compare.js.map +1 -1
  14. package/dist/admin-api/routes/fields.d.ts +2 -2
  15. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  16. package/dist/admin-api/routes/fields.js +10 -3
  17. package/dist/admin-api/routes/fields.js.map +1 -1
  18. package/dist/admin-api/routes/fragments.d.ts +2 -2
  19. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  20. package/dist/admin-api/routes/fragments.js +94 -19
  21. package/dist/admin-api/routes/fragments.js.map +1 -1
  22. package/dist/admin-api/routes/history.d.ts +23 -0
  23. package/dist/admin-api/routes/history.d.ts.map +1 -0
  24. package/dist/admin-api/routes/history.js +143 -0
  25. package/dist/admin-api/routes/history.js.map +1 -0
  26. package/dist/admin-api/routes/pages.d.ts +2 -2
  27. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  28. package/dist/admin-api/routes/pages.js +120 -20
  29. package/dist/admin-api/routes/pages.js.map +1 -1
  30. package/dist/admin-api/routes/preview.d.ts +2 -2
  31. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  32. package/dist/admin-api/routes/preview.js +50 -15
  33. package/dist/admin-api/routes/preview.js.map +1 -1
  34. package/dist/admin-api/routes/publish.d.ts +3 -1
  35. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  36. package/dist/admin-api/routes/publish.js +306 -65
  37. package/dist/admin-api/routes/publish.js.map +1 -1
  38. package/dist/admin-api/routes/site.d.ts +2 -2
  39. package/dist/admin-api/routes/site.d.ts.map +1 -1
  40. package/dist/admin-api/routes/site.js +27 -4
  41. package/dist/admin-api/routes/site.js.map +1 -1
  42. package/dist/admin-api/routes/templates.d.ts +2 -2
  43. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  44. package/dist/admin-api/routes/templates.js +19 -9
  45. package/dist/admin-api/routes/templates.js.map +1 -1
  46. package/dist/admin-api/schemas/compare.d.ts +29 -0
  47. package/dist/admin-api/schemas/compare.d.ts.map +1 -0
  48. package/dist/admin-api/schemas/compare.js +30 -0
  49. package/dist/admin-api/schemas/compare.js.map +1 -0
  50. package/dist/admin-api/schemas/dependents.d.ts +15 -0
  51. package/dist/admin-api/schemas/dependents.d.ts.map +1 -0
  52. package/dist/admin-api/schemas/dependents.js +14 -0
  53. package/dist/admin-api/schemas/dependents.js.map +1 -0
  54. package/dist/admin-api/schemas/fetch.d.ts +12 -0
  55. package/dist/admin-api/schemas/fetch.d.ts.map +1 -0
  56. package/dist/admin-api/schemas/fetch.js +11 -0
  57. package/dist/admin-api/schemas/fetch.js.map +1 -0
  58. package/dist/admin-api/schemas/fields.d.ts +11 -0
  59. package/dist/admin-api/schemas/fields.d.ts.map +1 -0
  60. package/dist/admin-api/schemas/fields.js +11 -0
  61. package/dist/admin-api/schemas/fields.js.map +1 -0
  62. package/dist/admin-api/schemas/fragments.d.ts +27 -0
  63. package/dist/admin-api/schemas/fragments.d.ts.map +1 -0
  64. package/dist/admin-api/schemas/fragments.js +26 -0
  65. package/dist/admin-api/schemas/fragments.js.map +1 -0
  66. package/dist/admin-api/schemas/history.d.ts +73 -0
  67. package/dist/admin-api/schemas/history.d.ts.map +1 -0
  68. package/dist/admin-api/schemas/history.js +35 -0
  69. package/dist/admin-api/schemas/history.js.map +1 -0
  70. package/dist/admin-api/schemas/index.d.ts +32 -0
  71. package/dist/admin-api/schemas/index.d.ts.map +1 -0
  72. package/dist/admin-api/schemas/index.js +32 -0
  73. package/dist/admin-api/schemas/index.js.map +1 -0
  74. package/dist/admin-api/schemas/pages.d.ts +46 -0
  75. package/dist/admin-api/schemas/pages.d.ts.map +1 -0
  76. package/dist/admin-api/schemas/pages.js +47 -0
  77. package/dist/admin-api/schemas/pages.js.map +1 -0
  78. package/dist/admin-api/schemas/publish.d.ts +67 -0
  79. package/dist/admin-api/schemas/publish.d.ts.map +1 -0
  80. package/dist/admin-api/schemas/publish.js +60 -0
  81. package/dist/admin-api/schemas/publish.js.map +1 -0
  82. package/dist/admin-api/schemas/site.d.ts +28 -0
  83. package/dist/admin-api/schemas/site.d.ts.map +1 -0
  84. package/dist/admin-api/schemas/site.js +24 -0
  85. package/dist/admin-api/schemas/site.js.map +1 -0
  86. package/dist/admin-api/schemas/targets.d.ts +36 -0
  87. package/dist/admin-api/schemas/targets.d.ts.map +1 -0
  88. package/dist/admin-api/schemas/targets.js +19 -0
  89. package/dist/admin-api/schemas/targets.js.map +1 -0
  90. package/dist/admin-api/schemas/templates.d.ts +17 -0
  91. package/dist/admin-api/schemas/templates.d.ts.map +1 -0
  92. package/dist/admin-api/schemas/templates.js +16 -0
  93. package/dist/admin-api/schemas/templates.js.map +1 -0
  94. package/dist/admin-api/source-context.d.ts +165 -0
  95. package/dist/admin-api/source-context.d.ts.map +1 -0
  96. package/dist/admin-api/source-context.js +95 -0
  97. package/dist/admin-api/source-context.js.map +1 -0
  98. package/dist/app.js +1 -1
  99. package/dist/app.js.map +1 -1
  100. package/dist/assemble.d.ts.map +1 -1
  101. package/dist/assemble.js +4 -1
  102. package/dist/assemble.js.map +1 -1
  103. package/dist/cli/bootstrap.d.ts +48 -0
  104. package/dist/cli/bootstrap.d.ts.map +1 -0
  105. package/dist/cli/bootstrap.js +85 -0
  106. package/dist/cli/bootstrap.js.map +1 -0
  107. package/dist/cli/history.d.ts +45 -0
  108. package/dist/cli/history.d.ts.map +1 -0
  109. package/dist/cli/history.js +165 -0
  110. package/dist/cli/history.js.map +1 -0
  111. package/dist/cli/index.js +691 -113
  112. package/dist/cli/index.js.map +1 -1
  113. package/dist/compare.d.ts +15 -5
  114. package/dist/compare.d.ts.map +1 -1
  115. package/dist/compare.js +83 -45
  116. package/dist/compare.js.map +1 -1
  117. package/dist/concurrency.d.ts +63 -0
  118. package/dist/concurrency.d.ts.map +1 -0
  119. package/dist/concurrency.js +134 -0
  120. package/dist/concurrency.js.map +1 -0
  121. package/dist/content-root.d.ts +38 -0
  122. package/dist/content-root.d.ts.map +1 -0
  123. package/dist/content-root.js +29 -0
  124. package/dist/content-root.js.map +1 -0
  125. package/dist/editor/mount.d.ts +1 -1
  126. package/dist/editor/mount.d.ts.map +1 -1
  127. package/dist/editor/mount.js +61 -29
  128. package/dist/editor/mount.js.map +1 -1
  129. package/dist/hash.d.ts +47 -1
  130. package/dist/hash.d.ts.map +1 -1
  131. package/dist/hash.js +107 -10
  132. package/dist/hash.js.map +1 -1
  133. package/dist/history-provider.d.ts +49 -0
  134. package/dist/history-provider.d.ts.map +1 -0
  135. package/dist/history-provider.js +226 -0
  136. package/dist/history-provider.js.map +1 -0
  137. package/dist/history-recorder.d.ts +98 -0
  138. package/dist/history-recorder.d.ts.map +1 -0
  139. package/dist/history-recorder.js +160 -0
  140. package/dist/history-recorder.js.map +1 -0
  141. package/dist/history-restorer.d.ts +46 -0
  142. package/dist/history-restorer.d.ts.map +1 -0
  143. package/dist/history-restorer.js +105 -0
  144. package/dist/history-restorer.js.map +1 -0
  145. package/dist/history.d.ts +111 -0
  146. package/dist/history.d.ts.map +1 -0
  147. package/dist/history.js +25 -0
  148. package/dist/history.js.map +1 -0
  149. package/dist/index.d.ts +26 -4
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +16 -3
  152. package/dist/index.js.map +1 -1
  153. package/dist/locale.d.ts +74 -0
  154. package/dist/locale.d.ts.map +1 -0
  155. package/dist/locale.js +150 -0
  156. package/dist/locale.js.map +1 -0
  157. package/dist/manifest.d.ts.map +1 -1
  158. package/dist/manifest.js +16 -1
  159. package/dist/manifest.js.map +1 -1
  160. package/dist/providers/azure-blob.d.ts.map +1 -1
  161. package/dist/providers/azure-blob.js.map +1 -1
  162. package/dist/providers/r2.d.ts.map +1 -1
  163. package/dist/providers/r2.js +7 -4
  164. package/dist/providers/r2.js.map +1 -1
  165. package/dist/providers/s3.d.ts.map +1 -1
  166. package/dist/providers/s3.js +23 -15
  167. package/dist/providers/s3.js.map +1 -1
  168. package/dist/publish-locale.d.ts +44 -0
  169. package/dist/publish-locale.d.ts.map +1 -0
  170. package/dist/publish-locale.js +103 -0
  171. package/dist/publish-locale.js.map +1 -0
  172. package/dist/publish-rendered.d.ts +17 -5
  173. package/dist/publish-rendered.d.ts.map +1 -1
  174. package/dist/publish-rendered.js +114 -66
  175. package/dist/publish-rendered.js.map +1 -1
  176. package/dist/publish.d.ts +39 -3
  177. package/dist/publish.d.ts.map +1 -1
  178. package/dist/publish.js +166 -17
  179. package/dist/publish.js.map +1 -1
  180. package/dist/renderer.d.ts +14 -4
  181. package/dist/renderer.d.ts.map +1 -1
  182. package/dist/renderer.js +35 -23
  183. package/dist/renderer.js.map +1 -1
  184. package/dist/resolver.d.ts +7 -2
  185. package/dist/resolver.d.ts.map +1 -1
  186. package/dist/resolver.js +66 -15
  187. package/dist/resolver.js.map +1 -1
  188. package/dist/robots.d.ts +22 -0
  189. package/dist/robots.d.ts.map +1 -0
  190. package/dist/robots.js +25 -0
  191. package/dist/robots.js.map +1 -0
  192. package/dist/seo.d.ts +56 -0
  193. package/dist/seo.d.ts.map +1 -0
  194. package/dist/seo.js +72 -0
  195. package/dist/seo.js.map +1 -0
  196. package/dist/serve.d.ts +41 -3
  197. package/dist/serve.d.ts.map +1 -1
  198. package/dist/serve.js +206 -65
  199. package/dist/serve.js.map +1 -1
  200. package/dist/sidecars.d.ts +60 -0
  201. package/dist/sidecars.d.ts.map +1 -0
  202. package/dist/sidecars.js +231 -0
  203. package/dist/sidecars.js.map +1 -0
  204. package/dist/site-loader.d.ts +74 -6
  205. package/dist/site-loader.d.ts.map +1 -1
  206. package/dist/site-loader.js +149 -36
  207. package/dist/site-loader.js.map +1 -1
  208. package/dist/sitemap.d.ts +45 -0
  209. package/dist/sitemap.d.ts.map +1 -0
  210. package/dist/sitemap.js +67 -0
  211. package/dist/sitemap.js.map +1 -0
  212. package/dist/source-sidecars.d.ts +32 -0
  213. package/dist/source-sidecars.d.ts.map +1 -0
  214. package/dist/source-sidecars.js +98 -0
  215. package/dist/source-sidecars.js.map +1 -0
  216. package/dist/targets.d.ts +47 -1
  217. package/dist/targets.d.ts.map +1 -1
  218. package/dist/targets.js +78 -9
  219. package/dist/targets.js.map +1 -1
  220. package/dist/template-loader.d.ts +7 -3
  221. package/dist/template-loader.d.ts.map +1 -1
  222. package/dist/template-loader.js +27 -12
  223. package/dist/template-loader.js.map +1 -1
  224. package/dist/templates-scan-worker.js +1 -1
  225. package/dist/templates-scan-worker.js.map +1 -1
  226. package/dist/templates-scan.d.ts.map +1 -1
  227. package/dist/templates-scan.js +1 -1
  228. package/dist/templates-scan.js.map +1 -1
  229. package/dist/types.d.ts +116 -9
  230. package/dist/types.d.ts.map +1 -1
  231. package/dist/types.js +28 -5
  232. package/dist/types.js.map +1 -1
  233. package/dist/workers/cloudflare-r2.d.ts +11 -2
  234. package/dist/workers/cloudflare-r2.d.ts.map +1 -1
  235. package/dist/workers/cloudflare-r2.js +120 -55
  236. package/dist/workers/cloudflare-r2.js.map +1 -1
  237. package/package.json +11 -2
  238. package/admin-dist/assets/index-Bh_y1d_l.css +0 -1
  239. package/admin-dist/assets/index-DjGNi6yy.js +0 -608
  240. package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
@@ -0,0 +1 @@
1
+ import{A as e,D as t,E as n,F as r,G as i,H as a,J as o,K as s,O as c,Q as l,R as u,U as d,V as f,W as p,X as ee,Y as m,Z as te,et as h,k as g,q as ne,y as _}from"./vendor-primevue-C0Q_YTCb.js";var v=typeof window<`u`,y,b=e=>y=e,x=Symbol();function S(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var C;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(C||={});var w=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function re(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function T(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){ie(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function E(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function D(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var O=typeof navigator==`object`?navigator:{userAgent:``},k=/Macintosh/.test(O.userAgent)&&/AppleWebKit/.test(O.userAgent)&&!/Safari/.test(O.userAgent),ie=v?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!k?ae:`msSaveOrOpenBlob`in O?oe:A:()=>{};function ae(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?D(r):E(r.href)?T(e,t,n):(r.target=`_blank`,D(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){D(r)},0))}function oe(e,t=`download`,n){if(typeof e==`string`)if(E(e))T(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){D(t)})}else navigator.msSaveOrOpenBlob(re(e,n),t)}function A(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return T(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(w.HTMLElement))||`safari`in w,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||k)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:se}=Object;function ce(){let e=f(!0),t=e.run(()=>o({})),n=[],r=[],a=i({install(e){b(a),a._a=e,e.provide(x,a),e.config.globalProperties.$pinia=a,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}var j=()=>{};function M(e,t,n,r=j){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&a()&&s(i),i}function N(e,...t){e.forEach(e=>{e(...t)})}var le=e=>e(),P=Symbol(),F=Symbol();function I(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];S(i)&&S(r)&&e.hasOwnProperty(n)&&!p(r)&&!d(r)?e[n]=I(i,r):e[n]=r}return e}var ue=Symbol();function de(e){return!S(e)||!Object.prototype.hasOwnProperty.call(e,ue)}var{assign:L}=Object;function fe(e){return!!(p(e)&&e.effect)}function pe(e,t,n,r){let{state:a,actions:o,getters:s}=t,c=n.state.value[e],u;function d(){return c||(n.state.value[e]=a?a():{}),L(l(n.state.value[e]),o,Object.keys(s||{}).reduce((t,r)=>(t[r]=i(_(()=>{b(n);let t=n._s.get(e);return s[r].call(t,t)})),t),{}))}return u=me(e,d,t,n,r,!0),u}function me(t,n,r={},i,a,s){let c,l=L({actions:{}},r),ee={deep:!0},m,h,g=new Set,_=new Set,v=i.state.value[t];!s&&!v&&(i.state.value[t]={}),o({});let y;function x(n){let r;m=h=!1,typeof n==`function`?(n(i.state.value[t]),r={type:C.patchFunction,storeId:t,events:void 0}):(I(i.state.value[t],n),r={type:C.patchObject,payload:n,storeId:t,events:void 0});let a=y=Symbol();e().then(()=>{y===a&&(m=!0)}),h=!0,N(g,r,i.state.value[t])}let S=s?function(){let{state:e}=r,t=e?e():{};this.$patch(e=>{L(e,t)})}:j;function w(){c.stop(),g.clear(),_.clear(),i._s.delete(t)}let re=(e,n=``)=>{if(P in e)return e[F]=n,e;let r=function(){b(i);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}N(_,{args:n,name:r[F],store:T,after:s,onError:c});let l;try{l=e.apply(this&&this.$id===t?this:T,n)}catch(e){throw N(o,e),e}return l instanceof Promise?l.then(e=>(N(a,e),e)).catch(e=>(N(o,e),Promise.reject(e))):(N(a,l),l)};return r[P]=!0,r[F]=n,r},T=ne({_p:i,$id:t,$onAction:M.bind(null,_),$patch:x,$reset:S,$subscribe(e,n={}){let r=M(g,e,n.detached,()=>a()),a=c.run(()=>u(()=>i.state.value[t],r=>{(n.flush===`sync`?h:m)&&e({storeId:t,type:C.direct,events:void 0},r)},L({},ee,n)));return r},$dispose:w});i._s.set(t,T);let E=(i._a&&i._a.runWithContext||le)(()=>i._e.run(()=>(c=f()).run(()=>n({action:re}))));for(let e in E){let n=E[e];p(n)&&!fe(n)||d(n)?s||(v&&de(n)&&(p(n)?n.value=v[e]:I(n,v[e])),i.state.value[t][e]=n):typeof n==`function`&&(E[e]=re(n,e),l.actions[e]=n)}return L(T,E),L(te(T),E),Object.defineProperty(T,`$state`,{get:()=>i.state.value[t],set:e=>{x(t=>{L(t,e)})}}),i._p.forEach(e=>{L(T,c.run(()=>e({store:T,app:i._a,pinia:i,options:l})))}),v&&s&&r.hydrate&&r.hydrate(T.$state,v),m=!0,h=!0,T}function he(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=c();return n||=o?g(x,null):null,n&&b(n),n=y,n._s.has(e)||(i?me(e,t,r,n):pe(e,r,n)),n._s.get(e)}return a.$id=e,a}var R=typeof document<`u`;function ge(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function _e(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&ge(e.default)}var z=Object.assign;function ve(e,t){let n={};for(let r in t){let i=t[r];n[r]=V(i)?i.map(e):e(i)}return n}var B=()=>{},V=Array.isArray;function ye(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var H=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),be=Symbol(``);H.MATCHER_NOT_FOUND,H.NAVIGATION_GUARD_REDIRECT,H.NAVIGATION_ABORTED,H.NAVIGATION_CANCELLED,H.NAVIGATION_DUPLICATED;function U(e,t){return z(Error(),{type:e,[be]:!0},t)}function W(e,t){return e instanceof Error&&be in e&&(t==null||!!(e.type&t))}var xe=Symbol(``),Se=Symbol(``),Ce=Symbol(``),we=Symbol(``),Te=Symbol(``);function Ee(){return g(Ce)}function De(e){return g(we)}var Oe=/#/g,ke=/&/g,Ae=/\//g,je=/=/g,Me=/\?/g,Ne=/\+/g,Pe=/%5B/g,Fe=/%5D/g,Ie=/%5E/g,Le=/%60/g,Re=/%7B/g,ze=/%7C/g,Be=/%7D/g,Ve=/%20/g;function He(e){return e==null?``:encodeURI(``+e).replace(ze,`|`).replace(Pe,`[`).replace(Fe,`]`)}function Ue(e){return He(e).replace(Re,`{`).replace(Be,`}`).replace(Ie,`^`)}function We(e){return He(e).replace(Ne,`%2B`).replace(Ve,`+`).replace(Oe,`%23`).replace(ke,`%26`).replace(Le,"`").replace(Re,`{`).replace(Be,`}`).replace(Ie,`^`)}function Ge(e){return We(e).replace(je,`%3D`)}function Ke(e){return He(e).replace(Oe,`%23`).replace(Me,`%3F`)}function qe(e){return Ke(e).replace(Ae,`%2F`)}function G(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Je=/\/$/,Ye=e=>e.replace(Je,``);function Xe(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=rt(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:G(o)}}function Ze(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function Qe(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function $e(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&K(t.matched[r],n.matched[i])&&et(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function K(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function et(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!tt(e[n],t[n]))return!1;return!0}function tt(e,t){return V(e)?nt(e,t):V(t)?nt(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function nt(e,t){return V(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function rt(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var q={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},it=function(e){return e.pop=`pop`,e.push=`push`,e}({}),at=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function ot(e){if(!e)if(R){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Ye(e)}var st=/^[^#]+#/;function ct(e,t){return e.replace(st,`#`)+t}function lt(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var J=()=>({left:window.scrollX,top:window.scrollY});function ut(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=lt(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function dt(e,t){return(history.state?history.state.position-t:-1)+e}var ft=new Map;function pt(e,t){ft.set(e,t)}function mt(e){let t=ft.get(e);return ft.delete(e),t}function ht(e){return typeof e==`string`||e&&typeof e==`object`}function gt(e){return typeof e==`string`||typeof e==`symbol`}function _t(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(Ne,` `),i=r.indexOf(`=`),a=G(i<0?r:r.slice(0,i)),o=i<0?null:G(r.slice(i+1));if(a in t){let e=t[a];V(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function vt(e){let t=``;for(let n in e){let r=e[n];if(n=Ge(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(V(r)?r.map(e=>e&&We(e)):[r&&We(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function yt(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=V(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(U(H.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):ht(e)?c(U(H.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function bt(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(ge(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=_e(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}return a}function xt(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>K(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>K(e,s))||i.push(s))}return[n,r,i]}var St=()=>location.protocol+`//`+location.host;function Ct(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),Qe(n,``)}return Qe(n,e)+r+i}function wt(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ct(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:it.pop,direction:u?u>0?at.forward:at.back:at.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(z({},e.state,{scroll:J()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Tt(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?J():null}}function Et(e){let{history:t,location:n}=window,r={value:Ct(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:St()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,z({},t.state,Tt(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=z({},i.value,t.state,{forward:e,scroll:J()});a(o.current,o,!0),a(e,z({},Tt(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Dt(e){e=ot(e);let t=Et(e),n=wt(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=z({location:``,base:e,go:r,createHref:ct.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),Ot={type:Z.Static,value:``},kt=/[a-zA-Z0-9_]/;function At(e){if(!e)return[[]];if(e===`/`)return[[Ot]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;){if(c=e[s++],c===`\\`&&n!==Q.ParamRegExp){r=n,n=Q.EscapeNext;continue}switch(n){case Q.Static:c===`/`?(l&&d(),o()):c===`:`?(d(),n=Q.Param):f();break;case Q.EscapeNext:f(),n=r;break;case Q.Param:c===`(`?n=Q.ParamRegExp:kt.test(c)?f():(d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case Q.ParamRegExp:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=Q.ParamRegExpEnd:u+=c;break;case Q.ParamRegExpEnd:d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`);break}}return n===Q.ParamRegExp&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var jt=`[^/]+?`,Mt={sensitive:!1,strict:!1,start:!0,end:!0},$=function(e){return e[e._multiplier=10]=`_multiplier`,e[e.Root=90]=`Root`,e[e.Segment=40]=`Segment`,e[e.SubSegment=30]=`SubSegment`,e[e.Static=40]=`Static`,e[e.Dynamic=20]=`Dynamic`,e[e.BonusCustomRegExp=10]=`BonusCustomRegExp`,e[e.BonusWildcard=-50]=`BonusWildcard`,e[e.BonusRepeatable=-20]=`BonusRepeatable`,e[e.BonusOptional=-8]=`BonusOptional`,e[e.BonusStrict=.7000000000000001]=`BonusStrict`,e[e.BonusCaseSensitive=.25]=`BonusCaseSensitive`,e}($||{}),Nt=/[.+*?^${}()[\]/\\]/g;function Pt(e,t){let n=z({},Mt,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[$.Root];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=$.Segment+(n.sensitive?$.BonusCaseSensitive:0);if(o.type===Z.Static)r||(i+=`/`),i+=o.value.replace(Nt,`\\$&`),s+=$.Static;else if(o.type===Z.Param){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||jt;if(u!==jt){s+=$.BonusCustomRegExp;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=$.Dynamic,c&&(s+=$.BonusOptional),n&&(s+=$.BonusRepeatable),u===`.*`&&(s+=$.BonusWildcard)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=$.BonusStrict}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===Z.Static)n+=e.value;else if(e.type===Z.Param){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(V(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=V(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Ft(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===$.Static+$.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function It(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Ft(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(Lt(r))return 1;if(Lt(i))return-1}return i.length-r.length}function Lt(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Rt={strict:!1,end:!0,sensitive:!1};function zt(e,t,n){let r=z(Pt(At(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Bt(e,t){let n=[],r=new Map;t=ye(Rt,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Ht(e);s.aliasOf=r&&r.record;let l=ye(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Ht(z({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=zt(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Wt(d)&&o(e.name)),Jt(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:B}function o(e){if(gt(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Kt(e,n);n.splice(t,0,e),e.record.name&&!Wt(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw U(H.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=z(Vt(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Vt(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw U(H.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=z({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Gt(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Vt(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ht(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ut(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function Ut(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Wt(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Gt(e){return e.reduce((e,t)=>z(e,t.meta),{})}function Kt(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;It(e,t[i])<0?r=i:n=i+1}let i=qt(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function qt(e){let t=e;for(;t=t.parent;)if(Jt(t)&&It(e,t)===0)return t}function Jt({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Yt(e){let t=g(Ce),n=g(we),r=_(()=>{let n=h(e.to);return t.resolve(n)}),i=_(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(K.bind(null,i));if(o>-1)return o;let s=en(e[t-2]);return t>1&&en(i)===s&&a[a.length-1].path!==s?a.findIndex(K.bind(null,e[t-2])):o}),a=_(()=>i.value>-1&&$t(n.params,r.value.params)),o=_(()=>i.value>-1&&i.value===n.matched.length-1&&et(n.params,r.value.params));function s(n={}){if(Qt(n)){let n=t[h(e.replace)?`replace`:`push`](h(e.to)).catch(B);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:_(()=>r.value.href),isActive:a,isExactActive:o,navigate:s}}function Xt(e){return e.length===1?e[0]:e}var Zt=n({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Yt,setup(e,{slots:n}){let r=ne(Yt(e)),{options:i}=g(Ce),a=_(()=>({[tn(e.activeClass,i.linkActiveClass,`router-link-active`)]:r.isActive,[tn(e.exactActiveClass,i.linkExactActiveClass,`router-link-exact-active`)]:r.isExactActive}));return()=>{let i=n.default&&Xt(n.default(r));return e.custom?i:t(`a`,{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:a.value},i)}}});function Qt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function $t(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!V(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function en(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var tn=(e,t,n)=>e??t??n,nn=n({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:n,slots:i}){let a=g(Te),s=_(()=>e.route||a.value),c=g(Se,0),l=_(()=>{let e=h(c),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),d=_(()=>s.value.matched[l.value]);r(Se,_(()=>l.value+1)),r(xe,d),r(Te,s);let f=o();return u(()=>[f.value,d.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!K(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=s.value,a=e.name,o=d.value,c=o&&o.components[a];if(!c)return rn(i.default,{Component:c,route:r});let l=o.props[a],u=t(c,z({},l?l===!0?r.params:typeof l==`function`?l(r):l:null,n,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:f}));return rn(i.default,{Component:u,route:r})||u}}});function rn(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var an=nn;function on(t){let n=Bt(t.routes,t),r=t.parseQuery||_t,i=t.stringifyQuery||vt,a=t.history,o=Y(),s=Y(),c=Y(),l=ee(q),u=q;R&&t.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let d=ve.bind(null,e=>``+e),f=ve.bind(null,qe),p=ve.bind(null,G);function te(e,t){let r,i;return gt(e)?(r=n.getRecordMatcher(e),i=t):i=e,n.addRoute(i,r)}function g(e){let t=n.getRecordMatcher(e);t&&n.removeRoute(t)}function ne(){return n.getRoutes().map(e=>e.record)}function _(e){return!!n.getRecordMatcher(e)}function v(e,t){if(t=z({},t||l.value),typeof e==`string`){let i=Xe(r,e,t.path),o=n.resolve({path:i.path},t),s=a.createHref(i.fullPath);return z(i,o,{params:p(o.params),hash:G(i.hash),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=z({},e,{path:Xe(r,e.path,t.path).path});else{let n=z({},e.params);for(let e in n)n[e]??delete n[e];o=z({},e,{params:f(n)}),t.params=f(t.params)}let s=n.resolve(o,t),c=e.hash||``;s.params=d(p(s.params));let u=Ze(i,z({},e,{hash:Ue(c),path:s.path})),ee=a.createHref(u);return z({fullPath:u,hash:c,query:i===vt?yt(e.query):e.query||{}},s,{redirectedFrom:void 0,href:ee})}function y(e){return typeof e==`string`?Xe(r,e,l.value.path):z({},e)}function b(e,t){if(u!==e)return U(H.NAVIGATION_CANCELLED,{from:t,to:e})}function x(e){return w(e)}function S(e){return x(z(y(e),{replace:!0}))}function C(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=y(i):{path:i},i.params={}),z({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function w(e,t){let n=u=v(e),r=l.value,a=e.state,o=e.force,s=e.replace===!0,c=C(n,r);if(c)return w(z(y(c),{state:typeof c==`object`?z({},a,c.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&$e(i,r,n)&&(f=U(H.NAVIGATION_DUPLICATED,{to:d,from:r}),M(r,r,!0,!1)),(f?Promise.resolve(f):E(d,r)).catch(e=>W(e)?W(e,H.NAVIGATION_GUARD_REDIRECT)?e:j(e):se(e,d,r)).then(e=>{if(e){if(W(e,H.NAVIGATION_GUARD_REDIRECT))return w(z({replace:s},y(e.to),{state:typeof e.to==`object`?z({},a,e.to.state):a,force:o}),t||d)}else e=O(d,r,!0,s,a);return D(d,r,e),e})}function re(e,t){let n=b(e,t);return n?Promise.reject(n):Promise.resolve()}function T(e){let t=P.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function E(e,t){let n,[r,i,a]=xt(e,t);n=bt(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let c=re.bind(null,e,t);return n.push(c),I(n).then(()=>{n=[];for(let r of o.list())n.push(X(r,e,t));return n.push(c),I(n)}).then(()=>{n=bt(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(c),I(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(V(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t));return n.push(c),I(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=bt(a,`beforeRouteEnter`,e,t,T),n.push(c),I(n))).then(()=>{n=[];for(let r of s.list())n.push(X(r,e,t));return n.push(c),I(n)}).catch(e=>W(e,H.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function D(e,t,n){c.list().forEach(r=>T(()=>r(e,t,n)))}function O(e,t,n,r,i){let o=b(e,t);if(o)return o;let s=t===q,c=R?history.state:{};n&&(r||s?a.replace(e.fullPath,z({scroll:s&&c&&c.scroll},i)):a.push(e.fullPath,i)),l.value=e,M(e,t,n,s),j()}let k;function ie(){k||=a.listen((e,t,n)=>{if(!F.listening)return;let r=v(e),i=C(r,F.currentRoute.value);if(i){w(z(i,{replace:!0,force:!0}),r).catch(B);return}u=r;let o=l.value;R&&pt(dt(o.fullPath,n.delta),J()),E(r,o).catch(e=>W(e,H.NAVIGATION_ABORTED|H.NAVIGATION_CANCELLED)?e:W(e,H.NAVIGATION_GUARD_REDIRECT)?(w(z(y(e.to),{force:!0}),r).then(e=>{W(e,H.NAVIGATION_ABORTED|H.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===it.pop&&a.go(-1,!1)}).catch(B),Promise.reject()):(n.delta&&a.go(-n.delta,!1),se(e,r,o))).then(e=>{e||=O(r,o,!1),e&&(n.delta&&!W(e,H.NAVIGATION_CANCELLED)?a.go(-n.delta,!1):n.type===it.pop&&W(e,H.NAVIGATION_ABORTED|H.NAVIGATION_DUPLICATED)&&a.go(-1,!1)),D(r,o,e)}).catch(B)})}let ae=Y(),oe=Y(),A;function se(e,t,n){j(e);let r=oe.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ce(){return A&&l.value!==q?Promise.resolve():new Promise((e,t)=>{ae.add([e,t])})}function j(e){return A||(A=!e,ie(),ae.list().forEach(([t,n])=>e?n(e):t()),ae.reset()),e}function M(n,r,i,a){let{scrollBehavior:o}=t;if(!R||!o)return Promise.resolve();let s=!i&&mt(dt(n.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return e().then(()=>o(n,r,s)).then(e=>e&&ut(e)).catch(e=>se(e,n,r))}let N=e=>a.go(e),le,P=new Set,F={currentRoute:l,listening:!0,addRoute:te,removeRoute:g,clearRoutes:n.clearRoutes,hasRoute:_,getRoutes:ne,resolve:v,options:t,push:x,replace:S,go:N,back:()=>N(-1),forward:()=>N(1),beforeEach:o.add,beforeResolve:s.add,afterEach:c.add,onError:oe.add,isReady:ce,install(e){e.component(`RouterLink`,Zt),e.component(`RouterView`,an),e.config.globalProperties.$router=F,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>h(l)}),R&&!le&&l.value===q&&(le=!0,x(a.location).catch(e=>{}));let t={};for(let e in q)Object.defineProperty(t,e,{get:()=>l.value[e],enumerable:!0});e.provide(Ce,F),e.provide(we,m(t)),e.provide(Te,l);let n=e.unmount;P.add(e),e.unmount=function(){P.delete(e),P.size<1&&(u=q,k&&k(),k=null,l.value=q,le=!1,A=!1),n()}}};function I(e){return e.reduce((e,t)=>e.then(()=>T(t)),Promise.resolve())}return F}export{ce as a,Ee as i,Dt as n,he as o,De as r,on as t};
@@ -6,14 +6,14 @@
6
6
  <title>Gazetta CMS</title>
7
7
  <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='8' fill='%238b5cf6'/%3E%3Crect x='7' y='7' width='8' height='8' rx='2' fill='white'/%3E%3Crect x='17' y='7' width='8' height='8' rx='2' fill='white' opacity='.6'/%3E%3Crect x='7' y='17' width='8' height='8' rx='2' fill='white' opacity='.6'/%3E%3Crect x='17' y='17' width='8' height='8' rx='2' fill='white' opacity='.3'/%3E%3C/svg%3E">
8
8
  <link rel="stylesheet" href="https://unpkg.com/primeicons/primeicons.css">
9
- <script type="module" crossorigin src="/admin/assets/index-DjGNi6yy.js"></script>
9
+ <script type="module" crossorigin src="/admin/assets/index-DniLwxJA.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="/admin/assets/rolldown-runtime-COnpUsM8.js">
11
11
  <link rel="modulepreload" crossorigin href="/admin/assets/vendor-react-BipDVGow.js">
12
12
  <link rel="modulepreload" crossorigin href="/admin/assets/vendor-tiptap-IyO99U4R.js">
13
- <link rel="modulepreload" crossorigin href="/admin/assets/vendor-primevue-BnR1c_bQ.js">
13
+ <link rel="modulepreload" crossorigin href="/admin/assets/vendor-primevue-C0Q_YTCb.js">
14
14
  <link rel="modulepreload" crossorigin href="/admin/assets/vendor-rjsf-HKBAjOmQ.js">
15
- <link rel="modulepreload" crossorigin href="/admin/assets/vendor-vue-DSjyxCX6.js">
16
- <link rel="stylesheet" crossorigin href="/admin/assets/index-Bh_y1d_l.css">
15
+ <link rel="modulepreload" crossorigin href="/admin/assets/vendor-vue-D3wBSmDf.js">
16
+ <link rel="stylesheet" crossorigin href="/admin/assets/index-B6pVot0Y.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="app"></div>
@@ -1,19 +1,40 @@
1
1
  import { Hono } from 'hono';
2
2
  import type { StorageProvider, TargetConfig } from '../types.js';
3
+ import { type SourceContext } from './source-context.js';
3
4
  export interface AdminAppOptions {
5
+ /**
6
+ * Pre-built SourceContext — preferred when the caller controls source-content
7
+ * resolution (e.g., derived from a TargetRegistry via createSourceContextFromRegistry).
8
+ * When provided, `storage` is optional (the context carries its own).
9
+ */
10
+ source?: SourceContext;
4
11
  siteDir: string;
5
- storage: StorageProvider;
12
+ /** Fallback source storage when `source` is not provided. */
13
+ storage?: StorageProvider;
6
14
  /** Directory containing template packages. Defaults to siteDir/templates. */
7
15
  templatesDir?: string;
8
16
  /** Directory containing admin customizations (editors, fields). Defaults to siteDir/admin. */
9
17
  adminDir?: string;
10
18
  /** Production mode — editors/fields are pre-bundled at /admin/editors/*.js */
11
19
  production?: boolean;
12
- /** Pre-initialized targets (legacy) */
20
+ /** @deprecated Pre-initialized target providers. Pass `targetConfigs` for lazy init. */
13
21
  targets?: Map<string, StorageProvider>;
14
- /** Raw target configs targets will be initialized lazily on first publish/fetch */
22
+ /** Target configurationsproviders are initialized lazily on first publish/fetch/compare. */
15
23
  targetConfigs?: Record<string, TargetConfig>;
16
24
  }
17
- export declare function createAdminApp(opts: AdminAppOptions): Hono;
18
- export declare function createAdminApp(siteDir: string, storage: StorageProvider, targets?: Map<string, StorageProvider>): Hono;
25
+ type AdminApp = Hono & {
26
+ invalidateTemplatesCache(): void;
27
+ invalidateSourceSidecars(): void;
28
+ writeSourceSidecar(kind: 'page' | 'fragment', name: string): Promise<void>;
29
+ };
30
+ /**
31
+ * Create an admin API Hono app. Accepts a single options object.
32
+ *
33
+ * Target providers can be supplied either already-initialized via `targets`
34
+ * (legacy), or as configs via `targetConfigs` (lazy init on first use).
35
+ * Exactly one of these is expected when publish/fetch/compare routes are
36
+ * used; both may be present (pre-initialized entries override configs).
37
+ */
38
+ export declare function createAdminApp(opts: AdminAppOptions): AdminApp;
39
+ export {};
19
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAWhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,eAAe,CAAA;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtC,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAC7C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAA;AAC3D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQhE,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAY5B,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wFAAwF;IACxF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtC,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAC7C;AAED,KAAK,QAAQ,GAAG,IAAI,GAAG;IACrB,wBAAwB,IAAI,IAAI,CAAA;IAChC,wBAAwB,IAAI,IAAI,CAAA;IAChC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CA+H9D"}
@@ -1,6 +1,14 @@
1
1
  import { Hono } from 'hono';
2
2
  import { join } from 'node:path';
3
3
  import { logger } from 'hono/logger';
4
+ import { scanTemplates } from '../templates-scan.js';
5
+ import { memoizeAsync } from '../concurrency.js';
6
+ import { createSourceSidecarWriter } from '../source-sidecars.js';
7
+ import { createContentRoot } from '../content-root.js';
8
+ import { createTargetRegistryView } from '../targets.js';
9
+ import { createHistoryProvider } from '../history-provider.js';
10
+ import { isHistoryEnabled, getHistoryRetention } from '../types.js';
11
+ import { createSourceContext, staticSourceResolver, registrySourceResolver, } from './source-context.js';
4
12
  import { authMiddleware } from './middleware/auth.js';
5
13
  import { siteRoutes } from './routes/site.js';
6
14
  import { pageRoutes } from './routes/pages.js';
@@ -10,23 +18,177 @@ import { previewRoutes } from './routes/preview.js';
10
18
  import { publishRoutes } from './routes/publish.js';
11
19
  import { compareRoutes } from './routes/compare.js';
12
20
  import { fieldRoutes } from './routes/fields.js';
13
- export function createAdminApp(siteDirOrOpts, storage, targets) {
14
- const opts = typeof siteDirOrOpts === 'string'
15
- ? { siteDir: siteDirOrOpts, storage: storage, targets }
16
- : siteDirOrOpts;
21
+ import { historyRoutes } from './routes/history.js';
22
+ /**
23
+ * Create an admin API Hono app. Accepts a single options object.
24
+ *
25
+ * Target providers can be supplied either already-initialized via `targets`
26
+ * (legacy), or as configs via `targetConfigs` (lazy init on first use).
27
+ * Exactly one of these is expected when publish/fetch/compare routes are
28
+ * used; both may be present (pre-initialized entries override configs).
29
+ */
30
+ export function createAdminApp(opts) {
17
31
  const app = new Hono();
18
32
  app.use(logger());
19
33
  app.use('/api/*', authMiddleware());
20
34
  const templatesDir = opts.templatesDir ?? join(opts.siteDir, 'templates');
21
35
  const adminDir = opts.adminDir ?? join(opts.siteDir, 'admin');
22
- app.route('/', siteRoutes(opts.siteDir, opts.storage));
23
- app.route('/', pageRoutes(opts.siteDir, opts.storage));
24
- app.route('/', fragmentRoutes(opts.siteDir, opts.storage));
25
- app.route('/', templateRoutes(opts.siteDir, opts.storage, templatesDir, adminDir, opts.production));
26
- app.route('/', previewRoutes(opts.siteDir, opts.storage, templatesDir));
27
- app.route('/', publishRoutes(opts.siteDir, opts.storage, opts.targets, opts.targetConfigs, templatesDir));
28
- app.route('/', compareRoutes(opts.siteDir, opts.storage, opts.targets, opts.targetConfigs, templatesDir));
29
- app.route('/', fieldRoutes(opts.siteDir, opts.storage, adminDir));
30
- return app;
36
+ // scanTemplates spawns a worker thread per template (jiti import + graph
37
+ // hash). On a 50-template project that's ~5s of CPU on every publish +
38
+ // compare. Memoize at the server lifetime — the CLI's file watcher calls
39
+ // invalidateTemplatesCache() below on any template change.
40
+ //
41
+ // Keyed by (dir, root) as a string; different sites on one server would
42
+ // each get their own cache entry. For now there's only one site per
43
+ // server so a single memoize is enough; swap for a Map<key, Memoized> if
44
+ // we go multi-site per process.
45
+ const cachedScan = memoizeAsync(async () => scanTemplates(templatesDir, opts.siteDir.replace(/[\\/]sites[\\/][^\\/]+$/, '')));
46
+ const scan = (tDir, root) => (tDir === templatesDir ? cachedScan.get() : scanTemplates(tDir, root));
47
+ // Prefer an externally-provided SourceContext. Fall back to constructing
48
+ // one from opts.storage + opts.siteDir, which is the legacy shape.
49
+ let source;
50
+ let sidecarWriter;
51
+ if (opts.source) {
52
+ source = opts.source;
53
+ sidecarWriter =
54
+ opts.source.sidecarWriter ??
55
+ createSourceSidecarWriter({
56
+ contentRoot: opts.source.contentRoot,
57
+ scanTemplates: () => cachedScan.get(),
58
+ templatesDir,
59
+ manifest: opts.source.manifest,
60
+ });
61
+ // Backfill history on the source if the caller didn't supply one —
62
+ // dev bootstrap builds a bare SourceContext and relies on admin-api
63
+ // to wire history per the target's config. Skip when the target's
64
+ // site.yaml has `history.enabled: false`, or when there's no
65
+ // matching targetConfig (legacy single-storage path).
66
+ const sourceHistory = opts.source.history ?? buildHistoryForSource(opts, source);
67
+ if (!opts.source.sidecarWriter || !opts.source.history) {
68
+ source = { ...opts.source, sidecarWriter, history: sourceHistory };
69
+ }
70
+ }
71
+ else {
72
+ if (!opts.storage) {
73
+ throw new Error('createAdminApp: either `source` or `storage` must be provided');
74
+ }
75
+ const bootstrapRoot = createContentRoot(opts.storage, opts.siteDir);
76
+ sidecarWriter = createSourceSidecarWriter({
77
+ contentRoot: bootstrapRoot,
78
+ scanTemplates: () => cachedScan.get(),
79
+ templatesDir,
80
+ });
81
+ source = createSourceContext({
82
+ storage: opts.storage,
83
+ siteDir: opts.siteDir,
84
+ sidecarWriter,
85
+ history: buildHistoryForLegacySource(opts),
86
+ });
87
+ }
88
+ // Build the per-request source resolver. When target configs are
89
+ // declared, routes honor `?target=<name>` to read from any known
90
+ // target. Providers are initialized lazily so dev startup doesn't
91
+ // pay the cost of connecting every cloud target just to serve the
92
+ // editable local one.
93
+ //
94
+ // Without target configs (tests, single-target setups), the resolver
95
+ // is static — always returns the bootstrap source.
96
+ let resolveSource;
97
+ if (opts.targetConfigs && Object.keys(opts.targetConfigs).length > 0) {
98
+ // Start with whatever pre-initialized providers the caller supplied
99
+ // (typically the editable source target from bootstrap). Missing
100
+ // providers are built on demand via lazyInit below.
101
+ const providers = new Map(opts.targets ?? []);
102
+ const registry = createTargetRegistryView(providers, opts.targetConfigs);
103
+ resolveSource = registrySourceResolver({
104
+ registry,
105
+ projectSiteDir: source.projectSiteDir,
106
+ sidecarWriter,
107
+ manifest: source.manifest,
108
+ // The registry's filesystem targets are already content-rooted
109
+ // (path=./targets/<key>); siteDir on the resolved context is empty.
110
+ siteDir: '',
111
+ lazyInit: async (name) => {
112
+ const config = opts.targetConfigs[name];
113
+ if (!config)
114
+ return;
115
+ const { createStorageProvider } = await import('../targets.js');
116
+ const storage = await createStorageProvider(config.storage, source.projectSiteDir, name);
117
+ const maybeInit = storage;
118
+ if (typeof maybeInit.init === 'function')
119
+ await maybeInit.init();
120
+ providers.set(name, storage);
121
+ },
122
+ // Build a HistoryProvider per target, honoring the site.yaml
123
+ // `history` block (enabled/retention). Returns undefined when the
124
+ // target has history turned off — routes no-op on absent provider.
125
+ buildHistory: (name, storage) => {
126
+ const config = opts.targetConfigs[name];
127
+ if (!config || !isHistoryEnabled(config))
128
+ return undefined;
129
+ return createHistoryProvider({ storage, retention: getHistoryRetention(config) });
130
+ },
131
+ });
132
+ }
133
+ else {
134
+ resolveSource = staticSourceResolver(source);
135
+ }
136
+ app.route('/', siteRoutes(resolveSource));
137
+ app.route('/', pageRoutes(resolveSource));
138
+ app.route('/', fragmentRoutes(resolveSource));
139
+ app.route('/', templateRoutes(resolveSource, templatesDir, adminDir, opts.production));
140
+ app.route('/', previewRoutes(resolveSource, templatesDir));
141
+ app.route('/', publishRoutes(resolveSource, opts.targets, opts.targetConfigs, templatesDir, scan));
142
+ app.route('/', compareRoutes(resolveSource, opts.targets, opts.targetConfigs, templatesDir, scan));
143
+ app.route('/', fieldRoutes(resolveSource, adminDir));
144
+ app.route('/', historyRoutes(resolveSource, opts.targets, opts.targetConfigs));
145
+ // Exposed for the CLI's template file watcher: clears the memoized scan
146
+ // so the next publish/compare picks up template edits. Not part of the
147
+ // Hono Request interface — the CLI casts the return.
148
+ const appWithInvalidate = app;
149
+ appWithInvalidate.invalidateTemplatesCache = () => cachedScan.invalidate();
150
+ appWithInvalidate.invalidateSourceSidecars = () => sidecarWriter.invalidate();
151
+ appWithInvalidate.writeSourceSidecar = (kind, name) => sidecarWriter.writeFor(kind, name);
152
+ return appWithInvalidate;
153
+ }
154
+ /**
155
+ * Build a HistoryProvider for the caller-supplied source. Used when
156
+ * the bootstrap gives us a SourceContext without history pre-wired
157
+ * (dev server, CLI scripts). Picks up the source target's config from
158
+ * `opts.targetConfigs` — respects `history.enabled: false`, honors the
159
+ * configured retention. Returns undefined when we can't identify the
160
+ * target or history is disabled.
161
+ */
162
+ function buildHistoryForSource(opts, source) {
163
+ const name = source.targetName;
164
+ const config = name ? opts.targetConfigs?.[name] : undefined;
165
+ if (!config || !isHistoryEnabled(config))
166
+ return undefined;
167
+ return createHistoryProvider({
168
+ storage: source.storage,
169
+ retention: getHistoryRetention(config),
170
+ });
171
+ }
172
+ /**
173
+ * Legacy path: caller passed raw `opts.storage` rather than a
174
+ * SourceContext. No target name is available; default history to
175
+ * enabled with default retention, assuming the common single-target
176
+ * setup. Skipped when targetConfigs is absent — historical behavior
177
+ * (tests that rely on no `.gazetta/` writes happening).
178
+ */
179
+ function buildHistoryForLegacySource(opts) {
180
+ const configs = opts.targetConfigs;
181
+ if (!configs)
182
+ return undefined;
183
+ // Pick the first editable target's config as the best-effort stand-in.
184
+ // Non-editable targets don't receive saves anyway, so the legacy
185
+ // single-storage path is necessarily an editable one.
186
+ const firstEditable = Object.entries(configs).find(([, c]) => isHistoryEnabled(c));
187
+ if (!firstEditable)
188
+ return undefined;
189
+ return createHistoryProvider({
190
+ storage: opts.storage,
191
+ retention: getHistoryRetention(firstEditable[1]),
192
+ });
31
193
  }
32
194
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAmBhD,MAAM,UAAU,cAAc,CAC5B,aAAuC,EACvC,OAAyB,EACzB,OAAsC;IAEtC,MAAM,IAAI,GAAoB,OAAO,aAAa,KAAK,QAAQ;QAC7D,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAQ,EAAE,OAAO,EAAE;QACxD,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IAEtB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IACjB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAE7D,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1D,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACnG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;IACvE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IACzG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IACzG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEjE,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,yBAAyB,EAA4B,MAAM,uBAAuB,CAAA;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA8BnD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAqB;IAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IAEtB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IACjB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAE7D,yEAAyE;IACzE,uEAAuE;IACvE,yEAAyE;IACzE,2DAA2D;IAC3D,EAAE;IACF,wEAAwE;IACxE,oEAAoE;IACpE,yEAAyE;IACzE,gCAAgC;IAChC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE,CACzC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CACjF,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAEnH,yEAAyE;IACzE,mEAAmE;IACnE,IAAI,MAAqB,CAAA;IACzB,IAAI,aAAkC,CAAA;IACtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACpB,aAAa;YACX,IAAI,CAAC,MAAM,CAAC,aAAa;gBACzB,yBAAyB,CAAC;oBACxB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBACpC,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;oBACrC,YAAY;oBACZ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;iBAC/B,CAAC,CAAA;QACJ,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,6DAA6D;QAC7D,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAChF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,CAAA;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAClF,CAAC;QACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACnE,aAAa,GAAG,yBAAyB,CAAC;YACxC,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;YACrC,YAAY;SACb,CAAC,CAAA;QACF,MAAM,GAAG,mBAAmB,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa;YACb,OAAO,EAAE,2BAA2B,CAAC,IAAI,CAAC;SAC3C,CAAC,CAAA;IACJ,CAAC;IAED,iEAAiE;IACjE,iEAAiE;IACjE,kEAAkE;IAClE,kEAAkE;IAClE,sBAAsB;IACtB,EAAE;IACF,qEAAqE;IACrE,mDAAmD;IACnD,IAAI,aAAoC,CAAA;IACxC,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,oEAAoE;QACpE,iEAAiE;QACjE,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACxE,aAAa,GAAG,sBAAsB,CAAC;YACrC,QAAQ;YACR,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa;YACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,+DAA+D;YAC/D,oEAAoE;YACpE,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAc,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM;oBAAE,OAAM;gBACnB,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;gBAC/D,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;gBACxF,MAAM,SAAS,GAAG,OAA2D,CAAA;gBAC7E,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;oBAAE,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;gBAChE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC9B,CAAC;YACD,6DAA6D;YAC7D,kEAAkE;YAClE,mEAAmE;YACnE,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAc,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBAAE,OAAO,SAAS,CAAA;gBAC1D,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACnF,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IACzC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IACzC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;IAC7C,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACtF,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IAC1D,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAA;IAClG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAA;IAClG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;IACpD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IAE9E,wEAAwE;IACxE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,GAAe,CAAA;IACzC,iBAAiB,CAAC,wBAAwB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;IAC1E,iBAAiB,CAAC,wBAAwB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAA;IAC7E,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACzF,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,IAAqB,EAAE,MAAqB;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAA;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1D,OAAO,qBAAqB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;KACvC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,2BAA2B,CAAC,IAAqB;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAA;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAC9B,uEAAuE;IACvE,iEAAiE;IACjE,sDAAsD;IACtD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAClF,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAA;IACpC,OAAO,qBAAqB,CAAC;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAQ;QACtB,SAAS,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KACjD,CAAC,CAAA;AACJ,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { Hono } from 'hono';
2
2
  import type { StorageProvider, TargetConfig } from '../../types.js';
3
- export declare function compareRoutes(siteDir: string, sourceStorage: StorageProvider, preInitTargets?: Map<string, StorageProvider>, targetConfigs?: Record<string, TargetConfig>, templatesDir?: string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
3
+ import type { TemplateInfo } from '../../templates-scan.js';
4
+ import type { SourceContextResolver } from '../source-context.js';
5
+ export declare function compareRoutes(resolve: SourceContextResolver, preInitTargets?: Map<string, StorageProvider>, targetConfigs?: Record<string, TargetConfig>, templatesDir?: string, scanTemplatesInjected?: (templatesDir: string, projectRoot: string) => Promise<TemplateInfo[]>): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
4
6
  //# sourceMappingURL=compare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAInE,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,eAAe,EAC9B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,8EAsDtB"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE,wBAAgB,aAAa,CAC3B,OAAO,EAAE,qBAAqB,EAC9B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,EACrB,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,8EAiE/F"}
@@ -1,48 +1,58 @@
1
1
  import { Hono } from 'hono';
2
2
  import { join } from 'node:path';
3
- import { getPublishMode } from '../../types.js';
3
+ import { getType } from '../../types.js';
4
4
  import { compareTargets } from '../../compare.js';
5
- export function compareRoutes(siteDir, sourceStorage, preInitTargets, targetConfigs, templatesDir) {
5
+ export function compareRoutes(resolve, preInitTargets, targetConfigs, templatesDir, scanTemplatesInjected) {
6
6
  const app = new Hono();
7
7
  let targets = preInitTargets ?? null;
8
- const initPromise = preInitTargets
9
- ? Promise.resolve(preInitTargets)
10
- : (!targetConfigs || Object.keys(targetConfigs).length === 0)
11
- ? Promise.resolve(new Map())
12
- : (async () => {
13
- const { createTargetRegistry } = await import('../../targets.js');
14
- targets = await createTargetRegistry(targetConfigs, siteDir);
15
- return targets;
16
- })();
17
- if (!preInitTargets) {
18
- initPromise.then(t => { targets = t; }).catch(() => { targets = new Map(); });
19
- }
20
- async function getTargets() {
8
+ let targetsInitPromise = null;
9
+ async function getTargets(projectSiteDir) {
21
10
  if (targets)
22
11
  return targets;
23
- return initPromise;
12
+ if (!targetConfigs || Object.keys(targetConfigs).length === 0) {
13
+ targets = new Map();
14
+ return targets;
15
+ }
16
+ if (!targetsInitPromise) {
17
+ const { createTargetRegistry } = await import('../../targets.js');
18
+ targetsInitPromise = createTargetRegistry(targetConfigs, projectSiteDir)
19
+ .then(t => {
20
+ targets = t;
21
+ return t;
22
+ })
23
+ .catch(() => {
24
+ targets = new Map();
25
+ return new Map();
26
+ });
27
+ }
28
+ return targetsInitPromise;
24
29
  }
25
30
  app.get('/api/compare', async (c) => {
31
+ // `target` = compare destination (what we're diffing against)
32
+ // `source` = source of the compare (which editable target to read from);
33
+ // defaults to the resolver's default editable target
26
34
  const targetName = c.req.query('target');
27
35
  if (!targetName)
28
36
  return c.json({ error: 'Missing "target" query parameter' }, 400);
29
- const t = await getTargets();
37
+ const source = await resolve(c.req.query('source'));
38
+ const { projectSiteDir } = source;
39
+ const t = await getTargets(projectSiteDir);
30
40
  const targetStorage = t.get(targetName);
31
41
  if (!targetStorage)
32
42
  return c.json({ error: `Unknown target: ${targetName}` }, 400);
33
- const tdir = templatesDir ?? join(siteDir, 'templates');
34
- // Walk up from siteDir to find the project root (parent of "sites/")
35
- const projectRoot = siteDir.replace(/[\\/]sites[\\/][^\\/]+$/, '');
43
+ const tdir = templatesDir ?? join(projectSiteDir, 'templates');
44
+ const projectRoot = projectSiteDir.replace(/[\\/]sites[\\/][^\\/]+$/, '');
36
45
  const targetConfig = targetConfigs?.[targetName];
37
- const publishMode = targetConfig ? getPublishMode(targetConfig) : 'esi';
46
+ const type = targetConfig ? getType(targetConfig) : 'dynamic';
38
47
  try {
39
48
  const result = await compareTargets({
40
- source: sourceStorage,
49
+ sourceRoot: source.contentRoot,
41
50
  target: targetStorage,
42
- siteDir,
43
51
  templatesDir: tdir,
44
52
  projectRoot,
45
- publishMode,
53
+ type,
54
+ scanTemplates: scanTemplatesInjected,
55
+ manifest: source.manifest,
46
56
  });
47
57
  return c.json(result);
48
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { Hono } from 'hono';
2
- import type { StorageProvider } from '../../types.js';
3
- export declare function fieldRoutes(siteDir: string, storage: StorageProvider, adminDir?: string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
2
+ import type { SourceContextResolver } from '../source-context.js';
3
+ export declare function fieldRoutes(resolve: SourceContextResolver, adminDir?: string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
4
4
  //# sourceMappingURL=fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,8EAkBvF"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIjE,wBAAgB,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,MAAM,8EAyB5E"}
@@ -1,11 +1,18 @@
1
1
  import { Hono } from 'hono';
2
2
  import { join } from 'node:path';
3
+ import { createFilesystemProvider } from '../../providers/filesystem.js';
3
4
  const FIELD_EXTENSIONS = ['.ts', '.tsx'];
4
- export function fieldRoutes(siteDir, storage, adminDir) {
5
+ export function fieldRoutes(resolve, adminDir) {
5
6
  const app = new Hono();
6
- const fieldsDir = join(adminDir ?? join(siteDir, 'admin'), 'fields');
7
+ // Custom fields live at project level, outside target content storage.
8
+ const storage = createFilesystemProvider();
7
9
  app.get('/api/fields', async (c) => {
8
- if (!await storage.exists(fieldsDir))
10
+ // projectSiteDir is target-invariant (it's the on-disk project path).
11
+ // We still go through resolve() so the single source-lookup codepath
12
+ // serves this route too — keeps the handler shape uniform.
13
+ const source = await resolve(c.req.query('target'));
14
+ const fieldsDir = join(adminDir ?? join(source.projectSiteDir, 'admin'), 'fields');
15
+ if (!(await storage.exists(fieldsDir)))
9
16
  return c.json([]);
10
17
  const entries = await storage.readDir(fieldsDir);
11
18
  const fields = entries
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/admin-api/routes/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAExC,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAAwB,EAAE,QAAiB;IACtF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEpE,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACjF,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;QAChD,CAAC,CAAC,CAAA;QACJ,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/admin-api/routes/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAGxE,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAExC,MAAM,UAAU,WAAW,CAAC,OAA8B,EAAE,QAAiB;IAC3E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,uEAAuE;IACvE,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAA;IAE1C,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC/B,sEAAsE;QACtE,qEAAqE;QACrE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;QAElF,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;aACjF,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;YAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;QAChD,CAAC,CAAC,CAAA;QACJ,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { Hono } from 'hono';
2
- import type { StorageProvider } from '../../types.js';
3
- export declare function fragmentRoutes(siteDir: string, storage: StorageProvider): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
2
+ import type { SourceContextResolver } from '../source-context.js';
3
+ export declare function fragmentRoutes(resolve: SourceContextResolver): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
4
4
  //# sourceMappingURL=fragments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/fragments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,8EAyEvE"}
1
+ {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/fragments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIjE,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,8EAmJ5D"}