@opengis/cms 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -3
- package/dist/assets/AddUser-CX-McfRW.js +1 -0
- package/dist/assets/ApiKeys-DSv1exYv.js +16 -0
- package/dist/assets/Appearance-DDtOUvCV.js +6 -0
- package/dist/assets/ArticlesPage-D6B3cZsl.js +6 -0
- package/dist/assets/BuilderPage-CCeSMVWe.js +1 -0
- package/dist/assets/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-DVYVfYF4.js +1 -0
- package/dist/assets/CollectionsPage-CHk8Cn5k.js +1 -0
- package/dist/assets/Dashboard-Bs7sXO6h.js +11 -0
- package/dist/assets/EditCollectionPage-gPuLJrN8.js +41 -0
- package/dist/assets/EmailPage-DhlWsPxk.js +1 -0
- package/dist/assets/EmptyData-Ct-xQv_N.js +1 -0
- package/dist/assets/FeedbackPage-DtaOncVv.js +1 -0
- package/dist/assets/Logs-CZ5klHNK.js +1 -0
- package/dist/assets/MediaBreadcrumb-BpOxt5PK.js +11 -0
- package/dist/assets/MediaPage-DqRcZFlO.js +16 -0
- package/dist/assets/MenuAddPage-BLcoVgrS.js +1 -0
- package/dist/assets/MenuItemPage-B2otXqkz.js +20 -0
- package/dist/assets/MenuPage-C00m4Fc_.js +1 -0
- package/dist/assets/MonacoEditor.vue_vue_type_script_setup_true_lang-CjoEsC67.js +3 -0
- package/dist/assets/PermissionsPage-LtqcCJ14.js +1 -0
- package/dist/assets/Settings-BHH6RoBP.js +1 -0
- package/dist/assets/SettingsTable-CY5pZx1z.js +1 -0
- package/dist/assets/SettingsTitle-t4WJBFxZ.js +1 -0
- package/dist/assets/SingletonsPage-Bn2Ypjhs.js +6 -0
- package/dist/assets/TagsPage-DAiakEth.js +1 -0
- package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-BQ5m4aZd.js +11 -0
- package/dist/assets/UniversalTablePagination.vue_vue_type_script_setup_true_lang-DppVBws0.js +1 -0
- package/dist/assets/Users-CMH5j0db.js +1 -0
- package/dist/assets/UsersPage-CDGreEib.js +1 -0
- package/dist/assets/arrow-up-DCe0WsrM.js +16 -0
- package/dist/assets/{calendar-hsWc4yH-.js → calendar-o9t4MkD2.js} +1 -1
- package/dist/assets/chevron-left-WFftVS9c.js +6 -0
- package/dist/assets/chevron-right-BiiSb3Be.js +6 -0
- package/dist/assets/contentForm-unZQhjCu.js +6 -0
- package/dist/assets/en-BDx3Svx8.js +1 -0
- package/dist/assets/eye-Dijywc6g.js +6 -0
- package/dist/assets/file-B_duymIT.js +6 -0
- package/dist/assets/general-CkN_0qIV.js +1 -0
- package/dist/assets/index-BIp7eSXk.js +1 -0
- package/dist/assets/index-DCW2e4Az.js +9 -0
- package/dist/assets/index-DGweaj24.js +1 -0
- package/dist/assets/index-W-qQIppj-BDlsxaGB.js +1 -0
- package/dist/assets/index-W-qQIppj-BsopI3Hz-BIZR-dhy.js +1 -0
- package/dist/assets/index-oQz9FOqL.css +1 -0
- package/dist/assets/index-yMJAVBXk.js +290 -0
- package/dist/assets/list-CXRbSNky.js +6 -0
- package/dist/assets/pencil-CwnPP4IJ.js +6 -0
- package/dist/assets/{plus-D9etvrM2.js → plus-DLR44m6p.js} +1 -1
- package/dist/assets/save-FeDrOUOd.js +6 -0
- package/dist/assets/{search-BI-hqhq6.js → search-C4-fHihx.js} +1 -1
- package/dist/assets/{square-pen-61CkyXzK.js → square-pen-xVs4e8Yb.js} +1 -1
- package/dist/assets/{trash-2-CJSl_r88.js → trash-2-BGXMNU3d.js} +1 -1
- package/dist/assets/uk-BA7DIKEL.js +1 -0
- package/dist/assets/useDebounce-DFq3rxAW.js +1 -0
- package/dist/assets/vs-form-reletion-link-C-xrdHDl.js +20 -0
- package/dist/assets/vs-form-reletion-link-bk-9ZkDH.css +1 -0
- package/dist/assets/vue.-sixQ7xP-CUPNuJcq.js +1 -0
- package/dist/assets/vuedraggable.umd-W_2WTF6i.js +14 -0
- package/dist/assets/{x-BNquQe5y.js → x-D2t-wfBe.js} +1 -1
- package/dist/index.html +14 -9
- package/module/cms/card/cms.content.table/index.yml +17 -0
- package/module/cms/card/cms.content.table/main_info.hbs +26 -0
- package/module/cms/card/cms.menu.table/content_info.hbs +16 -0
- package/module/cms/card/cms.menu.table/index.yml +18 -0
- package/module/cms/card/cms.menu.table/main_info.hbs +22 -0
- package/module/cms/card/cms.settings.table/index.yml +13 -0
- package/module/cms/card/cms.settings.table/main_info.hbs +20 -0
- package/module/cms/cls/content.status.json +18 -0
- package/module/cms/cls/user_type.json +10 -0
- package/module/cms/form/admin.users.form.json +78 -0
- package/module/cms/form/cms.content.form.json +79 -0
- package/module/cms/form/cms.menu.form.json +69 -0
- package/module/cms/form/cms.settings.form.json +32 -0
- package/module/cms/menu.json +24 -0
- package/module/cms/router.js +154 -0
- package/module/cms/select/cms.page_type.sql +2 -0
- package/module/cms/select/collection.sql +1 -0
- package/module/cms/select/locale.sql +17 -0
- package/module/cms/select/news_tag_id.sql +12 -0
- package/module/cms/select/tag_id.sql +1 -0
- package/module/cms/table/admin.users.table.json +54 -0
- package/module/cms/table/cms.content.table.json +106 -0
- package/module/cms/table/cms.menu.table.json +73 -0
- package/module/cms/table/cms.settings.table.json +57 -0
- package/module/cms/table/collection.default.table.json +102 -0
- package/module/cms/table/single.default.table.json +115 -0
- package/package.json +36 -31
- package/plugin.js +63 -23
- package/server/app.js +20 -3
- package/server/functions/getDraftKey.js +22 -0
- package/server/index.js +2 -3
- package/server/migrations/fixes.sql +124 -0
- package/server/migrations/site.sql +338 -249
- package/server/plugins/adminHook.js +2 -2
- package/server/plugins/hook.js +53 -61
- package/server/plugins/vite.js +5 -5
- package/server/routes/cms/controllers/cmsStat.js +56 -0
- package/server/routes/cms/controllers/cmsSuggest.js +58 -0
- package/server/routes/cms/controllers/deleteContent.js +114 -59
- package/server/routes/cms/controllers/deleteMedia.js +75 -46
- package/server/routes/cms/controllers/downloadMedia.js +48 -48
- package/server/routes/cms/controllers/getContent.js +110 -95
- package/server/routes/cms/controllers/getContentBySlug.js +95 -0
- package/server/routes/cms/controllers/getPermissions.js +15 -15
- package/server/routes/cms/controllers/insertContent.js +218 -68
- package/server/routes/cms/controllers/listMedia.js +93 -72
- package/server/routes/cms/controllers/metadataMedia.js +38 -37
- package/server/routes/cms/controllers/properties.get.js +53 -0
- package/server/routes/cms/controllers/properties.post.js +99 -0
- package/server/routes/cms/controllers/searchContent.js +205 -0
- package/server/routes/cms/controllers/setPermissions.js +49 -49
- package/server/routes/cms/controllers/translate.js +90 -0
- package/server/routes/cms/controllers/updateContent.js +238 -111
- package/server/routes/cms/controllers/uploadMedia.js +78 -65
- package/server/routes/cms/index.mjs +81 -12
- package/server/routes/cms/utils/additionalData.js +36 -0
- package/server/routes/cms/utils/getCollection.js +82 -0
- package/server/routes/cms/utils/getSingle.js +188 -0
- package/server/routes/cms/utils/insertContentLocalization.js +87 -0
- package/server/routes/cms/utils/requestTranslation.js +85 -0
- package/server/routes/cms/utils/updateLocalization.js +48 -0
- package/server/routes/cmsSpace/controllers/deleteSpace.js +26 -0
- package/server/routes/cmsSpace/controllers/getSpaces.js +28 -0
- package/server/routes/cmsSpace/controllers/insertSpace.js +22 -0
- package/server/routes/cmsSpace/controllers/updateSpace.js +24 -0
- package/server/routes/cmsSpace/index.mjs +20 -0
- package/server/routes/contentType/controllers/addContentType.js +162 -0
- package/server/routes/contentType/controllers/contentTypeList.js +54 -0
- package/server/routes/contentType/controllers/delContentType.js +75 -0
- package/server/routes/contentType/controllers/editContentType.js +61 -0
- package/server/routes/contentType/controllers/getContentType.js +37 -0
- package/server/routes/contentType/index.mjs +29 -19
- package/server/routes/contentType/utils/updateContents.js +29 -0
- package/server/routes/contentType/utils/updateCustomContentTable.js +56 -0
- package/server/routes/feedback/controllers/email.list.js +25 -0
- package/server/routes/feedback/controllers/feedback.js +49 -0
- package/server/routes/feedback/controllers/feedback.list.js +38 -0
- package/server/routes/feedback/controllers/news.subscriptions.js +44 -0
- package/server/routes/feedback/index.mjs +72 -0
- package/server/routes/logs/controllers/export.user.logs.js +78 -0
- package/server/routes/logs/controllers/user.logs.js +45 -0
- package/server/routes/logs/index.mjs +9 -0
- package/server/routes/menu/controllers/addMenu.js +38 -0
- package/server/routes/menu/controllers/delMenu.js +32 -0
- package/server/routes/menu/controllers/editMenu.js +42 -0
- package/server/routes/menu/controllers/getMenu.js +43 -0
- package/server/routes/menu/index.mjs +13 -0
- package/server/routes/migration/controllers/collectionToCustom.js +137 -0
- package/server/routes/migration/index.mjs +8 -0
- package/server/routes/tags/controllers/add.tags.js +25 -0
- package/server/routes/tags/controllers/del.tags.js +20 -0
- package/server/routes/tags/controllers/edit.tags.js +26 -0
- package/server/routes/tags/controllers/get.tags.js +16 -0
- package/server/routes/tags/index.mjs +14 -0
- package/server/templates/page/login.html +73 -5
- package/server/templates/select/core.user_mentioned.sql +2 -0
- package/src/index.ts +122 -0
- package/dist/assets/ArticlesPage-BveM4q3g.js +0 -11
- package/dist/assets/CollectionsPage-D5td-UBm.js +0 -1
- package/dist/assets/ContentBlock.vue_vue_type_script_setup_true_lang-BwF6D-yB.js +0 -30
- package/dist/assets/CreateCollectionPage-Cu0RW5ui.js +0 -76
- package/dist/assets/Dashboard-faSjwmB8.js +0 -11
- package/dist/assets/EditCollectionPage-K5oPPzCd.js +0 -1
- package/dist/assets/MediaPage-BoW3aWgN.js +0 -1
- package/dist/assets/PermissionsPage-DGy5fha2.js +0 -1
- package/dist/assets/SingletonsPage-C1X2xkQE.js +0 -1
- package/dist/assets/UniversalTable.vue_vue_type_script_setup_true_lang-DUqfWJcy.js +0 -6
- package/dist/assets/contentForm-DMVC4vho.js +0 -1
- package/dist/assets/database-BTxZQzYy.js +0 -6
- package/dist/assets/index-9GY17iSP.css +0 -1
- package/dist/assets/index-DYyZmLWO.js +0 -2138
- package/dist/assets/index-xsH4HHeE.js +0 -6
- package/dist/assets/save-C2B6th9J.js +0 -11
- package/dist/assets/settings-DbyDiH2g.js +0 -6
- package/dist/assets/vue.-sixQ7xP-DwXf3zRn.js +0 -1
- package/dist/assets/x-circle-C3q70RMH.js +0 -16
- package/server/routes/contentType/controllers/cms.type.delete.js +0 -22
- package/server/routes/contentType/controllers/cms.type.get.js +0 -22
- package/server/routes/contentType/controllers/cms.type.list.js +0 -25
- package/server/routes/contentType/controllers/cms.type.post.js +0 -22
- package/server/routes/contentType/controllers/cms.type.put.js +0 -24
- package/server/routes/contentType/utils/builderCache.js +0 -58
- package/server/routes/fileContent/data/deleteContent.js +0 -34
- package/server/routes/fileContent/data/deleteMedia.js +0 -28
- package/server/routes/fileContent/data/downloadMedia.js +0 -41
- package/server/routes/fileContent/data/getContent.js +0 -32
- package/server/routes/fileContent/data/insertContent.js +0 -37
- package/server/routes/fileContent/data/listMedia.js +0 -47
- package/server/routes/fileContent/data/metadataMedia.js +0 -38
- package/server/routes/fileContent/data/updateContent.js +0 -40
- package/server/routes/fileContent/data/uploadMedia.js +0 -49
- package/server/routes/fileContent/index.mjs +0 -54
- package/server/routes/fileContent/type/contentTypeList.js +0 -7
- package/server/routes/fileContent/type/createContentType.js +0 -31
- package/server/routes/fileContent/type/deleteContentType.js +0 -29
- package/server/routes/fileContent/type/getContentType.js +0 -15
- package/server/routes/fileContent/type/updateContentType.js +0 -40
- package/server/routes/fileContent/utils/astroBuilderCache.js +0 -47
- package/server/routes/fileContent/utils/contentDir.js +0 -12
- package/server/routes/fileContent/utils/contentTypeExists.js +0 -15
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
function xe(e,t){return function(){return e.apply(t,arguments)}}const{toString:Qe}=Object.prototype,{getPrototypeOf:le}=Object,{iterator:K,toStringTag:Ce}=Symbol,v=(e=>t=>{const n=Qe.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>v(t)===e),X=e=>t=>typeof t===e,{isArray:D}=Array,q=X("undefined");function Ze(e){return e!==null&&!q(e)&&e.constructor!==null&&!q(e.constructor)&&A(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ne=C("ArrayBuffer");function Ye(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ne(e.buffer),t}const et=X("string"),A=X("function"),Pe=X("number"),G=e=>e!==null&&typeof e=="object",tt=e=>e===!0||e===!1,z=e=>{if(v(e)!=="object")return!1;const t=le(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Ce in e)&&!(K in e)},nt=C("Date"),rt=C("File"),st=C("Blob"),ot=C("FileList"),it=e=>G(e)&&A(e.pipe),at=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||A(e.append)&&((t=v(e))==="formdata"||t==="object"&&A(e.toString)&&e.toString()==="[object FormData]"))},ct=C("URLSearchParams"),[lt,ut,ft,dt]=["ReadableStream","Request","Response","Headers"].map(C),pt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function H(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),i=o.length;let c;for(r=0;r<i;r++)c=o[r],t.call(null,e[c],c,e)}}function Fe(e,t){t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const U=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,_e=e=>!q(e)&&e!==U;function re(){const{caseless:e}=_e(this)&&this||{},t={},n=(r,s)=>{const o=e&&Fe(t,s)||s;z(t[o])&&z(r)?t[o]=re(t[o],r):z(r)?t[o]=re({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r<s;r++)arguments[r]&&H(arguments[r],n);return t}const ht=(e,t,n,{allOwnKeys:r}={})=>(H(t,(s,o)=>{n&&A(s)?e[o]=xe(s,n):e[o]=s},{allOwnKeys:r}),e),mt=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),yt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},bt=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&le(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},wt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Et=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!Pe(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Rt=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&le(Uint8Array)),St=(e,t)=>{const r=(e&&e[K]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},gt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ot=C("HTMLFormElement"),Tt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),pe=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),At=C("RegExp"),Ue=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};H(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},xt=e=>{Ue(e,(t,n)=>{if(A(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(A(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ct=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},Nt=()=>{},Pt=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Ft(e){return!!(e&&A(e.append)&&e[Ce]==="FormData"&&e[K])}const _t=e=>{const t=new Array(10),n=(r,s)=>{if(G(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return H(r,(i,c)=>{const f=n(i,s+1);!q(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},Ut=C("AsyncFunction"),Lt=e=>e&&(G(e)||A(e))&&A(e.then)&&A(e.catch),Le=((e,t)=>e?setImmediate:t?((n,r)=>(U.addEventListener("message",({source:s,data:o})=>{s===U&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),U.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",A(U.postMessage)),Bt=typeof queueMicrotask<"u"?queueMicrotask.bind(U):typeof process<"u"&&process.nextTick||Le,Dt=e=>e!=null&&A(e[K]),a={isArray:D,isArrayBuffer:Ne,isBuffer:Ze,isFormData:at,isArrayBufferView:Ye,isString:et,isNumber:Pe,isBoolean:tt,isObject:G,isPlainObject:z,isReadableStream:lt,isRequest:ut,isResponse:ft,isHeaders:dt,isUndefined:q,isDate:nt,isFile:rt,isBlob:st,isRegExp:At,isFunction:A,isStream:it,isURLSearchParams:ct,isTypedArray:Rt,isFileList:ot,forEach:H,merge:re,extend:ht,trim:pt,stripBOM:mt,inherits:yt,toFlatObject:bt,kindOf:v,kindOfTest:C,endsWith:wt,toArray:Et,forEachEntry:St,matchAll:gt,isHTMLForm:Ot,hasOwnProperty:pe,hasOwnProp:pe,reduceDescriptors:Ue,freezeMethods:xt,toObjectSet:Ct,toCamelCase:Tt,noop:Nt,toFiniteNumber:Pt,findKey:Fe,global:U,isContextDefined:_e,isSpecCompliantForm:Ft,toJSONObject:_t,isAsyncFn:Ut,isThenable:Lt,setImmediate:Le,asap:Bt,isIterable:Dt};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const Be=m.prototype,De={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{De[e]={value:e}});Object.defineProperties(m,De);Object.defineProperty(Be,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(Be);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const kt=null;function se(e){return a.isPlainObject(e)||a.isArray(e)}function ke(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function he(e,t,n){return e?e.concat(t).map(function(s,o){return s=ke(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function jt(e){return a.isArray(e)&&!e.some(se)}const qt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function Q(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||u,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function l(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function u(p,y,h){let w=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&jt(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(w=a.toArray(p)))return y=ke(y),w.forEach(function(g,P){!(a.isUndefined(g)||g===null)&&t.append(i===!0?he([y],P,o):i===null?y:y+"[]",l(g))}),!1}return se(p)?!0:(t.append(he(h,y,o),l(p)),!1)}const d=[],b=Object.assign(qt,{defaultVisitor:u,convertValue:l,isVisitable:se});function R(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(w,S){(!(a.isUndefined(w)||w===null)&&s.call(t,w,a.isString(S)?S.trim():S,y,b))===!0&&R(w,y?y.concat(S):[S])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return R(e),t}function me(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function ue(e,t){this._pairs=[],e&&Q(e,this,t)}const je=ue.prototype;je.append=function(t,n){this._pairs.push([t,n])};je.toString=function(t){const n=t?function(r){return t.call(this,r,me)}:me;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Ht(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function qe(e,t,n){if(!t)return e;const r=n&&n.encode||Ht;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new ue(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class ye{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const He={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},It=typeof URLSearchParams<"u"?URLSearchParams:ue,Mt=typeof FormData<"u"?FormData:null,zt=typeof Blob<"u"?Blob:null,$t={isBrowser:!0,classes:{URLSearchParams:It,FormData:Mt,Blob:zt},protocols:["http","https","file","blob","url","data"]},fe=typeof window<"u"&&typeof document<"u",oe=typeof navigator=="object"&&navigator||void 0,Jt=fe&&(!oe||["ReactNative","NativeScript","NS"].indexOf(oe.product)<0),Vt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Wt=fe&&window.location.href||"http://localhost",Kt=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:fe,hasStandardBrowserEnv:Jt,hasStandardBrowserWebWorkerEnv:Vt,navigator:oe,origin:Wt},Symbol.toStringTag,{value:"Module"})),O={...Kt,...$t};function vt(e,t){return Q(e,new O.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return O.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function Xt(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Gt(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r<s;r++)o=n[r],t[o]=e[o];return t}function Ie(e){function t(n,r,s,o){let i=n[o++];if(i==="__proto__")return!0;const c=Number.isFinite(+i),f=o>=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=Gt(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(Xt(r),s,n,0)}),n}return null}function Qt(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const I={transitional:He,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(Ie(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return vt(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return Q(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),Qt(t)):t}],transformResponse:[function(t){const n=this.transitional||I.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:O.classes.FormData,Blob:O.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{I.headers[e]={}});const Zt=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Yt=e=>{const t={};let n,r,s;return e&&e.split(`
|
|
2
|
-
`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&Zt[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},be=Symbol("internals");function j(e){return e&&String(e).trim().toLowerCase()}function $(e){return e===!1||e==null?e:a.isArray(e)?e.map($):String(e)}function en(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const tn=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ee(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function nn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function rn(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}let x=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,f,l){const u=j(f);if(!u)throw new Error("header name must be a non-empty string");const d=a.findKey(s,u);(!d||s[d]===void 0||l===!0||l===void 0&&s[d]!==!1)&&(s[d||f]=$(c))}const i=(c,f)=>a.forEach(c,(l,u)=>o(l,u,f));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!tn(t))i(Yt(t),n);else if(a.isObject(t)&&a.isIterable(t)){let c={},f,l;for(const u of t){if(!a.isArray(u))throw TypeError("Object iterator must return a key-value pair");c[l=u[0]]=(f=c[l])?a.isArray(f)?[...f,u[1]]:[f,u[1]]:u[1]}i(c,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=j(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return en(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=j(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||ee(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=j(i),i){const c=a.findKey(r,i);c&&(!n||ee(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||ee(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=$(s),delete n[o];return}const c=t?nn(o):String(o).trim();c!==o&&delete n[o],n[c]=$(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
|
|
3
|
-
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[be]=this[be]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=j(i);r[c]||(rn(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}};x.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(x.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(x);function te(e,t){const n=this||I,r=t||n,s=x.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Me(e){return!!(e&&e.__CANCEL__)}function k(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(k,m,{__CANCEL__:!0});function ze(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function sn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function on(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const l=Date.now(),u=r[o];i||(i=l),n[s]=f,r[s]=l;let d=o,b=0;for(;d!==s;)b+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),l-i<t)return;const R=u&&l-u;return R?Math.round(b*1e3/R):void 0}}function an(e,t){let n=0,r=1e3/t,s,o;const i=(l,u=Date.now())=>{n=u,s=null,o&&(clearTimeout(o),o=null),e.apply(null,l)};return[(...l)=>{const u=Date.now(),d=u-n;d>=r?i(l,u):(s=l,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const V=(e,t,n=3)=>{let r=0;const s=on(50,250);return an(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,l=s(f),u=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:l||void 0,estimated:l&&c&&u?(c-i)/l:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},we=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ee=e=>(...t)=>a.asap(()=>e(...t)),cn=O.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,O.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(O.origin),O.navigator&&/(msie|trident)/i.test(O.navigator.userAgent)):()=>!0,ln=O.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function un(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function fn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function $e(e,t,n){let r=!un(t);return e&&(r||n==!1)?fn(e,t):t}const Re=e=>e instanceof x?{...e}:e;function B(e,t){t=t||{};const n={};function r(l,u,d,b){return a.isPlainObject(l)&&a.isPlainObject(u)?a.merge.call({caseless:b},l,u):a.isPlainObject(u)?a.merge({},u):a.isArray(u)?u.slice():u}function s(l,u,d,b){if(a.isUndefined(u)){if(!a.isUndefined(l))return r(void 0,l,d,b)}else return r(l,u,d,b)}function o(l,u){if(!a.isUndefined(u))return r(void 0,u)}function i(l,u){if(a.isUndefined(u)){if(!a.isUndefined(l))return r(void 0,l)}else return r(void 0,u)}function c(l,u,d){if(d in t)return r(l,u);if(d in e)return r(void 0,l)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(l,u,d)=>s(Re(l),Re(u),d,!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(u){const d=f[u]||s,b=d(e[u],t[u],u);a.isUndefined(b)&&d!==c||(n[u]=b)}),n}const Je=e=>{const t=B({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=x.from(i),t.url=qe($e(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(O.hasStandardBrowserEnv||O.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[l,...u]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([l||"multipart/form-data",...u].join("; "))}}if(O.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&cn(t.url))){const l=s&&o&&ln.read(o);l&&i.set(s,l)}return t},dn=typeof XMLHttpRequest<"u",pn=dn&&function(e){return new Promise(function(n,r){const s=Je(e);let o=s.data;const i=x.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:l}=s,u,d,b,R,p;function y(){R&&R(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(u),s.signal&&s.signal.removeEventListener("abort",u)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function w(){if(!h)return;const g=x.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),T={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:g,config:e,request:h};ze(function(_){n(_),y()},function(_){r(_),y()},T),h=null}"onloadend"in h?h.onloadend=w:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(w)},h.onabort=function(){h&&(r(new m("Request aborted",m.ECONNABORTED,e,h)),h=null)},h.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let P=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const T=s.transitional||He;s.timeoutErrorMessage&&(P=s.timeoutErrorMessage),r(new m(P,T.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(P,T){h.setRequestHeader(T,P)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),l&&([b,p]=V(l,!0),h.addEventListener("progress",b)),f&&h.upload&&([d,R]=V(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",R)),(s.cancelToken||s.signal)&&(u=g=>{h&&(r(!g||g.type?new k(null,e,h):g),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(u),s.signal&&(s.signal.aborted?u():s.signal.addEventListener("abort",u)));const S=sn(s.url);if(S&&O.protocols.indexOf(S)===-1){r(new m("Unsupported protocol "+S+":",m.ERR_BAD_REQUEST,e));return}h.send(o||null)})},hn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(l){if(!s){s=!0,c();const u=l instanceof Error?l:this.reason;r.abort(u instanceof m?u:new k(u instanceof Error?u.message:u))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(l=>{l.unsubscribe?l.unsubscribe(o):l.removeEventListener("abort",o)}),e=null)};e.forEach(l=>l.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}},mn=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},yn=async function*(e,t){for await(const n of bn(e))yield*mn(n,t)},bn=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},Se=(e,t,n,r)=>{const s=yn(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:l,value:u}=await s.next();if(l){c(),f.close();return}let d=u.byteLength;if(n){let b=o+=d;n(b)}f.enqueue(new Uint8Array(u))}catch(l){throw c(l),l}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},Z=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Ve=Z&&typeof ReadableStream=="function",wn=Z&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),We=(e,...t)=>{try{return!!e(...t)}catch{return!1}},En=Ve&&We(()=>{let e=!1;const t=new Request(O.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),ge=64*1024,ie=Ve&&We(()=>a.isReadableStream(new Response("").body)),W={stream:ie&&(e=>e.body)};Z&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!W[t]&&(W[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Rn=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(O.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await wn(e)).byteLength},Sn=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Rn(t)},gn=Z&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:b}=Je(e);l=l?(l+"").toLowerCase():"text";let R=hn([s,o&&o.toAbortSignal()],i),p;const y=R&&R.unsubscribe&&(()=>{R.unsubscribe()});let h;try{if(f&&En&&n!=="get"&&n!=="head"&&(h=await Sn(u,r))!==0){let T=new Request(t,{method:"POST",body:r,duplex:"half"}),F;if(a.isFormData(r)&&(F=T.headers.get("content-type"))&&u.setContentType(F),T.body){const[_,M]=we(h,V(Ee(f)));r=Se(T.body,ge,_,M)}}a.isString(d)||(d=d?"include":"omit");const w="credentials"in Request.prototype;p=new Request(t,{...b,signal:R,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:w?d:void 0});let S=await fetch(p);const g=ie&&(l==="stream"||l==="response");if(ie&&(c||g&&y)){const T={};["status","statusText","headers"].forEach(de=>{T[de]=S[de]});const F=a.toFiniteNumber(S.headers.get("content-length")),[_,M]=c&&we(F,V(Ee(c),!0))||[];S=new Response(Se(S.body,ge,_,()=>{M&&M(),y&&y()}),T)}l=l||"text";let P=await W[a.findKey(W,l)||"text"](S,e);return!g&&y&&y(),await new Promise((T,F)=>{ze(T,F,{data:P,headers:x.from(S.headers),status:S.status,statusText:S.statusText,config:e,request:p})})}catch(w){throw y&&y(),w&&w.name==="TypeError"&&/Load failed|fetch/i.test(w.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,p),{cause:w.cause||w}):m.from(w,w&&w.code,e,p)}}),ae={http:kt,xhr:pn,fetch:gn};a.forEach(ae,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Oe=e=>`- ${e}`,On=e=>a.isFunction(e)||e===null||e===!1,Ke={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let i;if(r=n,!On(n)&&(r=ae[(i=String(n)).toLowerCase()],r===void 0))throw new m(`Unknown adapter '${i}'`);if(r)break;s[i||"#"+o]=r}if(!r){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
|
|
4
|
-
`+o.map(Oe).join(`
|
|
5
|
-
`):" "+Oe(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:ae};function ne(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new k(null,e)}function Te(e){return ne(e),e.headers=x.from(e.headers),e.data=te.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ke.getAdapter(e.adapter||I.adapter)(e).then(function(r){return ne(e),r.data=te.call(e,e.transformResponse,r),r.headers=x.from(r.headers),r},function(r){return Me(r)||(ne(e),r&&r.response&&(r.response.data=te.call(e,e.transformResponse,r.response),r.response.headers=x.from(r.response.headers))),Promise.reject(r)})}const ve="1.9.0",Y={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Y[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Ae={};Y.transitional=function(t,n,r){function s(o,i){return"[Axios v"+ve+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new m(s(i," has been removed"+(n?" in "+n:"")),m.ERR_DEPRECATED);return n&&!Ae[i]&&(Ae[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,c):!0}};Y.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Tn(e,t,n){if(typeof e!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],f=c===void 0||i(c,o,e);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}const J={assertOptions:Tn,validators:Y},N=J.validators;let L=class{constructor(t){this.defaults=t||{},this.interceptors={request:new ye,response:new ye}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=`
|
|
6
|
-
`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=B(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&J.assertOptions(r,{silentJSONParsing:N.transitional(N.boolean),forcedJSONParsing:N.transitional(N.boolean),clarifyTimeoutError:N.transitional(N.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:J.assertOptions(s,{encode:N.function,serialize:N.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),J.assertOptions(n,{baseUrl:N.spelling("baseURL"),withXsrfToken:N.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],p=>{delete o[p]}),n.headers=x.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(f=f&&y.synchronous,c.unshift(y.fulfilled,y.rejected))});const l=[];this.interceptors.response.forEach(function(y){l.push(y.fulfilled,y.rejected)});let u,d=0,b;if(!f){const p=[Te.bind(this),void 0];for(p.unshift.apply(p,c),p.push.apply(p,l),b=p.length,u=Promise.resolve(n);d<b;)u=u.then(p[d++],p[d++]);return u}b=c.length;let R=n;for(d=0;d<b;){const p=c[d++],y=c[d++];try{R=p(R)}catch(h){y.call(this,h);break}}try{u=Te.call(this,R)}catch(p){return Promise.reject(p)}for(d=0,b=l.length;d<b;)u=u.then(l[d++],l[d++]);return u}getUri(t){t=B(this.defaults,t);const n=$e(t.baseURL,t.url,t.allowAbsoluteUrls);return qe(n,t.params,t.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(t){L.prototype[t]=function(n,r){return this.request(B(r||{},{method:t,url:n,data:(r||{}).data}))}});a.forEach(["post","put","patch"],function(t){function n(r){return function(o,i,c){return this.request(B(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}L.prototype[t]=n(),L.prototype[t+"Form"]=n(!0)});let An=class Xe{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new k(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Xe(function(s){t=s}),cancel:t}}};function xn(e){return function(n){return e.apply(null,n)}}function Cn(e){return a.isObject(e)&&e.isAxiosError===!0}const ce={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ce).forEach(([e,t])=>{ce[t]=e});function Ge(e){const t=new L(e),n=xe(L.prototype.request,t);return a.extend(n,L.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Ge(B(e,s))},n}const E=Ge(I);E.Axios=L;E.CanceledError=k;E.CancelToken=An;E.isCancel=Me;E.VERSION=ve;E.toFormData=Q;E.AxiosError=m;E.Cancel=E.CanceledError;E.all=function(t){return Promise.all(t)};E.spread=xn;E.isAxiosError=Cn;E.mergeConfig=B;E.AxiosHeaders=x;E.formToJSON=e=>Ie(a.isHTMLForm(e)?new FormData(e):e);E.getAdapter=Ke.getAdapter;E.HttpStatusCode=ce;E.default=E;const{Axios:Fn,AxiosError:_n,CanceledError:Un,isCancel:Ln,CancelToken:Bn,VERSION:Dn,all:kn,Cancel:jn,isAxiosError:qn,spread:Hn,toFormData:In,AxiosHeaders:Mn,HttpStatusCode:zn,formToJSON:$n,getAdapter:Jn,mergeConfig:Vn}=E;export{E as a};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{c as o}from"./index-DYyZmLWO.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const a=o("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const n=o("SaveIcon",[["path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z",key:"1owoqh"}],["polyline",{points:"17 21 17 13 7 13 7 21",key:"1md35c"}],["polyline",{points:"7 3 7 8 15 8",key:"8nz8an"}]]);export{a as A,n as S};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as a}from"./index-DYyZmLWO.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const c=a("SettingsIcon",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);export{c as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as d,m as f,r as i,R as p,p as h,S as v,T as y,V as m,W as b}from"./index-DYyZmLWO.js";let g;function w(){return g}function _(e){return typeof e=="function"?e():f(e)}function s(e){if(e instanceof Promise||e instanceof Date||e instanceof RegExp)return e;const n=_(e);if(!e||!n)return n;if(Array.isArray(n))return n.map(t=>s(t));if(typeof n=="object"){const t={};for(const o in n)if(Object.prototype.hasOwnProperty.call(n,o)){if(o==="titleTemplate"||o[0]==="o"&&o[1]==="n"){t[o]=f(n[o]);continue}t[o]=s(n[o])}return t}return n}const H="usehead",c=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},u="__unhead_injection_handler__";function j(){return u in c?c[u]():d(H)||w()}function I(e,n={}){const t=n.head||j();if(t)return t.ssr?t.push(e,n):A(t,e,n)}function A(e,n,t={}){const o=i(!1),a=i({});p(()=>{a.value=o.value?{}:s(n)});const r=e.push(a.value,t);return h(a,l=>{r.patch(l)}),b()&&(v(()=>{r.dispose()}),y(()=>{o.value=!0}),m(()=>{o.value=!1})),r}export{I as u};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import{c}from"./index-DYyZmLWO.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const r=c("CheckCircleIcon",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const a=c("EyeIcon",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
12
|
-
* @license lucide-vue-next v0.344.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const y=c("XCircleIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);export{r as C,a as E,y as X};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { dataDelete, getMeta, pgClients } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
export default async function builderDelete({ pg = pgClients.client, user = {}, params = {} }, reply) {
|
|
4
|
-
if (!params.id) {
|
|
5
|
-
return reply.status(400).send('not enough params: id');
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const { pk } = await getMeta({ pg, table: 'site.content_types' });
|
|
9
|
-
|
|
10
|
-
if (!pk) {
|
|
11
|
-
return reply.status(404).send('table not found');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const res = await dataDelete({
|
|
15
|
-
pg,
|
|
16
|
-
table: 'site.content_types',
|
|
17
|
-
id: params.id,
|
|
18
|
-
uid: user?.uid
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
return { id: res.content_id, rows: [res] };
|
|
22
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { pgClients, getMeta } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
import cache from '../utils/builderCache.js';
|
|
4
|
-
|
|
5
|
-
export default async function builderGet({ pg = pgClients.client, params = {} }, reply) {
|
|
6
|
-
if (!params.id) {
|
|
7
|
-
return reply.status(400).send('not enough params: id');
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { pk } = await getMeta({ pg, table: 'site.content_types' });
|
|
11
|
-
|
|
12
|
-
if (cache[params.id]) {
|
|
13
|
-
return reply.status(200).send({ total: 1, rows: [cache[params.id]] });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { rows = [], rowCount: total = 0 } = pk ? await pg.query(
|
|
17
|
-
`select a.content_type_id as id, a.* FROM site.content_types a
|
|
18
|
-
where a.content_type_id=$1`, [params.id]
|
|
19
|
-
) : {};
|
|
20
|
-
|
|
21
|
-
return reply.status(200).send({ total, rows });
|
|
22
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { config, pgClients, getMeta } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
import builderCache from '../utils/builderCache.js';
|
|
4
|
-
|
|
5
|
-
export default async function builderList({ pg = pgClients.client, query = {} }, reply) {
|
|
6
|
-
|
|
7
|
-
const { pk } = await getMeta({ pg, table: 'site.content_types' });
|
|
8
|
-
|
|
9
|
-
if (config.cms?.provider === 'pg') {
|
|
10
|
-
const cache = builderCache();
|
|
11
|
-
return reply.status(200).send({ total: cache?.length, rows: cache });
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (!pk) {
|
|
15
|
-
return reply.status(404).send('table not found');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const q = `select a.content_type_id as id, a.name, a.title, a.description, a.table_name as table FROM site.content_types a
|
|
19
|
-
where ${query.content_type_id ? 'content_type_id=$1' : '1=1'}`
|
|
20
|
-
|
|
21
|
-
const { rows = [] } = pk ? await pg.query(q, [query.content_type_id].filter((el) => el)) : {};
|
|
22
|
-
rows.forEach(row => Object.assign(row, { provider: 'pg' }));
|
|
23
|
-
|
|
24
|
-
return reply.status(200).send({ total: rows.length, rows });
|
|
25
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { dataInsert, getMeta, pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
|
|
3
|
-
export default async function builderPost(req, reply) {
|
|
4
|
-
const { pg = pgClients.client, user = {}, body = {} } = req;
|
|
5
|
-
|
|
6
|
-
const { pk } = await getMeta({ pg, table: 'site.content_types' });
|
|
7
|
-
|
|
8
|
-
if (!pk) {
|
|
9
|
-
return reply.status(404).send('table not found');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const resData = await dataInsert({
|
|
13
|
-
pg,
|
|
14
|
-
table: "site.content_types",
|
|
15
|
-
data: body,
|
|
16
|
-
uid: user?.uid,
|
|
17
|
-
});
|
|
18
|
-
// console.log(resData);
|
|
19
|
-
const res = resData?.rows?.[0];
|
|
20
|
-
|
|
21
|
-
return { id: res?.content_type_id, rows: [res].filter(Boolean) };
|
|
22
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { dataUpdate, getMeta, pgClients } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
export default async function builderPut(req, reply) {
|
|
4
|
-
const { pg = pgClients.client, body = {}, params = {} } = req;
|
|
5
|
-
if (!params.id) {
|
|
6
|
-
return reply.status(400).send('not enough params: id');
|
|
7
|
-
}
|
|
8
|
-
const { pk } = await getMeta({ pg, table: 'site.content_types' });
|
|
9
|
-
|
|
10
|
-
if (!pk) {
|
|
11
|
-
return reply.status(404).send('table not found');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const resData = await dataUpdate({
|
|
15
|
-
pg,
|
|
16
|
-
table: 'site.content_types',
|
|
17
|
-
data: body,
|
|
18
|
-
id: params.id,
|
|
19
|
-
});
|
|
20
|
-
// console.log(resData)
|
|
21
|
-
const res = resData;
|
|
22
|
-
|
|
23
|
-
return { id: res.content_type_id, rows: [res].filter(Boolean) };
|
|
24
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import { subscribe } from '@parcel/watcher';
|
|
5
|
-
|
|
6
|
-
import { config, yml2json } from '@opengis/fastify-table/utils.js';
|
|
7
|
-
|
|
8
|
-
function parseYml(filepath) {
|
|
9
|
-
const name = path.basename(filepath, '.yml');
|
|
10
|
-
|
|
11
|
-
const yml = readFileSync(filepath, 'utf8');
|
|
12
|
-
const json = yml2json(yml);
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
[name]: {
|
|
16
|
-
...json,
|
|
17
|
-
name,
|
|
18
|
-
id: json?.type === 'single' ? name : undefined,
|
|
19
|
-
table: json?.type === 'single' ? undefined : name,
|
|
20
|
-
provider: json.provider || 'pg',
|
|
21
|
-
slug: json?.type === 'single' ? name : (json.slug || 'slug')
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const content = config.cms?.root && existsSync(config.cms?.root)
|
|
27
|
-
? readdirSync(config.cms?.root, { withFileTypes: true })
|
|
28
|
-
: [];
|
|
29
|
-
|
|
30
|
-
const files = content.filter(el => el.isFile() && path.extname(el.name) === '.yml');
|
|
31
|
-
|
|
32
|
-
const cache = files.reduce((acc, curr) => {
|
|
33
|
-
return { ...acc, ...parseYml(path.join(config.cms.root, curr.name)) };
|
|
34
|
-
}, {});
|
|
35
|
-
|
|
36
|
-
async function watchDirectory() {
|
|
37
|
-
await subscribe(config.cms.root, (err, events) => {
|
|
38
|
-
if (err) throw new Error(err.toString());
|
|
39
|
-
|
|
40
|
-
const { path: filepath, type } = events[0];
|
|
41
|
-
const name = path.basename(filepath, '.yml');
|
|
42
|
-
if (path.extname(filepath) === '.yml') {
|
|
43
|
-
if (type !== 'delete') { cache[name] = parseYml(filepath); }
|
|
44
|
-
if (type === 'delete') { delete cache[name]; }
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (config.cms?.root && config.local) {
|
|
50
|
-
watchDirectory();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export default function builderCache(name) {
|
|
54
|
-
if (name) {
|
|
55
|
-
return cache[name];
|
|
56
|
-
}
|
|
57
|
-
return Object.values(cache || {});
|
|
58
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, rmSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import contentDir from '../utils/contentDir.js';
|
|
5
|
-
import contentTypeExists from '../utils/contentTypeExists.js';
|
|
6
|
-
|
|
7
|
-
export default async function deleteContent(req, reply) {
|
|
8
|
-
const { params = {} } = req;
|
|
9
|
-
const { type, id } = params;
|
|
10
|
-
|
|
11
|
-
if (!type) {
|
|
12
|
-
return reply.status(400).send('not enough params: type');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (!id) {
|
|
16
|
-
return reply.status(400).send('not enough params: id');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (!contentTypeExists(type)) {
|
|
20
|
-
return reply.status(400).send('invalid params: type');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const filepath = [path.join(contentDir, type, `${id}.mdoc`), path.join(contentDir, type, `${id}.md`)]
|
|
25
|
-
.find(el => existsSync(el));
|
|
26
|
-
|
|
27
|
-
if (!filepath) {
|
|
28
|
-
return reply.status(404).send('file not found');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
rmSync(filepath, { recursive: true });
|
|
32
|
-
|
|
33
|
-
return reply.status(200).send({ id, type, filepath });
|
|
34
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, rmSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import { config, getFolder } from "@opengis/fastify-table/utils.js";
|
|
5
|
-
|
|
6
|
-
const rootDir = getFolder(config, 'local');
|
|
7
|
-
|
|
8
|
-
export default async function deleteMedia({
|
|
9
|
-
params = {},
|
|
10
|
-
}, reply) {
|
|
11
|
-
if (!params['*']) {
|
|
12
|
-
return reply.status(400).send('not enough params');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (typeof params['*'] !== 'string' || params['*'].includes('..')) {
|
|
16
|
-
return reply.status(403).send('invalid params');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const filepath = path.join(rootDir, params['*']);
|
|
20
|
-
|
|
21
|
-
if (!existsSync(filepath)) {
|
|
22
|
-
return reply.status(404).send('file not found');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
rmSync(filepath, { recursive: true });
|
|
26
|
-
|
|
27
|
-
return { filepath: params['*'] };
|
|
28
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
|
|
3
|
-
import { config, getFolder } from "@opengis/fastify-table/utils.js";
|
|
4
|
-
import { downloadFile, isFileExists, getMimeType } from '@opengis/fastify-file/utils.js';
|
|
5
|
-
|
|
6
|
-
const rootDir = getFolder(config, 'local');
|
|
7
|
-
|
|
8
|
-
export default async function downloadMedia({
|
|
9
|
-
params = {}, query = {},
|
|
10
|
-
}, reply) {
|
|
11
|
-
if (!params['*']) {
|
|
12
|
-
return reply.status(400).send('not enough params: id');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (typeof params['*'] !== 'string' || params['*'].includes('..')) {
|
|
16
|
-
return reply.status(403).send('invalid params');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const filepath = path.join(rootDir, params['*']);
|
|
20
|
-
|
|
21
|
-
const exists = await isFileExists(filepath);
|
|
22
|
-
|
|
23
|
-
if (!exists) {
|
|
24
|
-
return reply.status(404).send('file not found');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const buffer = await downloadFile(filepath, { buffer: true });
|
|
28
|
-
const mime = getMimeType(filepath);
|
|
29
|
-
|
|
30
|
-
// skip xml load for preview
|
|
31
|
-
if (query.preview && path.extname(filepath) !== '.xml') {
|
|
32
|
-
return reply.headers({ 'Content-Type': mime }).send(buffer);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return reply
|
|
36
|
-
.headers({
|
|
37
|
-
'Content-Type': mime,
|
|
38
|
-
'Content-Disposition': `attachment; filename=${path.basename(filepath)}`,
|
|
39
|
-
})
|
|
40
|
-
.send(buffer);
|
|
41
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { config } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
import contentTypeExists from '../utils/contentTypeExists.js';
|
|
4
|
-
import { contentTypes } from '../utils/astroBuilderCache.js';
|
|
5
|
-
|
|
6
|
-
export default async function getContent(req, reply) {
|
|
7
|
-
const { params = {} } = req;
|
|
8
|
-
const { type, id } = params;
|
|
9
|
-
|
|
10
|
-
if (!type) {
|
|
11
|
-
return reply.status(400).send('not enough params: type');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const metadata = contentTypeExists(type, 'metadata.json');
|
|
15
|
-
|
|
16
|
-
if (!metadata) {
|
|
17
|
-
return reply.status(400).send('invalid params: type');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (!id) {
|
|
21
|
-
const rows = Object.values(contentTypes || {});
|
|
22
|
-
return { metadata, rows };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const data = contentTypeExists(type, id);
|
|
26
|
-
|
|
27
|
-
if (!data) {
|
|
28
|
-
return reply.status(404).send('file not found');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return { metadata, data };
|
|
32
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { writeFileSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import contentDir from '../utils/contentDir.js';
|
|
5
|
-
import contentTypeExists from '../utils/contentTypeExists.js';
|
|
6
|
-
|
|
7
|
-
const extension = 'mdoc'; // extract from collection?
|
|
8
|
-
|
|
9
|
-
export default async function insertContent(req, reply) {
|
|
10
|
-
const { params = {}, body = {} } = req;
|
|
11
|
-
const { slug, content } = body;
|
|
12
|
-
|
|
13
|
-
if (!params.type) {
|
|
14
|
-
return reply.status(400).send('not enough params: type');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (!slug) {
|
|
18
|
-
return reply.status(400).send('not enough body params: slug');
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (!content) {
|
|
22
|
-
return reply.status(400).send('not enough body params: content');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (typeof content !== 'string') {
|
|
26
|
-
return reply.status(400).send('invalid params: content');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (!contentTypeExists(params.type)) {
|
|
30
|
-
return reply.status(400).send('invalid params: type');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const filepath = path.join(contentDir, params.type, `${slug}.${extension}`);
|
|
34
|
-
writeFileSync(filepath, content, { recursive: true });
|
|
35
|
-
|
|
36
|
-
return reply.status(200).send({ id: slug, type: params.type, filepath });
|
|
37
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
|
-
import { readdir, stat } from 'node:fs/promises';
|
|
4
|
-
|
|
5
|
-
import { config, getFolder } from '@opengis/fastify-table/utils.js';
|
|
6
|
-
|
|
7
|
-
const rootDir = getFolder(config, 'local');
|
|
8
|
-
mkdirSync(path.join(rootDir, 'media'), { recursive: true });
|
|
9
|
-
|
|
10
|
-
export default async function listMedia(req, reply) {
|
|
11
|
-
const { query = {} } = req;
|
|
12
|
-
const { subdir = '' } = query;
|
|
13
|
-
|
|
14
|
-
if (typeof subdir !== 'string' || subdir.includes('..')) {
|
|
15
|
-
return reply.status(403).send('invalid params: subdir');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const relpath = path.join('/media', subdir).replace(/\\/g, '/');
|
|
19
|
-
const dirpath = path.join(rootDir, relpath).replace(/\\/g, '/');
|
|
20
|
-
|
|
21
|
-
if (!existsSync(dirpath)) {
|
|
22
|
-
return { data: [], relpath, msg: 'directory not exists' };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const isDirectory = (await stat(dirpath)).isDirectory();
|
|
26
|
-
|
|
27
|
-
const items = isDirectory ? await readdir(dirpath, { withFileTypes: true }) : [];
|
|
28
|
-
|
|
29
|
-
const content = items.map(el => ({ type: el.isDirectory() ? 'dir' : 'file', name: el.name }));
|
|
30
|
-
|
|
31
|
-
await Promise.all(content.filter(el => el.type === 'dir').map(async (item) => {
|
|
32
|
-
const items = await readdir(path.join(dirpath, item.name));
|
|
33
|
-
Object.assign(item, { count: items.length, exists: true });
|
|
34
|
-
}));
|
|
35
|
-
|
|
36
|
-
content.filter(el => el.type === 'file').forEach(item => {
|
|
37
|
-
item.exists = true;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const result = { relpath, data: content };
|
|
41
|
-
|
|
42
|
-
if (config.debug) {
|
|
43
|
-
Object.assign(result, { rootDir });
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return result;
|
|
47
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import { config, getFolder } from "@opengis/fastify-table/utils.js";
|
|
5
|
-
import { stat } from 'node:fs/promises';
|
|
6
|
-
|
|
7
|
-
import downloadMedia from './downloadMedia.js';
|
|
8
|
-
|
|
9
|
-
const rootDir = getFolder(config, 'local');
|
|
10
|
-
|
|
11
|
-
export default async function metadataMedia(req, reply) {
|
|
12
|
-
if (!req.query?.metadata) return downloadMedia(req, reply);
|
|
13
|
-
|
|
14
|
-
const { params = {}, } = req;
|
|
15
|
-
|
|
16
|
-
if (!params['*']) {
|
|
17
|
-
return reply.status(400).send('not enough params: id');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (typeof params['*'] !== 'string' || params['*'].includes('..')) {
|
|
21
|
-
return reply.status(403).send('invalid params: subdir');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const filepath = path.join(rootDir, params['*']);
|
|
25
|
-
|
|
26
|
-
const stats = existsSync(filepath) ? await stat(filepath) : null;
|
|
27
|
-
|
|
28
|
-
if (!stats) {
|
|
29
|
-
return reply.status(404).send('file not found');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return reply.status(200).send({
|
|
33
|
-
...stats,
|
|
34
|
-
url: `${req.routeOptions.url}/${params['*']}?download=1`.replace(/\*/g, '').replace(/\/\//g, ''),
|
|
35
|
-
filepath: `${req.routeOptions.url}/${params['*']}`.replace(/\*/g, '').replace(/\/\//g, ''),
|
|
36
|
-
exists: true,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { existsSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
-
|
|
4
|
-
import contentDir from '../utils/contentDir.js';
|
|
5
|
-
import contentTypeExists from '../utils/contentTypeExists.js';
|
|
6
|
-
|
|
7
|
-
export default async function updateContent(req, reply) {
|
|
8
|
-
const { params = {}, body = {} } = req;
|
|
9
|
-
const { type, id } = params;
|
|
10
|
-
const { content } = body;
|
|
11
|
-
|
|
12
|
-
if (!type) {
|
|
13
|
-
return reply.status(400).send('not enough params: type');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (!id) {
|
|
17
|
-
return reply.status(400).send('not enough params: id');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (!content) {
|
|
21
|
-
return reply.status(400).send('not enough body params: content');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (!contentTypeExists(type)) {
|
|
25
|
-
return reply.status(400).send('invalid params: type');
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const filepath = [path.join(contentDir, type, `${id}.mdoc`), path.join(contentDir, type, `${id}.md`)]
|
|
30
|
-
.find(el => existsSync(el));
|
|
31
|
-
|
|
32
|
-
if (!filepath) {
|
|
33
|
-
return reply.status(404).send('file not found');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
rmSync(filepath, { recursive: true });
|
|
37
|
-
writeFileSync(filepath, content, { recursive: true });
|
|
38
|
-
|
|
39
|
-
return reply.status(200).send({ id, type, filepath });
|
|
40
|
-
}
|