diff --git a/.github/workflows/dispatch-ci.yml b/.github/workflows/dispatch-ci.yml index 3a331652..4d2dd160 100644 --- a/.github/workflows/dispatch-ci.yml +++ b/.github/workflows/dispatch-ci.yml @@ -1,9 +1,11 @@ name: Dispatch CI on: - # At 8:40 PM UTC, only on Saturday and Sunday + # At 12:00 AM UTC, only on Friday and Saturday schedule: - - cron: '40 20 * * 6,0' + - cron: '0 0 * * 5,6' + +permissions: {} jobs: dispatch-ci: @@ -11,6 +13,9 @@ jobs: # Only run cron on the tractorcow-farm account if: (github.event_name == 'schedule' && github.repository_owner == 'tractorcow-farm') || (github.event_name != 'schedule') runs-on: ubuntu-latest + permissions: + contents: read + actions: write steps: - name: Dispatch CI uses: silverstripe/gha-dispatch-ci@v1 diff --git a/.github/workflows/keepalive.yml b/.github/workflows/keepalive.yml index 86f09119..0b18b2af 100644 --- a/.github/workflows/keepalive.yml +++ b/.github/workflows/keepalive.yml @@ -1,17 +1,21 @@ name: Keepalive on: - # At 12:05 AM UTC, on day 20 of the month + # At 9:45 PM UTC, on day 6 of the month schedule: - - cron: '5 0 20 * *' + - cron: '45 21 6 * *' workflow_dispatch: +permissions: {} + jobs: keepalive: name: Keepalive # Only run cron on the tractorcow-farm account if: (github.event_name == 'schedule' && github.repository_owner == 'tractorcow-farm') || (github.event_name != 'schedule') runs-on: ubuntu-latest + permissions: + actions: write steps: - name: Keepalive uses: silverstripe/gha-keepalive@v1 diff --git a/.github/workflows/merge-up.yml b/.github/workflows/merge-up.yml index 86973a33..73f4f162 100644 --- a/.github/workflows/merge-up.yml +++ b/.github/workflows/merge-up.yml @@ -1,17 +1,22 @@ name: Merge-up on: - # At 12:05 AM UTC, only on Tuesday + # At 12:00 AM UTC, only on Tuesday schedule: - - cron: '5 0 * * 2' + - cron: '0 0 * * 2' workflow_dispatch: +permissions: {} + jobs: merge-up: name: Merge-up # Only run cron on the tractorcow-farm account if: (github.event_name == 'schedule' && github.repository_owner == 'tractorcow-farm') || (github.event_name != 'schedule') runs-on: ubuntu-latest + permissions: + contents: write + actions: write steps: - name: Merge-up uses: silverstripe/gha-merge-up@v1 diff --git a/.github/workflows/update-js.yml b/.github/workflows/update-js.yml index f225311f..0c323f3b 100644 --- a/.github/workflows/update-js.yml +++ b/.github/workflows/update-js.yml @@ -4,7 +4,9 @@ on: workflow_dispatch: # Run on a schedule of once per quarter schedule: - - cron: '40 20 1 */3 *' + - cron: '20 4 1 */3 *' + +permissions: {} jobs: update-js: @@ -12,6 +14,10 @@ jobs: # Only run cron on the tractorcow-farm account if: (github.event_name == 'schedule' && github.repository_owner == 'tractorcow-farm') || (github.event_name != 'schedule') runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + actions: write steps: - name: Update JS uses: silverstripe/gha-update-js@v1 diff --git a/client/dist/js/fluent.js b/client/dist/js/fluent.js index 605301fb..1f28eb8c 100644 --- a/client/dist/js/fluent.js +++ b/client/dist/js/fluent.js @@ -1 +1 @@ -!function(){"use strict";var e={872:function(e){e.exports=NodeUrl},685:function(e,t,r){r.r(t),r.d(t,{default:function(){return S}});var n={};r.r(n),r.d(n,{exclude:function(){return x},extract:function(){return w},parse:function(){return j},parseUrl:function(){return k},pick:function(){return O},stringify:function(){return v},stringifyUrl:function(){return F}});const o="%[a-f0-9]{2}",c=new RegExp("("+o+")|([^%]+?)","gi"),s=new RegExp("("+o+")+","gi");function i(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(1===e.length)return e;t=t||1;const r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],i(r),i(n))}function a(e){try{return decodeURIComponent(e)}catch{let t=e.match(c)||[];for(let r=1;r`%${e.charCodeAt(0).toString(16).toUpperCase()}`)):encodeURIComponent(e):e}function y(e,t){return t.decode?l(e):e}function g(e){return Array.isArray(e)?e.sort():"object"==typeof e?g(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function h(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function b(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function w(e){const t=(e=h(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function j(e,t){d((t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t}).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,n)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===n[e]&&(n[e]={}),n[e][t[1]]=r):n[e]=r};case"bracket":return(e,r,n)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==n[e]?n[e]=[...n[e],r]:n[e]=[r]:n[e]=r};case"colon-list-separator":return(e,r,n)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==n[e]?n[e]=[...n[e],r]:n[e]=[r]:n[e]=r};case"comma":case"separator":return(t,r,n)=>{const o="string"==typeof r&&r.includes(e.arrayFormatSeparator),c="string"==typeof r&&!o&&y(r,e).includes(e.arrayFormatSeparator);r=c?y(r,e):r;const s=o||c?r.split(e.arrayFormatSeparator).map((t=>y(t,e))):null===r?r:y(r,e);n[t]=s};case"bracket-separator":return(t,r,n)=>{const o=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!o)return void(n[t]=r?y(r,e):r);const c=null===r?[]:r.split(e.arrayFormatSeparator).map((t=>y(t,e)));void 0!==n[t]?n[t]=[...n[t],...c]:n[t]=c};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[...[r[e]].flat(),t]:r[e]=t}}}(t),n=Object.create(null);if("string"!=typeof e)return n;if(!(e=e.trim().replace(/^[?#&]/,"")))return n;for(const o of e.split("&")){if(""===o)continue;const e=t.decode?o.replace(/\+/g," "):o;let[c,s]=u(e,"=");void 0===c&&(c=e),s=void 0===s?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?s:y(s,t),r(y(c,t),s,n)}for(const[e,r]of Object.entries(n))if("object"==typeof r&&null!==r)for(const[e,n]of Object.entries(r))r[e]=b(n,t);else n[e]=b(r,t);return!1===t.sort?n:(!0===t.sort?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce(((e,t)=>{const r=n[t];return Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?e[t]=g(r):e[t]=r,e}),Object.create(null))}function v(e,t){if(!e)return"";d((t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t}).arrayFormatSeparator);const r=r=>t.skipNull&&null==e[r]||t.skipEmptyString&&""===e[r],n=function(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{const o=r.length;return void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[m(t,e),"[",o,"]"].join("")]:[...r,[m(t,e),"[",m(o,e),"]=",m(n,e)].join("")]};case"bracket":return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[m(t,e),"[]"].join("")]:[...r,[m(t,e),"[]=",m(n,e)].join("")];case"colon-list-separator":return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,[m(t,e),":list="].join("")]:[...r,[m(t,e),":list=",m(n,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return r=>(n,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?n:(o=null===o?"":o,0===n.length?[[m(r,e),t,m(o,e)].join("")]:[[n,m(o,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?r:null===n?[...r,m(t,e)]:[...r,[m(t,e),"=",m(n,e)].join("")]}}(t),o={};for(const[t,n]of Object.entries(e))r(t)||(o[t]=n);const c=Object.keys(o);return!1!==t.sort&&c.sort(t.sort),c.map((r=>{const o=e[r];return void 0===o?"":null===o?m(r,t):Array.isArray(o)?0===o.length&&"bracket-separator"===t.arrayFormat?m(r,t)+"[]":o.reduce(n(r),[]).join("&"):m(r,t)+"="+m(o,t)})).filter((e=>e.length>0)).join("&")}function k(e,t){t={decode:!0,...t};let[r,n]=u(e,"#");return void 0===r&&(r=e),{url:r?.split("?")?.[0]??"",query:j(w(e),t),...t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:y(n,t)}:{}}}function F(e,t){t={encode:!0,strict:!0,[p]:!0,...t};const r=h(e.url).split("?")[0]||"";let n=v({...j(w(e.url),{sort:!1}),...e.query},t);n&&(n=`?${n}`);let o=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);if(e.fragmentIdentifier){const n=new URL(r);n.hash=e.fragmentIdentifier,o=t[p]?n.hash:`#${e.fragmentIdentifier}`}return`${r}${n}${o}`}function O(e,t,r){r={parseFragmentIdentifier:!0,[p]:!1,...r};const{url:n,query:o,fragmentIdentifier:c}=k(e,r);return F({url:n,query:f(o,t),fragmentIdentifier:c},r)}function x(e,t,r){return O(e,Array.isArray(t)?e=>!t.includes(e):(e,r)=>!t(e,r),r)}var S=n}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var c=t[n]={exports:{}};return e[n](c,c.exports,r),c.exports}r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e=n(r(872)),t=n(r(685));function n(e){return e&&e.__esModule?e:{default:e}}window.jQuery.entwine("ss",(r=>{const n=()=>{if(window&&window.ss&&window.ss.config&&window.ss.config.sections){const e=window.ss.config.sections.find((e=>"TractorCow\\Fluent\\Control\\LocaleAdmin"===e.name));if(e)return e.fluent||{}}return{}};r("input[data-hides]").entwine({onmatch(){this._super();const e=this.data("hides"),t=r(`[name='${e}']`).closest(".field");this.is(":checked")?t.hide():t.show()},onunmatch(){this._super()},onchange(){const e=this.data("hides"),t=r(`[name='${e}']`).closest(".field");this.is(":checked")?t.slideUp():t.slideDown()}}),r(".cms > .cms-container > .cms-menu > .cms-panel-content").entwine({onmatch(){this._super();const e=n();if(void 0===e.locales||0===e.locales.length)return;const t=r("
\n \n
");e.locales.forEach((n=>{const o=r("