diff --git a/.gitignore b/.gitignore index cdfa65f..20c6d97 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,5 @@ node_modules *.local /config/secrets/master.key + +.overmind.sock \ No newline at end of file diff --git a/.rubocop.yml b/.rubocop.yml index 671ded0..3979bc4 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -4,7 +4,6 @@ require: - rubocop-rspec AllCops: - Exclude: - "bin/**/*" - "node_modules/**/*" @@ -13,14 +12,13 @@ AllCops: - ".git/**/*" NewCops: enable -Rails/InverseOf: - Enabled: true - +Rails/HasAndBelongsToMany: + Enabled: false Style/Documentation: Enabled: false Style/ExponentialNotation: Enabled: true -Style/HashAsLastArrayItem: +Style/HashAsLastArrayItem: Enabled: false Style/HashEachMethods: Enabled: true @@ -31,7 +29,8 @@ Style/HashTransformValues: Style/FrozenStringLiteralComment: Enabled: false Style/StringLiterals: - Enabled: false + Enabled: true + EnforcedStyle: double_quotes Style/NumericLiterals: Enabled: false Style/ClassAndModuleChildren: @@ -39,8 +38,7 @@ Style/ClassAndModuleChildren: Style/EmptyMethod: Enabled: false Style/GuardClause: - # Enabled: false - Enabled: true + Enabled: false Style/SlicingWithRange: Enabled: true Style/RedundantRegexpCharacterClass: @@ -72,19 +70,13 @@ Lint/MissingSuper: Layout/EmptyLinesAroundClassBody: Enabled: false Layout/FirstHashElementIndentation: - # Enabled: false - Enabled: true - EnforcedStyle: consistent -Layout/EmptyLinesAroundAttributeAccessor: - # Enabled: true Enabled: false - AllowAliasSyntax: true +Layout/EmptyLinesAroundAttributeAccessor: + Enabled: true Layout/MultilineBlockLayout: Enabled: false - # Enabled: true Layout/BlockEndNewline: Enabled: false - # Enabled: true Layout/MultilineMethodCallIndentation: Enabled: true EnforcedStyle: indented @@ -95,19 +87,19 @@ Layout/EmptyLinesAroundBlockBody: Layout/LineLength: Enabled: false Layout/ExtraSpacing: - # Enabled: false - Enabled: true - AllowForAlignment: true + Enabled: false Layout/TrailingWhitespace: Enabled: true Layout/SpaceAroundMethodCallOperator: Enabled: true Layout/SpaceInsideHashLiteralBraces: Enabled: true +Layout/SpaceInsideBlockBraces: + Enabled: true Layout/CommentIndentation: Enabled: false Layout/HashAlignment: - Enabled: true + Enabled: false Lint/DeprecatedOpenSSLConstant: Enabled: true Lint/MixedRegexpCaptureTypes: @@ -246,7 +238,7 @@ Layout/DotPosition: StyleGuide: https://relaxed.ruby.style/#layoutdotposition Layout/SpaceBeforeBlockBraces: - EnforcedStyle: space + Enabled: false StyleGuide: https://relaxed.ruby.style/#layoutspacebeforeblockbraces Layout/SpaceInsideParens: @@ -254,13 +246,15 @@ Layout/SpaceInsideParens: StyleGuide: https://relaxed.ruby.style/#layoutspaceinsideparens Layout/FirstArrayElementIndentation: - EnforcedStyle: consistent + Enabled: false Layout/MultilineOperationIndentation: - EnforcedStyle: "indented" + Enabled: true + EnforcedStyle: indented -Layout/ArgumentAlignment: - EnforcedStyle: with_fixed_indentation +Layout/AssignmentIndentation: + Enabled: true + IndentationWidth: 2 Lint/AmbiguousRegexpLiteral: Enabled: false @@ -270,6 +264,21 @@ Lint/AssignmentInCondition: Enabled: false StyleGuide: https://relaxed.ruby.style/#lintassignmentincondition +Layout/ArgumentAlignment: + Enabled: false + +Layout/IndentationWidth: + Width: 2 + +Layout/IndentationConsistency: + EnforcedStyle: normal + +Layout/CaseIndentation: + Enabled: true + EnforcedStyle: end + IndentOneStep: false + IndentationWidth: 2 + Naming/AccessorMethodName: Enabled: false @@ -281,3 +290,9 @@ Style/HashSyntax: Metrics: Enabled: false + +RSpec/NestedGroups: + Enabled: false + +Lint/DuplicateBranch: + Enabled: false diff --git a/.yarn/releases/yarn-4.3.0.cjs b/.yarn/releases/yarn-4.3.0.cjs index e3ce79d..272e345 100755 --- a/.yarn/releases/yarn-4.3.0.cjs +++ b/.yarn/releases/yarn-4.3.0.cjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* eslint-disable */ + //prettier-ignore (()=>{var $3e=Object.create;var NF=Object.defineProperty;var e_e=Object.getOwnPropertyDescriptor;var t_e=Object.getOwnPropertyNames;var r_e=Object.getPrototypeOf,n_e=Object.prototype.hasOwnProperty;var ve=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),zt=(t,e)=>{for(var r in e)NF(t,r,{get:e[r],enumerable:!0})},i_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of t_e(e))!n_e.call(t,a)&&a!==r&&NF(t,a,{get:()=>e[a],enumerable:!(o=e_e(e,a))||o.enumerable});return t};var Ze=(t,e,r)=>(r=t!=null?$3e(r_e(t)):{},i_e(e||!t||!t.__esModule?NF(r,"default",{value:t,enumerable:!0}):r,t));var vi={};zt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>IP,S_IFLNK:()=>BP,S_IFMT:()=>Mu,S_IFREG:()=>_w});var Mu,IP,_w,BP,x7,k7=Et(()=>{Mu=61440,IP=16384,_w=32768,BP=40960,x7=456789e3});var nr={};zt(nr,{EBADF:()=>wo,EBUSY:()=>s_e,EEXIST:()=>A_e,EINVAL:()=>a_e,EISDIR:()=>u_e,ENOENT:()=>l_e,ENOSYS:()=>o_e,ENOTDIR:()=>c_e,ENOTEMPTY:()=>p_e,EOPNOTSUPP:()=>h_e,EROFS:()=>f_e,ERR_DIR_CLOSED:()=>OF});function Ll(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function s_e(t){return Ll("EBUSY",t)}function o_e(t,e){return Ll("ENOSYS",`${t}, ${e}`)}function a_e(t){return Ll("EINVAL",`invalid argument, ${t}`)}function wo(t){return Ll("EBADF",`bad file descriptor, ${t}`)}function l_e(t){return Ll("ENOENT",`no such file or directory, ${t}`)}function c_e(t){return Ll("ENOTDIR",`not a directory, ${t}`)}function u_e(t){return Ll("EISDIR",`illegal operation on a directory, ${t}`)}function A_e(t){return Ll("EEXIST",`file already exists, ${t}`)}function f_e(t){return Ll("EROFS",`read-only filesystem, ${t}`)}function p_e(t){return Ll("ENOTEMPTY",`directory not empty, ${t}`)}function h_e(t){return Ll("EOPNOTSUPP",`operation not supported, ${t}`)}function OF(){return Ll("ERR_DIR_CLOSED","Directory handle was closed")}var vP=Et(()=>{});var Ea={};zt(Ea,{BigIntStatsEntry:()=>ey,DEFAULT_MODE:()=>_F,DirEntry:()=>MF,StatEntry:()=>$m,areStatsEqual:()=>HF,clearStats:()=>PP,convertToBigIntStats:()=>d_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>g_e});function Q7(){return new $m}function g_e(){return PP(Q7())}function PP(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):UF.types.isDate(r)&&(t[e]=new Date(0))}return t}function d_e(t){let e=new ey;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):UF.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function HF(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var UF,_F,MF,$m,ey,qF=Et(()=>{UF=Ze(ve("util")),_F=33188,MF=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},$m=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_F;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ey=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_F);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function w_e(t){let e,r;if(e=t.match(E_e))t=e[1];else if(r=t.match(C_e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function I_e(t){t=t.replace(/\\/g,"/");let e,r;return(e=t.match(m_e))?t=`/${e[1]}`:(r=t.match(y_e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function DP(t,e){return t===ue?F7(e):GF(e)}var Hw,Bt,dr,ue,z,R7,m_e,y_e,E_e,C_e,GF,F7,Ca=Et(()=>{Hw=Ze(ve("path")),Bt={root:"/",dot:".",parent:".."},dr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},ue=Object.create(Hw.default),z=Object.create(Hw.default.posix);ue.cwd=()=>process.cwd();z.cwd=process.platform==="win32"?()=>GF(process.cwd()):process.cwd;process.platform==="win32"&&(z.resolve=(...t)=>t.length>0&&z.isAbsolute(t[0])?Hw.default.posix.resolve(...t):Hw.default.posix.resolve(z.cwd(),...t));R7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>R7(ue,t,e);z.contains=(t,e)=>R7(z,t,e);m_e=/^([a-zA-Z]:.*)$/,y_e=/^\/\/(\.\/)?(.*)$/,E_e=/^\/([a-zA-Z]:.*)$/,C_e=/^\/unc\/(\.dot\/)?(.*)$/;GF=process.platform==="win32"?I_e:t=>t,F7=process.platform==="win32"?w_e:t=>t;ue.fromPortablePath=F7;ue.toPortablePath=GF});async function SP(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Mg,mtime:Mg}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await jF(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function jF(t,e,r,o,a,n,u){let A=u.didParentExist?await L7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Mg,mtime:Mg}:p,I;switch(!0){case p.isDirectory():I=await v_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await S_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await b_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function L7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function v_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!=="EEXIST")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await jF(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async x=>{await jF(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function P_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:"sha1"}),I=420,v=A.mode&511,x=`${E}${v!==I?v.toString(8):""}`,C=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),F;(ce=>(ce[ce.Lock=0]="Lock",ce[ce.Rename=1]="Rename"))(F||={});let N=1,U=await L7(r,C);if(a){let le=U&&a.dev===U.dev&&a.ino===U.ino,ae=U?.mtimeMs!==B_e;if(le&&ae&&h.autoRepair&&(N=0,U=null),!le)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let V=!U&&N===1?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,te=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(C,async()=>{let le=await n.readFilePromise(u);await r.writeFilePromise(C,le)}),N===1&&V)){let le=await n.readFilePromise(u);await r.writeFilePromise(V,le);try{await r.linkPromise(V,C)}catch(ae){if(ae.code==="EEXIST")te=!0,await r.unlinkPromise(V);else throw ae}}a||await r.linkPromise(C,o)}),e.push(async()=>{U||(await r.lutimesPromise(C,Mg,Mg),v!==I&&await r.chmodPromise(C,v)),V&&!te&&await r.unlinkPromise(V)}),!1}async function D_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type==="HardlinkFromIndex"?P_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):D_e(t,e,r,o,a,n,u,A,p)}async function b_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DP(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Mg,B_e,YF=Et(()=>{Ca();Mg=new Date(456789e3*1e3),B_e=Mg.getTime()});function bP(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new qw(e,a,o)}var qw,N7=Et(()=>{vP();qw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw OF()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var M7,ty,U7=Et(()=>{M7=ve("events");qF();ty=class extends M7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ty(r,o,a);return n.start(),n}start(){O7(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){O7(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ey:new $m;return PP(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;HF(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ry(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=xP.get(t);typeof p>"u"&&xP.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=ty.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Ug(t,e,r){let o=xP.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function _g(t){let e=xP.get(t);if(!(typeof e>"u"))for(let r of e.keys())Ug(t,r)}var xP,WF=Et(()=>{U7();xP=new WeakMap});function x_e(t){let e=t.match(/\r?\n/g);if(e===null)return H7.EOL;let r=e.filter(a=>a===`\r `).length,o=e.length-r;return r>o?`\r diff --git a/Gemfile b/Gemfile index b2b0844..36ddfa5 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ ruby "3.3.4" gem "rails", "~> 7.1.4" gem "pg", "~> 1.1" gem "puma", "~> 6.0" +gem "overmind", "~> 2.5" # Assets gem "inertia_rails", ">= 3.1" @@ -31,7 +32,6 @@ gem "public_activity", "~> 3.0" # Helpers gem "factory_bot", ">= 6.2" gem "js-routes", "~> 2.2" -gem "foreman", "~> 0.87.2" gem "amazing_print", "~> 1.4" gem "eventmachine", "~> 1.2" # gem "ruby-osc", "~> 1.0" @@ -55,25 +55,27 @@ gem "bootsnap", require: false # gem "image_processing", "~> 1.2" group :development, :test do - gem "rspec-rails", "~> 6.0.1" + gem "rspec-rails", ">= 6.0.1" gem "factory_bot_rails", ">=6.2" - gem "pry-rails", "~> 0.3.9" + gem "pry-rails", ">= 0.3.9" gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main' # Linting - gem "rubocop-rails", "~> 2.14", require: false - gem "rubocop-rspec", "~> 2.9", require: false - gem "rubocop-performance", "~> 1.13", require: false - gem "rubocop-daemon", "~> 0.3.2", require: false + gem "rubocop", "~> 1.71", require: false + gem "rubocop-factory_bot", "~> 2.26", require: false + gem "rubocop-rails", ">= 2.14", require: false + gem "rubocop-rspec", ">= 2.9", require: false + gem "rubocop-performance", ">= 1.13", require: false + gem "rubocop-daemon", ">= 0.3.2", require: false # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem "debug", platforms: %i[mri mingw x64_mingw] - gem "dotenv-rails", "~> 2.8" + gem "dotenv-rails", ">= 3.1" # File annotation - gem "chusaku", "~> 1.2", require: false - gem "annotate", "~> 3.2", require: false + gem "chusaku", ">= 1.2", require: false + gem "annotate", ">= 3.2", require: false end group :development do @@ -93,9 +95,9 @@ group :test do gem "selenium-webdriver" gem "webdrivers" gem "generator_spec", ">= 0.9.4" - gem "database_cleaner-active_record", "~> 2.0" - gem "shoulda-matchers", "~> 5.1" - gem "bullet", "~> 7.0" - gem "simplecov", "~> 0.22.0" - gem "pundit-matchers", "~> 3.1" + gem "database_cleaner-active_record", ">= 2.0" + gem "shoulda-matchers", ">= 5.1" + gem "bullet", ">= 8.0" + gem "simplecov", ">= 0.22.0" + gem "pundit-matchers", ">= 3.1" end diff --git a/Gemfile.lock b/Gemfile.lock index 8debe0f..190c9ea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,43 +1,43 @@ GIT remote: https://github.com/faker-ruby/faker.git - revision: 6ba06393f47d4018b5fdbdaaa04eb9891ae5fb55 + revision: 3b56a737e4c8ad207305c25f92a43fd3ce5ac941 branch: main specs: - faker (3.4.2) + faker (3.5.1) i18n (>= 1.8.11, < 2) GEM remote: https://rubygems.org/ specs: - actioncable (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) + actioncable (7.1.5.1) + actionpack (= 7.1.5.1) + activesupport (= 7.1.5.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + actionmailbox (7.1.5.1) + actionpack (= 7.1.5.1) + activejob (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.4) - actionpack (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activesupport (= 7.1.4) + actionmailer (7.1.5.1) + actionpack (= 7.1.5.1) + actionview (= 7.1.5.1) + activejob (= 7.1.5.1) + activesupport (= 7.1.5.1) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.4) - actionview (= 7.1.4) - activesupport (= 7.1.4) + actionpack (7.1.5.1) + actionview (= 7.1.5.1) + activesupport (= 7.1.5.1) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -45,63 +45,67 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.4) - actionpack (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + actiontext (7.1.5.1) + actionpack (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.4) - activesupport (= 7.1.4) + actionview (7.1.5.1) + activesupport (= 7.1.5.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - active_type (2.5.1) - activerecord (>= 3.2) - activejob (7.1.4) - activesupport (= 7.1.4) + active_type (2.6.1) + activerecord (>= 6.1) + activejob (7.1.5.1) + activesupport (= 7.1.5.1) globalid (>= 0.3.6) - activemodel (7.1.4) - activesupport (= 7.1.4) - activerecord (7.1.4) - activemodel (= 7.1.4) - activesupport (= 7.1.4) + activemodel (7.1.5.1) + activesupport (= 7.1.5.1) + activerecord (7.1.5.1) + activemodel (= 7.1.5.1) + activesupport (= 7.1.5.1) timeout (>= 0.4.0) - activestorage (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activesupport (= 7.1.4) + activestorage (7.1.5.1) + actionpack (= 7.1.5.1) + activejob (= 7.1.5.1) + activerecord (= 7.1.5.1) + activesupport (= 7.1.5.1) marcel (~> 1.0) - activesupport (7.1.4) + activesupport (7.1.5.1) base64 + benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) mutex_m + securerandom (>= 0.3) tzinfo (~> 2.0) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - amazing_print (1.6.0) + amazing_print (1.7.2) annotate (3.2.0) activerecord (>= 3.2, < 8.0) rake (>= 10.4, < 14.0) ast (2.4.2) base64 (0.2.0) bcrypt (3.1.20) - bigdecimal (3.1.8) + benchmark (0.4.0) + bigdecimal (3.1.9) bindex (0.8.1) boolean_timestamp (1.1.0) activerecord (>= 5.2.0) bootsnap (1.18.4) msgpack (~> 1.2) builder (3.3.0) - bullet (7.2.0) + bullet (8.0.0) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) capybara (3.40.0) @@ -113,18 +117,18 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - chusaku (1.3.1) + chusaku (1.4.1) railties (>= 3.0) coderay (1.1.3) - concurrent-ruby (1.3.4) - connection_pool (2.4.1) + concurrent-ruby (1.3.5) + connection_pool (2.5.0) crass (1.0.6) database_cleaner-active_record (2.2.0) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) - date (3.3.4) - debug (1.9.2) + date (3.4.1) + debug (1.10.0) irb (~> 1.10) reline (>= 0.3.8) decent_exposure (3.0.4) @@ -140,39 +144,45 @@ GEM devise (>= 4.6) diff-lcs (1.5.1) docile (1.4.1) - dotenv (2.8.1) - dotenv-rails (2.8.1) - dotenv (= 2.8.1) - railties (>= 3.2) + dotenv (3.1.7) + dotenv-rails (3.1.7) + dotenv (= 3.1.7) + railties (>= 6.1) drb (2.2.1) - dry-cli (1.1.0) - erubi (1.13.0) + dry-cli (1.2.0) + erubi (1.13.1) eventmachine (1.2.7) - factory_bot (6.5.0) - activesupport (>= 5.0.0) - factory_bot_rails (6.4.3) - factory_bot (~> 6.4) + factory_bot (6.5.1) + activesupport (>= 6.1.0) + factory_bot_rails (6.4.4) + factory_bot (~> 6.5) railties (>= 5.0.0) - ffi (1.17.0-aarch64-linux-gnu) - ffi (1.17.0-arm64-darwin) - ffi (1.17.0-x86_64-linux-gnu) - foreman (0.87.2) + ffi (1.17.1-aarch64-linux-gnu) + ffi (1.17.1-aarch64-linux-musl) + ffi (1.17.1-arm-linux-gnu) + ffi (1.17.1-arm-linux-musl) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86_64-darwin) + ffi (1.17.1-x86_64-linux-gnu) + ffi (1.17.1-x86_64-linux-musl) generator_spec (0.10.0) activesupport (>= 3.0.0) railties (>= 3.0.0) globalid (1.2.1) activesupport (>= 6.1) - i18n (1.14.6) + i18n (1.14.7) concurrent-ruby (~> 1.0) - inertia_rails (3.2.0) - railties (>= 5) - io-console (0.7.2) - irb (1.14.1) + inertia_rails (3.6.0) + railties (>= 6) + io-console (0.8.0) + irb (1.15.1) + pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - js-routes (2.2.8) - railties (>= 4) - json (2.7.2) + js-routes (2.3.4) + railties (>= 5) + sorbet-runtime + json (2.9.1) jsonb_accessor (1.4) activerecord (>= 6.1) activesupport (>= 6.1) @@ -189,11 +199,12 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - language_server-protocol (3.17.0.3) + language_server-protocol (3.17.0.4) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.22.0) + logger (1.6.5) + loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -205,10 +216,10 @@ GEM matrix (0.4.2) method_source (1.1.0) mini_mime (1.1.5) - minitest (5.25.1) - msgpack (1.7.2) - mutex_m (0.2.0) - net-imap (0.4.16) + minitest (5.25.4) + msgpack (1.7.5) + mutex_m (0.3.0) + net-imap (0.5.5) date net-protocol net-pop (0.1.2) @@ -217,34 +228,53 @@ GEM timeout net-smtp (0.5.0) net-protocol - nio4r (2.7.3) - nokogiri (1.16.7-aarch64-linux) + nio4r (2.7.4) + nokogiri (1.18.2-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.18.2-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.18.2-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.18.2-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.18.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.18.2-x86_64-darwin) racc (~> 1.4) - nokogiri (1.16.7-arm64-darwin) + nokogiri (1.18.2-x86_64-linux-gnu) racc (~> 1.4) - nokogiri (1.16.7-x86_64-linux) + nokogiri (1.18.2-x86_64-linux-musl) racc (~> 1.4) - oj (3.16.6) + oj (3.16.9) bigdecimal (>= 3.0) ostruct (>= 0.2) oj_serializers (2.0.3) oj (>= 3.14.0) orm_adapter (0.5.0) - ostruct (0.6.0) + ostruct (0.6.1) + overmind (2.5.1) + overmind (2.5.1-aarch64-linux) + overmind (2.5.1-arm-linux) + overmind (2.5.1-arm64-darwin) + overmind (2.5.1-x86_64-darwin) parallel (1.26.3) - parser (3.3.5.0) + parser (3.3.7.0) ast (~> 2.4.1) racc - pg (1.5.8) + pg (1.5.9) pg_search (2.3.7) activerecord (>= 6.1) activesupport (>= 6.1) - pry (0.14.2) + pp (0.6.2) + prettyprint + prettyprint (0.2.0) + pry (0.15.2) coderay (~> 1.1) method_source (~> 1.0) pry-rails (0.3.11) pry (>= 0.13.0) - psych (5.1.2) + psych (5.2.3) + date stringio public_activity (3.0.1) actionpack (>= 6.1.0) @@ -252,50 +282,50 @@ GEM i18n (>= 0.5.0) railties (>= 6.1.0) public_suffix (6.0.1) - puma (6.4.3) + puma (6.6.0) nio4r (~> 2.0) pundit (2.4.0) activesupport (>= 3.0.0) - pundit-matchers (3.1.2) + pundit-matchers (4.0.0) rspec-core (~> 3.12) rspec-expectations (~> 3.12) rspec-mocks (~> 3.12) rspec-support (~> 3.12) racc (1.8.1) - rack (3.1.7) + rack (3.1.9) rack-proxy (0.7.7) rack - rack-session (2.0.0) + rack-session (2.1.0) + base64 (>= 0.1.0) rack (>= 3.0.0) - rack-test (2.1.0) + rack-test (2.2.0) rack (>= 1.3) - rackup (2.1.0) + rackup (2.2.1) rack (>= 3) - webrick (~> 1.8) - rails (7.1.4) - actioncable (= 7.1.4) - actionmailbox (= 7.1.4) - actionmailer (= 7.1.4) - actionpack (= 7.1.4) - actiontext (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activemodel (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + rails (7.1.5.1) + actioncable (= 7.1.5.1) + actionmailbox (= 7.1.5.1) + actionmailer (= 7.1.5.1) + actionpack (= 7.1.5.1) + actiontext (= 7.1.5.1) + actionview (= 7.1.5.1) + activejob (= 7.1.5.1) + activemodel (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) bundler (>= 1.15.0) - railties (= 7.1.4) + railties (= 7.1.5.1) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) - nokogiri (~> 1.14) - railties (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (7.1.5.1) + actionpack (= 7.1.5.1) + activesupport (= 7.1.5.1) irb rackup (>= 1.0.0) rake (>= 12.2) @@ -306,73 +336,67 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rdoc (6.7.0) + rdoc (6.11.0) psych (>= 4.0.0) - regexp_parser (2.9.2) - reline (0.5.10) + regexp_parser (2.10.0) + reline (0.6.0) io-console (~> 0.5) responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.3.8) + rexml (3.4.0) rolify (6.0.1) - rspec-core (3.13.1) + rspec-core (3.13.2) rspec-support (~> 3.13.0) rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.1) + rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (6.0.4) - actionpack (>= 6.1) - activesupport (>= 6.1) - railties (>= 6.1) - rspec-core (~> 3.12) - rspec-expectations (~> 3.12) - rspec-mocks (~> 3.12) - rspec-support (~> 3.12) - rspec-support (3.13.1) - rubocop (1.66.1) + rspec-rails (7.1.0) + actionpack (>= 7.0) + activesupport (>= 7.0) + railties (>= 7.0) + rspec-core (~> 3.13) + rspec-expectations (~> 3.13) + rspec-mocks (~> 3.13) + rspec-support (~> 3.13) + rspec-support (3.13.2) + rubocop (1.71.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.4, < 3.0) - rubocop-ast (>= 1.32.2, < 2.0) + regexp_parser (>= 2.9.3, < 3.0) + rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.3) + unicode-display_width (>= 2.4.0, < 4.0) + rubocop-ast (1.38.0) parser (>= 3.3.1.0) - rubocop-capybara (2.21.0) - rubocop (~> 1.41) rubocop-daemon (0.3.2) rubocop rubocop-factory_bot (2.26.1) rubocop (~> 1.61) - rubocop-performance (1.22.1) + rubocop-performance (1.23.1) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.26.2) + rubocop-rails (2.29.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (2.31.0) - rubocop (~> 1.40) - rubocop-capybara (~> 2.17) - rubocop-factory_bot (~> 2.22) - rubocop-rspec_rails (~> 2.28) - rubocop-rspec_rails (2.29.1) + rubocop-rspec (3.4.0) rubocop (~> 1.61) ruby-progressbar (1.13.0) - rubyzip (2.3.2) + rubyzip (2.4.1) + securerandom (0.4.1) selenium-webdriver (4.10.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) - shoulda-matchers (5.3.0) + shoulda-matchers (6.4.0) activesupport (>= 5.2.0) simplecov (0.22.0) docile (~> 1.1) @@ -384,24 +408,29 @@ GEM activerecord (> 3.0.0) activesupport (> 3.0.0) rake - stringio (3.1.1) + sorbet-runtime (0.5.11796) + stringio (3.1.2) thor (1.3.2) - timeout (0.4.1) + timeout (0.4.3) types_from_serializers (2.3.0) listen (~> 3.2) oj_serializers (~> 2.0, >= 2.0.2) railties (>= 5.1) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2024.2) + tzinfo-data (1.2025.1) tzinfo (>= 1.0.0) - unicode-display_width (2.6.0) + unicode-display_width (3.1.4) + unicode-emoji (~> 4.0, >= 4.0.4) + unicode-emoji (4.0.4) uniform_notifier (1.16.0) - vite_rails (3.0.17) - railties (>= 5.1, < 8) + vite_rails (3.0.19) + railties (>= 5.1, < 9) vite_ruby (~> 3.0, >= 3.2.2) - vite_ruby (3.8.2) + vite_ruby (3.9.1) dry-cli (>= 0.7, < 2) + logger (~> 1.6) + mutex_m rack-proxy (~> 0.6, >= 0.6.1) zeitwerk (~> 2.2) warden (1.2.9) @@ -415,64 +444,72 @@ GEM nokogiri (~> 1.6) rubyzip (>= 1.3.0) selenium-webdriver (~> 4.0, < 4.11) - webrick (1.8.2) websocket (1.2.11) - websocket-driver (0.7.6) + websocket-driver (0.7.7) + base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.18) + zeitwerk (2.7.1) PLATFORMS aarch64-linux - arm64-darwin-22 - arm64-darwin-23 - x86_64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES active_type (~> 2.1) amazing_print (~> 1.4) - annotate (~> 3.2) + annotate (>= 3.2) boolean_timestamp (~> 1.1) bootsnap - bullet (~> 7.0) + bullet (>= 8.0) capybara - chusaku (~> 1.2) - database_cleaner-active_record (~> 2.0) + chusaku (>= 1.2) + database_cleaner-active_record (>= 2.0) debug decent_exposure (~> 3.0) devise (~> 4.8) devise_invitable (~> 2.0) - dotenv-rails (~> 2.8) + dotenv-rails (>= 3.1) eventmachine (~> 1.2) factory_bot (>= 6.2) factory_bot_rails (>= 6.2) faker! - foreman (~> 0.87.2) generator_spec (>= 0.9.4) inertia_rails (>= 3.1) js-routes (~> 2.2) jsonb_accessor (~> 1.3) kaminari (~> 1.2) oj_serializers (~> 2.0) + overmind (~> 2.5) pg (~> 1.1) pg_search (~> 2.3) - pry-rails (~> 0.3.9) + pry-rails (>= 0.3.9) public_activity (~> 3.0) puma (~> 6.0) pundit (~> 2.3) - pundit-matchers (~> 3.1) + pundit-matchers (>= 3.1) rails (~> 7.1.4) rolify (~> 6.0) - rspec-rails (~> 6.0.1) - rubocop-daemon (~> 0.3.2) - rubocop-performance (~> 1.13) - rubocop-rails (~> 2.14) - rubocop-rspec (~> 2.9) + rspec-rails (>= 6.0.1) + rubocop (~> 1.71) + rubocop-daemon (>= 0.3.2) + rubocop-factory_bot (~> 2.26) + rubocop-performance (>= 1.13) + rubocop-rails (>= 2.14) + rubocop-rspec (>= 2.9) selenium-webdriver - shoulda-matchers (~> 5.1) - simplecov (~> 0.22.0) + shoulda-matchers (>= 5.1) + simplecov (>= 0.22.0) slug (~> 4.1) types_from_serializers (~> 2.1) tzinfo-data @@ -484,4 +521,4 @@ RUBY VERSION ruby 3.3.4p94 BUNDLED WITH - 2.4.17 + 2.5.23 diff --git a/app/controllers/api/controls_controller.rb b/app/controllers/api/controls_controller.rb index bc4c6b8..d861ea0 100644 --- a/app/controllers/api/controls_controller.rb +++ b/app/controllers/api/controls_controller.rb @@ -1,8 +1,8 @@ class Api::ControlsController < ApplicationController - expose :control expose :controls, -> { Control.all } + expose :control - strong_params :control, permit: [:title, :control_type, :order, :color, :screen_id, :min_value, :max_value, :value, :protocol_id] + strong_params :control, permit: [:title, :control_type, :order, :color, :screen_id, :min_value, :max_value, :value, :command_id, :protocol_id] # @route GET /api/options/controls (api_controls_options) def options @@ -10,18 +10,10 @@ def options render json: controls.render(view: :options), status: :ok end - def execute - authorize control - - control.create_activity key: :slug, owner: current_user - - SendOscProtocolJob.perform_later(control) - - render json: control, status: :accepted - end - # @route POST /api/controls (api_controls) def create + authorize Control.new + if control.save render json: control.render, status: :created else @@ -32,7 +24,9 @@ def create # @route PATCH /api/controls/:id (api_control) # @route PUT /api/controls/:id (api_control) def update - if control.save + authorize control + + if control.update(control_params) render json: control.render, status: :created else render json: { errors: control.errors }, status: :not_acceptable diff --git a/app/controllers/api/protocols_controller.rb b/app/controllers/api/protocols_controller.rb index f83c77e..f722f4e 100644 --- a/app/controllers/api/protocols_controller.rb +++ b/app/controllers/api/protocols_controller.rb @@ -24,10 +24,9 @@ def options def execute authorize protocol - protocol.create_activity key: :slug, owner: current_user + protocol.create_activity :execute, owner: current_user SendOscProtocolJob.perform_later(protocol) - render json: protocol, status: :accepted end @@ -43,7 +42,7 @@ def create # @route PATCH /api/protocols/:slug (api_protocol) # @route PUT /api/protocols/:slug (api_protocol) def update - if protocol.save + if protocol.update(protocol_params) render json: protocol.render, status: :created else render json: { errors: protocol.errors }, status: :not_acceptable diff --git a/app/controllers/api/users_controller.rb b/app/controllers/api/users_controller.rb index 4156db0..2ce5ead 100644 --- a/app/controllers/api/users_controller.rb +++ b/app/controllers/api/users_controller.rb @@ -1,7 +1,7 @@ class Api::UsersController < Api::ApiController expose :user - strong_params :user, permit: [:email, :password, :active, :first_name, :last_name, :number, :table_preferences, :user_preferences] + strong_params :user, permit: [:email, :password, :active, :first_name, :last_name, :number, table_preferences: {}, user_preferences: {}] # @route PATCH /api/users/:id (api_user) # @route PUT /api/users/:id (api_user) diff --git a/app/controllers/commands_controller.rb b/app/controllers/commands_controller.rb index 1dbfb89..52f3fb0 100644 --- a/app/controllers/commands_controller.rb +++ b/app/controllers/commands_controller.rb @@ -48,6 +48,7 @@ def edit # @route POST /commands (commands) def create authorize Command.new + if command.save redirect_to commands_path, notice: "Command was successfully created." else diff --git a/app/controllers/controls_controller.rb b/app/controllers/controls_controller.rb index f4b8e49..7d3dc56 100644 --- a/app/controllers/controls_controller.rb +++ b/app/controllers/controls_controller.rb @@ -1,10 +1,10 @@ class ControlsController < ApplicationController expose :controls, -> { search(Control.includes_associated, sortable_fields) } - expose :control, find: ->(id, scope) { scope.includes_associated.find(id) } + expose :control, scope: -> { Control.includes_associated } sortable_fields %w(title type screen_id min_value max_value value protocol_id) - strong_params :control, permit: [:title, :control_type, :order, :color, :screen_id, :min_value, :max_value, :value, :protocol_id] + strong_params :control, permit: [:title, :control_type, :order, :color, :screen_id, :min_value, :max_value, :value, :command_id, :protocol_id] # @route POST /controls (controls) def create @@ -13,7 +13,7 @@ def create if control.save redirect_to edit_screen_path(control.screen), notice: "Control was successfully created." else - redirect_to new_control_path, inertia: { errors: control.errors } + redirect_to edit_screen_path(control.screen), inertia: { errors: control.errors } end end @@ -25,7 +25,7 @@ def update if control.update(control_params) redirect_to edit_screen_path(control.screen), inertia: { method: :get }, notice: "Control was successfully updated." else - redirect_to edit_control_path, inertia: { errors: control.errors } + redirect_to edit_screen_path(control.screen), inertia: { errors: control.errors } end end @@ -33,6 +33,6 @@ def update def destroy authorize control control.destroy! - redirect_to controls_url, notice: "Control was successfully destroyed." + redirect_to edit_screen_path(control.screen), notice: "Control was successfully destroyed." end end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb deleted file mode 100644 index 825d7ee..0000000 --- a/app/controllers/pages_controller.rb +++ /dev/null @@ -1,15 +0,0 @@ -class PagesController < ApplicationController - skip_before_action :authenticate_user!, only: [:home] - - # GET / - # @route GET / (root) - def home - render inertia: "Public/Pages/Home", props: {} - end - - def dev - render inertia: "Pages/Dev", props: { - protocol: Protocol.first.render(view: :show) - } - end -end diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index f553e1d..b1285dc 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -52,6 +52,7 @@ def edit # @route POST /protocols (protocols) def create authorize Protocol.new + if protocol.save redirect_to protocol, notice: "Protocol was successfully created." else diff --git a/app/controllers/users/confirmations_controller.rb b/app/controllers/users/confirmations_controller.rb index f9c3561..22891c4 100644 --- a/app/controllers/users/confirmations_controller.rb +++ b/app/controllers/users/confirmations_controller.rb @@ -24,7 +24,7 @@ def show # @route GET /users/confirmation/new (new_user_confirmation) def new - render inertia: "Auth/Devise/Confirmations/New", props: { + render inertia: "Devise/Confirmations/New", props: { user: { email: params[:email] } @@ -47,7 +47,7 @@ def create # The path used after resending confirmation instructions. def after_resending_confirmation_instructions_path_for(resource_name) - is_navigational_format? ? new_session_path(resource_name) : '/' + is_navigational_format? ? new_session_path(resource_name) : "/" end # The path used after confirmation. @@ -60,6 +60,6 @@ def after_confirmation_path_for(resource_name, resource) end def translation_scope - 'devise.confirmations' + "devise.confirmations" end end diff --git a/app/controllers/users/passwords_controller.rb b/app/controllers/users/passwords_controller.rb index 1ec7846..227da42 100644 --- a/app/controllers/users/passwords_controller.rb +++ b/app/controllers/users/passwords_controller.rb @@ -3,7 +3,7 @@ class Users::PasswordsController < Devise::PasswordsController # @route GET /users/password/new (new_user_password) def new - render inertia: "Auth/Devise/Passwords/New" + render inertia: "Devise/Passwords/New" end # def create diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb index ca9fa43..4b0e19d 100644 --- a/app/controllers/users/registrations_controller.rb +++ b/app/controllers/users/registrations_controller.rb @@ -10,11 +10,11 @@ def new first_run = false if User.count == 0 flash.clear - flash[:notice] = t('devise.registrations.first_run_create_admin') + flash[:notice] = t("devise.registrations.first_run_create_admin") first_run = true end - render inertia: 'Auth/Devise/Register', props: { + render inertia: "Devise/Register", props: { user: User.new, first_run:, } diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index aa59cb4..40327da 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -6,7 +6,7 @@ class Users::SessionsController < Devise::SessionsController # @route GET /login (new_user_session) def new - render inertia: "Auth/Devise/Login" + render inertia: "Devise/Login" end # @route POST /login (user_session) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 33e3c46..933a9ae 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,7 +4,7 @@ class UsersController < ApplicationController sortable_fields %w(email active first_name last_name number) - strong_params :user, permit: [:email, :password, :active, :first_name, :last_name, :number] + strong_params :user, permit: [:email, :password, :active, :first_name, :last_name, :number, user_preferences: {}] # @route GET /users (users) def index diff --git a/app/frontend/Components/Button/DeleteButton.tsx b/app/frontend/Components/Button/DeleteButton.tsx index fadac7d..6a26922 100644 --- a/app/frontend/Components/Button/DeleteButton.tsx +++ b/app/frontend/Components/Button/DeleteButton.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Link } from '@/Components' -import { type LinkProps } from '../Link' -import { TrashIcon } from '@/Components/Icons' +import React from "react" +import { Link } from "@/Components" +import { type LinkProps } from "../Link" +import { TrashIcon } from "@/Components/Icons" -interface IDeleteButtonProps extends Omit { +interface IDeleteButtonProps extends Omit { children?: string label?: string } diff --git a/app/frontend/Components/Button/EditButton.tsx b/app/frontend/Components/Button/EditButton.tsx index 8f35ba5..3a73766 100644 --- a/app/frontend/Components/Button/EditButton.tsx +++ b/app/frontend/Components/Button/EditButton.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Link } from '@/Components' -import { EditIcon } from '@/Components/Icons' -import { LinkProps } from '../Link' +import React from "react" +import { Link } from "@/Components" +import { EditIcon } from "@/Components/Icons" +import { LinkProps } from "../Link" -interface IEditButtonProps extends Omit { +interface IEditButtonProps extends Omit { label?: string } diff --git a/app/frontend/Components/Button/ToggleColorSchemeButton.tsx b/app/frontend/Components/Button/ToggleColorSchemeButton.tsx index eb1acc0..ec1a440 100644 --- a/app/frontend/Components/Button/ToggleColorSchemeButton.tsx +++ b/app/frontend/Components/Button/ToggleColorSchemeButton.tsx @@ -1,27 +1,27 @@ -import React from 'react' -import { ActionIcon, type ActionIconProps, useComputedColorScheme, useMantineColorScheme } from '@mantine/core' -import { SunIcon, MoonIcon } from '@/Components/Icons' +import React from "react" +import { ActionIcon, type ActionIconProps, useComputedColorScheme, useMantineColorScheme } from "@mantine/core" +import { SunIcon, MoonIcon } from "@/Components/Icons" interface ToggleColorSchemeButtonProps extends ActionIconProps {} const ToggleColorSchemeButton = (props: ToggleColorSchemeButtonProps) => { const { colorScheme, setColorScheme } = useMantineColorScheme() - const computedColorScheme = useComputedColorScheme('dark') + const computedColorScheme = useComputedColorScheme("dark") const toggleColorScheme = () => { - setColorScheme(computedColorScheme === 'dark' ? 'light' : 'dark') + setColorScheme(computedColorScheme === "dark" ? "light" : "dark") } return ( toggleColorScheme() } title="Toggle color scheme" - style={ { display: 'inline-flex' } } - aria-label={ `Toggle color scheme to ${colorScheme === 'dark' ? 'light' : 'dark'} mode` } + style={ { display: "inline-flex" } } + aria-label={ `Toggle color scheme to ${colorScheme === "dark" ? "light" : "dark"} mode` } { ...props } > - { colorScheme === 'dark' ? : } + { colorScheme === "dark" ? : } ) } diff --git a/app/frontend/Components/Button/index.ts b/app/frontend/Components/Button/index.ts index 30db904..12cb93e 100644 --- a/app/frontend/Components/Button/index.ts +++ b/app/frontend/Components/Button/index.ts @@ -1,7 +1,10 @@ -import { Button, ActionIcon as IconButton } from '@mantine/core' +import { + Button, + ActionIcon as IconButton, +} from "@mantine/core" export default Button export { IconButton } -export { default as EditButton } from './EditButton' -export { default as DeleteButton } from './DeleteButton' -export { default as ToggleColorSchemeButton } from './ToggleColorSchemeButton' +export { default as EditButton } from "./EditButton" +export { default as DeleteButton } from "./DeleteButton" +export { default as ToggleColorSchemeButton } from "./ToggleColorSchemeButton" diff --git a/app/frontend/Components/ConditionalWrapper/index.tsx b/app/frontend/Components/ConditionalWrapper/index.tsx index 1af60e5..bbb8e44 100644 --- a/app/frontend/Components/ConditionalWrapper/index.tsx +++ b/app/frontend/Components/ConditionalWrapper/index.tsx @@ -1,10 +1,10 @@ -import React from 'react' +import React from "react" interface ConditionalWrapperProps { - children: JSX.Element|React.ReactNode + children: JSX.Element | React.ReactNode condition: boolean - wrapper: (children: JSX.Element|React.ReactNode) => JSX.Element - elseWrapper?: (children: JSX.Element|React.ReactNode) => JSX.Element + wrapper: (children: JSX.Element | React.ReactNode) => JSX.Element + elseWrapper?: (children: JSX.Element | React.ReactNode) => JSX.Element } const ConditionalWrapper = ({ children, condition, wrapper, elseWrapper }: ConditionalWrapperProps) => { diff --git a/app/frontend/Components/DangerousHtml/index.tsx b/app/frontend/Components/DangerousHtml/index.tsx index 882c2ca..d2e5411 100644 --- a/app/frontend/Components/DangerousHtml/index.tsx +++ b/app/frontend/Components/DangerousHtml/index.tsx @@ -1,13 +1,13 @@ -import { Box, type BoxProps } from '@mantine/core' -import React from 'react' +import { Box, type BoxProps } from "@mantine/core" +import React from "react" interface IDangerousHtmlProps extends BoxProps { - children?: string|null + children?: string | null } const DangerousHtml = ({ children, ...props }: IDangerousHtmlProps) => { return ( - + ) } diff --git a/app/frontend/Components/Dropdowns/CommandDropdown.tsx b/app/frontend/Components/Dropdowns/CommandDropdown.tsx index 2fa5a9e..c306bdc 100644 --- a/app/frontend/Components/Dropdowns/CommandDropdown.tsx +++ b/app/frontend/Components/Dropdowns/CommandDropdown.tsx @@ -1,11 +1,11 @@ -import React from 'react' -import { Select } from '@/Components/Form' -import { type AsyncDropdown } from '.' -import { useGetCommands } from '@/queries' +import React from "react" +import { Select } from "@/Components/Form" +import { type AsyncDropdown } from "." +import { useGetCommands } from "@/queries" const CommandDropdown = ({ - label = 'Command', - name = 'command_id', + label = "Command", + name = "command_id", initialData = [], value, onSelect, @@ -17,10 +17,12 @@ const CommandDropdown = ({ ({ - label: `${value.value}${value.label ? ` - ${value.label}` : ''}`, - value: String(value.id), - description: 'hi', - })) } + options={ !data?.command_values + ? [] + : data?.command_values?.map(value => ({ + label: `${value.value}${value.label ? ` - ${value.label}` : ""}`, + value: String(value.id), + description: "hi", + })) } { ...props } /> ) diff --git a/app/frontend/Components/Dropdowns/ProtocolDropdown.tsx b/app/frontend/Components/Dropdowns/ProtocolDropdown.tsx index 4cad601..8301761 100644 --- a/app/frontend/Components/Dropdowns/ProtocolDropdown.tsx +++ b/app/frontend/Components/Dropdowns/ProtocolDropdown.tsx @@ -1,11 +1,11 @@ -import React from 'react' -import { Select } from '@/Components/Form' -import { type AsyncDropdown } from '.' -import { useGetProtocolOptions } from '@/queries' +import React from "react" +import { Select } from "@/Components/Form" +import { type AsyncDropdown } from "." +import { useGetProtocolOptions } from "@/queries" const ProtocolDropdown = ({ - label = 'Protocol', - name = 'protocol_id', + label = "Protocol", + name = "protocol_id", initialData = [], value, onSelect, @@ -17,11 +17,13 @@ const ProtocolDropdown = ({ ({ - label: server.title!, - value: String(server.id), - })) } + options={ !data + ? [] + : data.map(server => ({ + label: server.title!, + value: String(server.id), + })) } { ...props } /> ) diff --git a/app/frontend/Components/Dropdowns/index.ts b/app/frontend/Components/Dropdowns/index.ts index 3a46e3a..e734fe1 100644 --- a/app/frontend/Components/Dropdowns/index.ts +++ b/app/frontend/Components/Dropdowns/index.ts @@ -1,7 +1,9 @@ -import { type FormSelectProps } from '../Form/Inputs/Select' -import { type FormMultiSelectProps } from '../Form/Inputs/MultiSelect' +import { ComboboxItem, SelectOption, type FormSelectProps } from "../Form/Inputs/Select" +import { type FormMultiSelectProps } from "../Form/Inputs/MultiSelect" +import { NestedObject, UseFormProps } from "use-inertia-form" -export interface AsyncDropdown extends Omit { +type FormSelectOmits = "defaultValue" | "onBlur" | "name" | "onSelect" | "onChange" +export interface AsyncDropdown extends Omit { name?: string label?: string fetchOnOpen?: string @@ -9,16 +11,17 @@ export interface AsyncDropdown extends Omit void + onChange?: (protocol: SelectOption | null, options: ComboboxItem[], form: UseFormProps) => void } -export interface AsyncMultiSelect extends Omit { +export interface AsyncMultiSelect extends Omit { errorKey?: string initialData?: T[] } -export { default as ProtocolDropdown } from './ProtocolDropdown' -export { default as ServerDropdown } from './ServerDropdown' -export { default as CommandDropdown } from './CommandDropdown' -export { default as CommandValueDropdown } from './CommandValueDropdown' -export { default as CommandPayloadTypesDropdown } from './CommandPayloadTypesDropdown' +export { default as ProtocolDropdown } from "./ProtocolDropdown" +export { default as ServerDropdown } from "./ServerDropdown" +export { default as CommandDropdown } from "./CommandDropdown" +export { default as CommandValueDropdown } from "./CommandValueDropdown" +export { default as CommandPayloadTypesDropdown } from "./CommandPayloadTypesDropdown" diff --git a/app/frontend/Components/Flash/Flash.tsx b/app/frontend/Components/Flash/Flash.tsx deleted file mode 100644 index 4c167bb..0000000 --- a/app/frontend/Components/Flash/Flash.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useEffect } from 'react' -import { showNotification } from '@mantine/notifications' -import { usePageProps } from '@/lib/hooks' -import { type FlashMessage } from '@/types' - -const Flash = () => { - const { flash } = usePageProps() - - useEffect(() => { - let key: keyof FlashMessage - for(key in flash) { - if(flash[key]) { - let color - switch(key) { - case 'alert': - color = 'red' - break - case 'success': - color = 'green' - break - case 'info': - color = 'blue' - break - case 'warning': - color = 'yellow' - break - } - - showNotification({ - message: flash[key], - color, - }) - } - } - }, [flash]) - - return ( - <> - ) -} - -export default Flash - diff --git a/app/frontend/Components/Flash/index.ts b/app/frontend/Components/Flash/index.ts deleted file mode 100644 index 7e9e89d..0000000 --- a/app/frontend/Components/Flash/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Flash } from './Flash' diff --git a/app/frontend/Components/Flash/index.tsx b/app/frontend/Components/Flash/index.tsx new file mode 100644 index 0000000..dd42c62 --- /dev/null +++ b/app/frontend/Components/Flash/index.tsx @@ -0,0 +1,44 @@ +import { useEffect } from "react" +import { usePage } from "@inertiajs/react" +import { showNotification } from "@mantine/notifications" + +const shownMessageIds = new Set() + +const Flash = () => { + const { flash } = usePage().props + + useEffect(() => { + for(const [type, message] of Object.entries(flash)) { + if(message !== null && !shownMessageIds.has(message.id)) { + let color + switch(type) { + case "alert": + color = "red" + break + case "success": + color = "green" + break + case "info": + color = "blue" + break + case "warning": + color = "yellow" + break + } + + shownMessageIds.add(message.id) + + showNotification({ + id: message.id, + message: message.message, + color, + onClose: () => shownMessageIds.delete(message.id), + }) + } + } + }, [flash]) + + return <> +} + +export default Flash diff --git a/app/frontend/Components/Form/Components/DynamicInputs/NestedField.tsx b/app/frontend/Components/Form/Components/DynamicInputs/NestedField.tsx index ad2590e..f3b970c 100644 --- a/app/frontend/Components/Form/Components/DynamicInputs/NestedField.tsx +++ b/app/frontend/Components/Form/Components/DynamicInputs/NestedField.tsx @@ -1,8 +1,8 @@ -import React, { useMemo, useState } from 'react' -import { Box, Button, Flex, Group, Label, Paper } from '@/Components' -import { PlusCircleIcon, MinusCircleIcon, DraggableIcon } from '@/Components/Icons' -import { NestedFields, NestedObject, useDynamicInputs, useForm } from 'use-inertia-form' -import cx from 'clsx' +import React, { useMemo, useState } from "react" +import { Box, Button, Flex, Group, Label, Paper } from "@/Components" +import { PlusCircleIcon, MinusCircleIcon, DraggableIcon } from "@/Components/Icons" +import { NestedFields, NestedObject, useDynamicInputs, useForm } from "use-inertia-form" +import cx from "clsx" import { DndContext, KeyboardSensor, @@ -14,22 +14,22 @@ import { DragEndEvent, DragStartEvent, UniqueIdentifier, -} from '@dnd-kit/core' +} from "@dnd-kit/core" import { SortableContext, arrayMove, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy, -} from '@dnd-kit/sortable' -import { CSS } from '@dnd-kit/utilities' +} from "@dnd-kit/sortable" +import { CSS } from "@dnd-kit/utilities" -import { createContext } from '@/lib/hooks' -import { FormPointerSensor, FormTouchSensor } from '@/Components/Sortable' -import { type DynamicInputsProps } from '.' +import { createContext } from "@/lib/hooks" +import { FormPointerSensor, FormTouchSensor } from "@/Components/Sortable" +import { type DynamicInputsProps } from "." -import * as classes from '../../Form.css' -import { useDynamicInputContext } from './dynamicInputContext' +import * as classes from "../../Form.css" +import { useDynamicInputContext } from "./dynamicInputContext" interface NestedFieldProps { children: React.ReactNode | React.ReactElement>[] @@ -67,7 +67,7 @@ const NestedField = >({ - + diff --git a/app/frontend/Components/Form/Components/DynamicInputs/SortableDynamicInputs.tsx b/app/frontend/Components/Form/Components/DynamicInputs/SortableDynamicInputs.tsx index 3d49c59..6f4eda3 100644 --- a/app/frontend/Components/Form/Components/DynamicInputs/SortableDynamicInputs.tsx +++ b/app/frontend/Components/Form/Components/DynamicInputs/SortableDynamicInputs.tsx @@ -1,29 +1,29 @@ -import React, { useEffect, useMemo, useState } from 'react' -import { Box, Button, Label } from '@/Components' -import { PlusCircleIcon } from '@/Components/Icons' -import { useDynamicInputs, useForm } from 'use-inertia-form' -import { DynamicInputContextProvider } from './dynamicInputContext' -import cx from 'clsx' +import React, { useEffect, useMemo, useState } from "react" +import { Box, Button, Label } from "@/Components" +import { PlusCircleIcon } from "@/Components/Icons" +import { useDynamicInputs, useForm } from "use-inertia-form" +import { DynamicInputContextProvider } from "./dynamicInputContext" +import cx from "clsx" import { DndContext, useSensor, useSensors, -} from '@dnd-kit/core' +} from "@dnd-kit/core" import { restrictToVerticalAxis, restrictToWindowEdges, -} from '@dnd-kit/modifiers' -import type { Active, DragEndEvent, DragStartEvent } from '@dnd-kit/core' +} from "@dnd-kit/modifiers" +import type { Active, DragEndEvent, DragStartEvent } from "@dnd-kit/core" import { SortableContext, arrayMove, verticalListSortingStrategy, -} from '@dnd-kit/sortable' -import { createContext, useInit } from '@/lib/hooks' -import { FormPointerSensor } from '@/Components/Sortable' -import { type DynamicInputsProps } from '.' -import NestedField from './NestedField' -import { findMax } from '@/lib' +} from "@dnd-kit/sortable" +import { createContext, useInit } from "@/lib/hooks" +import { FormPointerSensor } from "@/Components/Sortable" +import { type DynamicInputsProps } from "." +import NestedField from "./NestedField" +import { findMax } from "@/lib" // import * as classes from '../Form.css' @@ -47,7 +47,7 @@ const SortableDynamicInputs = ({ emptyData, onAddInput, onRemoveInput, - sortField = 'order', + sortField = "order", }: SortableDynamicInputsProps) => { /* Dynamic form stuff */ const { addInput, removeInput, paths } = useDynamicInputs({ model, emptyData }) @@ -63,7 +63,7 @@ const SortableDynamicInputs = ({ const handleAddInput = () => { onAddInput?.() addInput((records: T[]) => { - const lastRecord = findMax(records, 'id') + const lastRecord = findMax(records, "id") return { order: records.length + 1, key: lastRecord?.id + 1, @@ -78,20 +78,20 @@ const SortableDynamicInputs = ({ const target = event.target as HTMLElement - if(target.closest('[data-portal]')) { + if(target.closest("[data-portal]")) { event.stopPropagation() } } - const portals = document.querySelectorAll('[data-portal]') + const portals = document.querySelectorAll("[data-portal]") portals.forEach(portal => { - portal.addEventListener('mousedown', handlePortalClick, { capture: true }) + portal.addEventListener("mousedown", handlePortalClick, { capture: true }) }) return () => { portals.forEach(portal => { - portal.removeEventListener('mousedown', handlePortalClick, { capture: true }) + portal.removeEventListener("mousedown", handlePortalClick, { capture: true }) }) } }) @@ -142,12 +142,12 @@ const SortableDynamicInputs = ({ const datumA = getData(`${formModel}.${pathA}`) as OrderedObject const datumB = getData(`${formModel}.${pathB}`) as OrderedObject - return datumA.order > datumB.order ? 1 : -1 + return datumA.order > datumB.order ? 1 : - 1 }) }, [paths]) return ( - + ({ ) }) } - + diff --git a/app/frontend/Components/Form/Components/DynamicInputs/dynamicInputContext.tsx b/app/frontend/Components/Form/Components/DynamicInputs/dynamicInputContext.tsx index 979b408..96c5f4d 100644 --- a/app/frontend/Components/Form/Components/DynamicInputs/dynamicInputContext.tsx +++ b/app/frontend/Components/Form/Components/DynamicInputs/dynamicInputContext.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react" export interface DynamicInputProps { record: T @@ -15,7 +15,7 @@ export const useDynamicInputContext = (): DynamicInputProps => const context = React.useContext(DynamicInputContext) if(context === null) { - throw new Error('useContext must be inside a Provider with a value') + throw new Error("useContext must be inside a Provider with a value") } return context as DynamicInputProps diff --git a/app/frontend/Components/Form/Components/DynamicInputs/index.tsx b/app/frontend/Components/Form/Components/DynamicInputs/index.tsx index 894ab2f..4e8c245 100644 --- a/app/frontend/Components/Form/Components/DynamicInputs/index.tsx +++ b/app/frontend/Components/Form/Components/DynamicInputs/index.tsx @@ -1,11 +1,11 @@ -import React from 'react' -import { Box, Button, Flex, Label, Paper } from '@/Components' -import { PlusCircleIcon, MinusCircleIcon } from '@/Components/Icons' -import { NestedFields, NestedObject, useDynamicInputs, useForm } from 'use-inertia-form' -import { DynamicInputContextProvider } from './dynamicInputContext' -import cx from 'clsx' +import React from "react" +import { Box, Button, Flex, Label, Paper } from "@/Components" +import { PlusCircleIcon, MinusCircleIcon } from "@/Components/Icons" +import { NestedFields, NestedObject, useDynamicInputs, useForm } from "use-inertia-form" +import { DynamicInputContextProvider } from "./dynamicInputContext" +import cx from "clsx" -import * as classes from '../../Form.css' +import * as classes from "../../Form.css" export interface DynamicInputsProps { children: React.ReactNode | React.ReactElement[] @@ -38,7 +38,7 @@ const DynamicInputs = >({ } return ( - + { paths.map((path, i) => ( @@ -64,7 +64,7 @@ const DynamicInputs = >({ )) } - + @@ -75,4 +75,4 @@ const DynamicInputs = >({ export default DynamicInputs -export { useDynamicInputContext } from './dynamicInputContext' +export { useDynamicInputContext } from "./dynamicInputContext" diff --git a/app/frontend/Components/Form/Components/Field.tsx b/app/frontend/Components/Form/Components/Field.tsx index 8de0b70..9422732 100644 --- a/app/frontend/Components/Form/Components/Field.tsx +++ b/app/frontend/Components/Form/Components/Field.tsx @@ -1,8 +1,8 @@ -import React from 'react' -import { Box, BoxProps } from '@mantine/core' -import cx from 'clsx' -import { useFormFormat } from '../Form' -import { type InputType } from '@/types' +import React from "react" +import { Box, BoxProps } from "@mantine/core" +import cx from "clsx" +import { useFormFormat } from "../Form" +import { type InputType } from "@/types" export interface FieldProps extends BoxProps { children: React.ReactNode @@ -24,11 +24,11 @@ const Field = ({ return ( { children?: (form: UseFormProps) => React.ReactNode diff --git a/app/frontend/Components/Form/Components/FormDataLogger.tsx b/app/frontend/Components/Form/Components/FormDataLogger.tsx index 8e7b891..e92bc22 100644 --- a/app/frontend/Components/Form/Components/FormDataLogger.tsx +++ b/app/frontend/Components/Form/Components/FormDataLogger.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import FormConsumer from './FormConsumer' +import React from "react" +import FormConsumer from "./FormConsumer" const FormDataLogger = () => { return ( diff --git a/app/frontend/Components/Form/Components/FormGroup.tsx b/app/frontend/Components/Form/Components/FormGroup.tsx index 6008bba..cb6c0c4 100644 --- a/app/frontend/Components/Form/Components/FormGroup.tsx +++ b/app/frontend/Components/Form/Components/FormGroup.tsx @@ -1,8 +1,8 @@ -import React from 'react' -import { DivProps } from 'react-html-props' -import { ConditionalWrapper, Grid, Box } from '@/Components' -import { NestedFields } from 'use-inertia-form' -import cx from 'clsx' +import React from "react" +import { DivProps } from "react-html-props" +import { ConditionalWrapper, Grid, Box } from "@/Components" +import { NestedFields } from "use-inertia-form" +import cx from "clsx" interface FormGroupProps extends DivProps { legend?: string @@ -18,7 +18,7 @@ const FormGroup = ({ children, legend, outline = true, model, grid = true }: For wrapper={ children => ( { children } @@ -26,7 +26,7 @@ const FormGroup = ({ children, legend, outline = true, model, grid = true }: For ) } elseWrapper={ children => ( { children } diff --git a/app/frontend/Components/Form/Components/ResetButton.tsx b/app/frontend/Components/Form/Components/ResetButton.tsx index 1f69e25..90ed59b 100644 --- a/app/frontend/Components/Form/Components/ResetButton.tsx +++ b/app/frontend/Components/Form/Components/ResetButton.tsx @@ -1,10 +1,10 @@ -import { Button } from '@/Components' -import { type ButtonProps } from '@mantine/core' -import React from 'react' -import { useForm } from 'use-inertia-form' +import { Button } from "@/Components" +import { type ButtonProps } from "@mantine/core" +import React from "react" +import { useForm } from "use-inertia-form" interface ResetButton extends ButtonProps { - fields?: string|string[] + fields?: string | string[] } const ResetButton = ({ fields, children, ...props }: ResetButton) => { @@ -17,7 +17,7 @@ const ResetButton = ({ fields, children, ...props }: ResetButton) => { } return ( - + ) } diff --git a/app/frontend/Components/Form/Components/Submit.tsx b/app/frontend/Components/Form/Components/Submit.tsx index 48fa0ea..0ce913b 100644 --- a/app/frontend/Components/Form/Components/Submit.tsx +++ b/app/frontend/Components/Form/Components/Submit.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Button, Link } from '@/Components' -import { Submit as SubmitButton, useForm } from 'use-inertia-form' -import { Flex, type ButtonProps } from '@mantine/core' +import React from "react" +import { Button, Link } from "@/Components" +import { Submit as SubmitButton, useForm } from "use-inertia-form" +import { Flex, type ButtonProps } from "@mantine/core" interface SubmitButtonProps extends ButtonProps { cancelRoute?: string diff --git a/app/frontend/Components/Form/Components/index.ts b/app/frontend/Components/Form/Components/index.ts index eec6474..e876299 100644 --- a/app/frontend/Components/Form/Components/index.ts +++ b/app/frontend/Components/Form/Components/index.ts @@ -1,10 +1,10 @@ -export { default as ResetButton } from './ResetButton' -export { default as FormConsumer } from './FormConsumer' -export { default as FormGroup } from './FormGroup' -export { default as Field } from './Field' -export { default as FieldsFor } from './FieldsFor' -export { default as Submit } from './Submit' +export { default as ResetButton } from "./ResetButton" +export { default as FormConsumer } from "./FormConsumer" +export { default as FormGroup } from "./FormGroup" +export { default as Field } from "./Field" +export { default as FieldsFor } from "./FieldsFor" +export { default as Submit } from "./Submit" -export { default as DynamicInputs, useDynamicInputContext } from './DynamicInputs' +export { default as DynamicInputs, useDynamicInputContext } from "./DynamicInputs" -export { default as FormDataLogger } from './FormDataLogger' +export { default as FormDataLogger } from "./FormDataLogger" diff --git a/app/frontend/Components/Form/Form.css.ts b/app/frontend/Components/Form/Form.css.ts index de252e1..63d3928 100644 --- a/app/frontend/Components/Form/Form.css.ts +++ b/app/frontend/Components/Form/Form.css.ts @@ -1,6 +1,6 @@ -import { vars, theme } from '@/lib/theme' -import { rem } from '@mantine/core' -import { css } from '@linaria/core' +import { vars, theme } from "@/lib/theme" +import { rem } from "@mantine/core" +import { css } from "@linaria/core" export const form = css` .field { diff --git a/app/frontend/Components/Form/Form.tsx b/app/frontend/Components/Form/Form.tsx index 76ebe65..56bc4e9 100644 --- a/app/frontend/Components/Form/Form.tsx +++ b/app/frontend/Components/Form/Form.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Box } from '@mantine/core' -import { createContext } from '@/lib/hooks' +import React from "react" +import { Box } from "@mantine/core" +import { createContext } from "@/lib/hooks" import { Form as InertiaForm, type FormProps as UifFormProps, type NestedObject, -} from 'use-inertia-form' +} from "use-inertia-form" -import cx from 'clsx' -import * as classes from './Form.css' +import cx from "clsx" +import * as classes from "./Form.css" type FormLayoutValues = { disableFormatting: boolean @@ -36,7 +36,7 @@ const Form = ({ extends diff --git a/app/frontend/Components/Form/Inputs/Checkbox/Checkbox.tsx b/app/frontend/Components/Form/Inputs/Checkbox/Checkbox.tsx index 7aff5fd..2a2f7e3 100644 --- a/app/frontend/Components/Form/Inputs/Checkbox/Checkbox.tsx +++ b/app/frontend/Components/Form/Inputs/Checkbox/Checkbox.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import { useInertiaInput, type NestedObject } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { Field } from '@/Components/Form' -import CheckboxInput, { type CheckboxProps } from '@/Components/Inputs/Checkbox' -import FormCheckboxGroup from './Group' -import { type InputConflicts, type BaseFormInputProps } from '..' +import React from "react" +import { useInertiaInput, type NestedObject } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { Field } from "@/Components/Form" +import CheckboxInput, { type CheckboxProps } from "@/Components/Inputs/Checkbox" +import FormCheckboxGroup from "./Group" +import { type InputConflicts, type BaseFormInputProps } from ".." export interface FormCheckboxProps extends @@ -71,7 +71,7 @@ const FormCheckboxComponent = ( onBlur={ handleBlur } onFocus={ e => onFocus?.(e.target.checked, form) } error={ error } - style={ [{ padding: '14px 10px' }, style] } + style={ [{ padding: "14px 10px" }, style] } wrapper={ false } { ...props } /> diff --git a/app/frontend/Components/Form/Inputs/Checkbox/Group.tsx b/app/frontend/Components/Form/Inputs/Checkbox/Group.tsx index 8ebc5b4..ca09101 100644 --- a/app/frontend/Components/Form/Inputs/Checkbox/Group.tsx +++ b/app/frontend/Components/Form/Inputs/Checkbox/Group.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { useInertiaInput } from 'use-inertia-form' -import { Checkbox } from '@/Components/Inputs' -import { type CheckboxGroupProps } from '@mantine/core' +import React from "react" +import { useInertiaInput } from "use-inertia-form" +import { Checkbox } from "@/Components/Inputs" +import { type CheckboxGroupProps } from "@mantine/core" export interface FormCheckboxGroupProps extends CheckboxGroupProps { name: string diff --git a/app/frontend/Components/Form/Inputs/Checkbox/index.tsx b/app/frontend/Components/Form/Inputs/Checkbox/index.tsx index b096674..b49def6 100644 --- a/app/frontend/Components/Form/Inputs/Checkbox/index.tsx +++ b/app/frontend/Components/Form/Inputs/Checkbox/index.tsx @@ -1,4 +1,4 @@ -export { Checkbox as GroupedCheckbox } from '@/Components/Inputs' +export { Checkbox as GroupedCheckbox } from "@/Components/Inputs" -import FormCheckboxInput from './Checkbox' +import FormCheckboxInput from "./Checkbox" export default FormCheckboxInput diff --git a/app/frontend/Components/Form/Inputs/CurrencyInput.tsx b/app/frontend/Components/Form/Inputs/CurrencyInput.tsx index 0461672..21e8a4b 100644 --- a/app/frontend/Components/Form/Inputs/CurrencyInput.tsx +++ b/app/frontend/Components/Form/Inputs/CurrencyInput.tsx @@ -1,17 +1,16 @@ -import React from 'react' -import CurrencyInput, { type CurrencyInputProps } from '@/Components/Inputs/CurrencyInput' -import Field from '../Components/Field' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { InputConflicts, type BaseFormInputProps } from '.' -import { type Money } from '@/types' -import { useCurrency } from '@/lib/hooks' +import React from "react" +import CurrencyInput, { type CurrencyInputProps } from "@/Components/Inputs/CurrencyInput" +import Field from "../Components/Field" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { InputConflicts, type BaseFormInputProps } from "." +import { type Money } from "@/types" +import { useCurrency } from "@/lib/hooks" interface INumberInputProps extends Omit, - BaseFormInputProps -{ + BaseFormInputProps { } @@ -32,7 +31,7 @@ const FormInput = ( ...props } : INumberInputProps, ) => { - const { form, inputName, inputId, value, setValue, error } = useInertiaInput({ + const { form, inputName, inputId, value, setValue, error } = useInertiaInput({ name, model, errorKey, @@ -44,7 +43,7 @@ const FormInput = ( amount: value, }) - const handleChange = (value: string|number) => { + const handleChange = (value: string | number) => { const numberValue = Number(value) setValue(numberValue) diff --git a/app/frontend/Components/Form/Inputs/DateInput.tsx b/app/frontend/Components/Form/Inputs/DateInput.tsx index c04917f..f09f3d3 100644 --- a/app/frontend/Components/Form/Inputs/DateInput.tsx +++ b/app/frontend/Components/Form/Inputs/DateInput.tsx @@ -1,16 +1,16 @@ -import React from 'react' -import Field from '../Components/Field' -import { DateInput, type DateInputValue } from '@/Components/Inputs' -import { type DateInputProps } from '@/Components/Inputs/DateInput' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' -import { isUnset } from '@/lib' +import React from "react" +import Field from "../Components/Field" +import { DateInput, type DateInputValue } from "@/Components/Inputs" +import { type DateInputProps } from "@/Components/Inputs/DateInput" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." +import { isUnset } from "@/lib" interface FormDateInputProps extends Omit, - BaseFormInputProps | '', TForm> {} + BaseFormInputProps | "", TForm> {} const FormDateInput = ({ name, @@ -29,7 +29,7 @@ const FormDateInput = ({ }: FormDateInputProps, ) => { const { form, inputName, inputId, value, setValue, error } = useInertiaInput< - Exclude | '', + Exclude | "", TForm >({ name, @@ -40,7 +40,7 @@ const FormDateInput = ({ }) const handleChange = (date: DateInputValue) => { - const dateWithValidEmptyType = (isUnset(date) ? '' : date) + const dateWithValidEmptyType = (isUnset(date) ? "" : date) setValue(dateWithValidEmptyType) diff --git a/app/frontend/Components/Form/Inputs/DateTimeInput.tsx b/app/frontend/Components/Form/Inputs/DateTimeInput.tsx index f006cc0..b52cc7a 100644 --- a/app/frontend/Components/Form/Inputs/DateTimeInput.tsx +++ b/app/frontend/Components/Form/Inputs/DateTimeInput.tsx @@ -1,15 +1,15 @@ -import React from 'react' -import Field from '../Components/Field' -import DateTimeInput, { type DateTimeProps } from '@/Components/Inputs/DateTimeInput' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' -import { isUnset } from '@/lib' +import React from "react" +import Field from "../Components/Field" +import DateTimeInput, { type DateTimeProps } from "@/Components/Inputs/DateTimeInput" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." +import { isUnset } from "@/lib" interface DateTimeFormProps extends Omit, - BaseFormInputProps {} + BaseFormInputProps {} const DateTime = ({ name, @@ -27,7 +27,7 @@ const DateTime = ({ ...props }: DateTimeFormProps, ) => { - const { form, inputName, inputId, value, setValue, error } = useInertiaInput({ + const { form, inputName, inputId, value, setValue, error } = useInertiaInput({ name, model, errorKey, @@ -35,8 +35,8 @@ const DateTime = ({ clearErrorsOnChange, }) - const handleChange = (date: Date|null) => { - const dateWithValidEmptyType = (isUnset(date) ? '' : date) + const handleChange = (date: Date | null) => { + const dateWithValidEmptyType = (isUnset(date) ? "" : date) setValue(dateWithValidEmptyType) @@ -68,7 +68,7 @@ const DateTime = ({ extends - Omit, - Omit, 'span'|OmittedHiddenInputProps> {} + Omit, + Omit, "span" | OmittedHiddenInputProps> {} const FormInput = ( { name, model, onChange, id, defaultValue, ...props }: HiddenInputProps, diff --git a/app/frontend/Components/Form/Inputs/MultiSelect.tsx b/app/frontend/Components/Form/Inputs/MultiSelect.tsx index cce3c05..dd89fbe 100644 --- a/app/frontend/Components/Form/Inputs/MultiSelect.tsx +++ b/app/frontend/Components/Form/Inputs/MultiSelect.tsx @@ -1,17 +1,17 @@ -import React from 'react' -import { NestedObject, UseFormProps, useInertiaInput } from 'use-inertia-form' -import { ConditionalWrapper } from '@/Components' -import Field from '../Components/Field' -import MultiSelect, { type MultiSelectInputProps } from '@/Components/Inputs/MultiSelect' -import { type ComboboxData } from '@mantine/core' -import { type InputConflicts, type BaseFormInputProps } from '.' -import { exclude, isUnset } from '@/lib' -import { coerceArray } from '../../../lib/collections' +import React from "react" +import { NestedObject, UseFormProps, useInertiaInput } from "use-inertia-form" +import { ConditionalWrapper } from "@/Components" +import Field from "../Components/Field" +import MultiSelect, { type MultiSelectInputProps } from "@/Components/Inputs/MultiSelect" +import { type ComboboxData } from "@mantine/core" +import { type InputConflicts, type BaseFormInputProps } from "." +import { exclude, isUnset } from "@/lib" +import { coerceArray } from "../../../lib/collections" -type OmittedDropdownTypes = InputConflicts|'onDropdownOpen'|'onDropdownClose'|'onOptionSubmit'|'onClear' +type OmittedDropdownTypes = InputConflicts | "onDropdownOpen" | "onDropdownClose" | "onOptionSubmit" | "onClear" export interface FormMultiSelectProps extends Omit, - Omit, 'onChange'|'onBlur'|'onFocus'> { + Omit, "onChange" | "onBlur" | "onFocus"> { value?: string[] onChange?: (values: string[], options: ComboboxData, form: UseFormProps) => void @@ -115,7 +115,7 @@ const MultiSelectComponent = ( onDropdownClose={ handleDropdownClose } onOptionSubmit={ handleOptionSubmit } wrapper={ false } - { ...exclude(props, 'value') } + { ...exclude(props, "value") } /> ) diff --git a/app/frontend/Components/Form/Inputs/NumberInput.tsx b/app/frontend/Components/Form/Inputs/NumberInput.tsx index f3216fc..7742dc5 100644 --- a/app/frontend/Components/Form/Inputs/NumberInput.tsx +++ b/app/frontend/Components/Form/Inputs/NumberInput.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import NumberInput, { type NumberInputProps } from '@/Components/Inputs/NumberInput' -import Field from '../Components/Field' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import NumberInput, { type NumberInputProps } from "@/Components/Inputs/NumberInput" +import Field from "../Components/Field" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormNumberInputProps extends @@ -35,7 +35,7 @@ const FormInput = ( clearErrorsOnChange, }) - const handleChange = (val: string|number) => { + const handleChange = (val: string | number) => { const v = Number(val) setValue(v) diff --git a/app/frontend/Components/Form/Inputs/PasswordInput.tsx b/app/frontend/Components/Form/Inputs/PasswordInput.tsx index 84192b1..3030c11 100644 --- a/app/frontend/Components/Form/Inputs/PasswordInput.tsx +++ b/app/frontend/Components/Form/Inputs/PasswordInput.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import PasswordInput, { type PasswordInputProps } from '@/Components/Inputs/PasswordInput' -import Field from '../Components/Field' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import PasswordInput, { type PasswordInputProps } from "@/Components/Inputs/PasswordInput" +import Field from "../Components/Field" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormPasswordInputProps extends diff --git a/app/frontend/Components/Form/Inputs/Radio/Group.tsx b/app/frontend/Components/Form/Inputs/Radio/Group.tsx new file mode 100644 index 0000000..7544006 --- /dev/null +++ b/app/frontend/Components/Form/Inputs/Radio/Group.tsx @@ -0,0 +1,34 @@ +import React from "react" +import { useInertiaInput } from "use-inertia-form" +import { Radio } from "@/Components/Inputs" +import { type RadioGroupProps } from "@mantine/core" + +export interface FormRadioGroupProps extends RadioGroupProps { + name: string + model?: string +} + +const FormRadioGroup = ({ + children, + name, + model, + ...props +}: FormRadioGroupProps) => { + const { value, setValue } = useInertiaInput({ name, model }) + + const handleValueChange = (vals: string) => { + setValue(vals) + } + + return ( + + { children } + + ) +} + +export default FormRadioGroup diff --git a/app/frontend/Components/Form/Inputs/Radio/Radio.tsx b/app/frontend/Components/Form/Inputs/Radio/Radio.tsx new file mode 100644 index 0000000..5ba893f --- /dev/null +++ b/app/frontend/Components/Form/Inputs/Radio/Radio.tsx @@ -0,0 +1,60 @@ +import React from "react" +import { useForm, useInertiaInput, type NestedObject } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { Field } from "@/Components/Form" +import RadioInput, { type RadioProps } from "@/Components/Inputs/Radio" +import FormRadioGroup from "./Group" +import { type BaseFormInputProps } from ".." + +export interface FormRadioProps + extends + Omit, + Omit, "name"> {} + +const FormRadioComponent = ( + { + value, + onChange, + onBlur, + onFocus, + id, + required, + className, + model, + field = true, + style, + wrapperProps, + errorKey, + defaultValue, + clearErrorsOnChange, + ...props + }: FormRadioProps, +) => { + const form = useForm() + + const handleChange = (e: React.ChangeEvent) => { + onChange?.(value, form) + } + + const handleBlur = () => { + onBlur?.(value, form) + } + + return ( + onFocus?.(value, form) } + style={ [{ padding: "14px 10px" }, style] } + wrapper={ false } + { ...props } + /> + ) +} + +FormRadioComponent.Group = FormRadioGroup + +export default FormRadioComponent diff --git a/app/frontend/Components/Form/Inputs/Radio/index.tsx b/app/frontend/Components/Form/Inputs/Radio/index.tsx new file mode 100644 index 0000000..e3c0568 --- /dev/null +++ b/app/frontend/Components/Form/Inputs/Radio/index.tsx @@ -0,0 +1,4 @@ +export { Radio as GroupedRadio } from "@/Components/Inputs" + +import FormRadioInput from "./Radio" +export default FormRadioInput diff --git a/app/frontend/Components/Form/Inputs/RichText.tsx b/app/frontend/Components/Form/Inputs/RichText.tsx index 11b4e79..15d2c13 100644 --- a/app/frontend/Components/Form/Inputs/RichText.tsx +++ b/app/frontend/Components/Form/Inputs/RichText.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import Field from '../Components/Field' -import RichTextInput, { type RichTextInputProps } from '@/Components/Inputs/RichText' -import cx from 'clsx' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import Field from "../Components/Field" +import RichTextInput, { type RichTextInputProps } from "@/Components/Inputs/RichText" +import cx from "clsx" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormRichTextInputProps extends diff --git a/app/frontend/Components/Form/Inputs/SegmentedControl.tsx b/app/frontend/Components/Form/Inputs/SegmentedControl.tsx index 4cb618f..5924cac 100644 --- a/app/frontend/Components/Form/Inputs/SegmentedControl.tsx +++ b/app/frontend/Components/Form/Inputs/SegmentedControl.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import SegmentedControl, { type SegmentedControlProps } from '@/Components/Inputs/SegmentedControl' -import Field from '../Components/Field' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import SegmentedControl, { type SegmentedControlProps } from "@/Components/Inputs/SegmentedControl" +import Field from "../Components/Field" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormSegmentedControlProps extends diff --git a/app/frontend/Components/Form/Inputs/Select.tsx b/app/frontend/Components/Form/Inputs/Select.tsx index b57a1f0..084f452 100644 --- a/app/frontend/Components/Form/Inputs/Select.tsx +++ b/app/frontend/Components/Form/Inputs/Select.tsx @@ -1,28 +1,28 @@ -import React from 'react' -import { useInertiaInput, type UseFormProps, NestedObject } from 'use-inertia-form' -import Field from '../Components/Field' -import { type ComboboxData, type ComboboxItem, type ComboboxItemGroup } from '@mantine/core' -import { exclude } from '@/lib' -import { ConditionalWrapper, Group } from '@/Components' -import SelectInput, { type SelectInputProps } from '@/Components/Inputs/Select' -import { type BaseFormInputProps } from '.' +import React from "react" +import { useInertiaInput, type UseFormProps, NestedObject } from "use-inertia-form" +import Field from "../Components/Field" +import { type ComboboxData, type ComboboxItem, type ComboboxItemGroup } from "@mantine/core" +import { exclude } from "@/lib" +import { ConditionalWrapper, Group } from "@/Components" +import SelectInput, { type SelectInputProps } from "@/Components/Inputs/Select" +import { type BaseFormInputProps } from "." export type SelectOption = string | ComboboxItem | ComboboxItemGroup export { type ComboboxData, ComboboxItem, ComboboxItemGroup } -type OmittedOverwrittenTypes = 'onFocus'|'onBlur'|'onChange'|'onClear'|'onDropdownOpen'|'onDropdownClose'|'onOptionSubmit' +type OmittedOverwrittenTypes = "onFocus" | "onBlur" | "onChange" | "onClear" | "onDropdownOpen" | "onDropdownClose" | "onOptionSubmit" export interface FormSelectProps extends - Omit, + Omit, Omit, OmittedOverwrittenTypes> { - onChange?: (option: SelectOption|null, options: ComboboxData, form: UseFormProps) => void - onBlur?: (option: SelectOption|null, options: ComboboxData, form: UseFormProps) => void - onFocus?: (option: SelectOption|null, options: ComboboxData, form: UseFormProps) => void + onChange?: (option: SelectOption | null, options: ComboboxData, form: UseFormProps) => void + onBlur?: (option: SelectOption | null, options: ComboboxData, form: UseFormProps) => void + onFocus?: (option: SelectOption | null, options: ComboboxData, form: UseFormProps) => void onClear?: (options: ComboboxData, form: UseFormProps) => void onDropdownOpen?: (options: ComboboxData, form: UseFormProps) => void onDropdownClose?: (options: ComboboxData, form: UseFormProps) => void - onOptionSubmit?: (option: SelectOption|null, options: ComboboxData, form: UseFormProps) => void + onOptionSubmit?: (option: SelectOption | null, options: ComboboxData, form: UseFormProps) => void endpoint?: string newForm?: React.ReactElement field?: boolean @@ -62,8 +62,8 @@ const Select = ( clearErrorsOnChange, }) - const handleChange = (option: string|null) => { - setValue(option ? option : '') + const handleChange = (option: string | null) => { + setValue(option ? option : "") onChange?.(option, options || [], form) } @@ -133,7 +133,7 @@ const Select = ( error={ error } options={ options } wrapper={ false } - { ...exclude(props, 'value') } + { ...exclude(props, "value") } /> diff --git a/app/frontend/Components/Form/Inputs/SwatchInput.tsx b/app/frontend/Components/Form/Inputs/SwatchInput.tsx index e4ab779..91c920c 100644 --- a/app/frontend/Components/Form/Inputs/SwatchInput.tsx +++ b/app/frontend/Components/Form/Inputs/SwatchInput.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import SwatchInput, { type SwatchInputProps } from '@/Components/Inputs/SwatchInput' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import Field from '../Components/Field' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import SwatchInput, { type SwatchInputProps } from "@/Components/Inputs/SwatchInput" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import Field from "../Components/Field" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormSwatchInputProps extends diff --git a/app/frontend/Components/Form/Inputs/Switch.tsx b/app/frontend/Components/Form/Inputs/Switch.tsx index 3bf087e..2e0517b 100644 --- a/app/frontend/Components/Form/Inputs/Switch.tsx +++ b/app/frontend/Components/Form/Inputs/Switch.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import Field from '../Components/Field' -import SwitchInput, { type SwitchProps } from '@/Components/Inputs/Switch' -import { NestedObject, useInertiaInput } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import Field from "../Components/Field" +import SwitchInput, { type SwitchProps } from "@/Components/Inputs/Switch" +import { NestedObject, useInertiaInput } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormSwitchProps extends diff --git a/app/frontend/Components/Form/Inputs/TextInput.tsx b/app/frontend/Components/Form/Inputs/TextInput.tsx index 6a4bb57..abfdba7 100644 --- a/app/frontend/Components/Form/Inputs/TextInput.tsx +++ b/app/frontend/Components/Form/Inputs/TextInput.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import TextInput, { type TextInputProps } from '@/Components/Inputs/TextInput' -import Field from '../Components/Field' -import { useInertiaInput, type NestedObject } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { type InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import TextInput, { type TextInputProps } from "@/Components/Inputs/TextInput" +import Field from "../Components/Field" +import { useInertiaInput, type NestedObject } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { type InputConflicts, type BaseFormInputProps } from "." interface FormTextInputProps extends diff --git a/app/frontend/Components/Form/Inputs/Textarea.tsx b/app/frontend/Components/Form/Inputs/Textarea.tsx index 6e5d3dc..d82aa9f 100644 --- a/app/frontend/Components/Form/Inputs/Textarea.tsx +++ b/app/frontend/Components/Form/Inputs/Textarea.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import Field from '../Components/Field' -import TextareaInput, { type TextareaProps } from '@/Components/Inputs/Textarea' -import cx from 'clsx' -import { useInertiaInput, type NestedObject } from 'use-inertia-form' -import ConditionalWrapper from '@/Components/ConditionalWrapper' -import { InputConflicts, type BaseFormInputProps } from '.' +import React from "react" +import Field from "../Components/Field" +import TextareaInput, { type TextareaProps } from "@/Components/Inputs/Textarea" +import cx from "clsx" +import { useInertiaInput, type NestedObject } from "use-inertia-form" +import ConditionalWrapper from "@/Components/ConditionalWrapper" +import { InputConflicts, type BaseFormInputProps } from "." interface FormTextareaProps extends diff --git a/app/frontend/Components/Form/Inputs/index.ts b/app/frontend/Components/Form/Inputs/index.ts index 92464ac..1a99c6c 100644 --- a/app/frontend/Components/Form/Inputs/index.ts +++ b/app/frontend/Components/Form/Inputs/index.ts @@ -1,30 +1,30 @@ -import { NestedObject, UseFormProps, UseInertiaInputProps } from 'use-inertia-form' +import { NestedObject, UseFormProps, UseInertiaInputProps } from "use-inertia-form" -export { default as Autocomplete } from './Autocomplete' -export { default as CurrencyInput } from './CurrencyInput' -export { default as DateInput } from './DateInput' -export { default as DateTimeInput } from './DateTimeInput' -export { default as HiddenInput } from './HiddenInput' -export { default as MultiSelect } from './MultiSelect' -export { default as NumberInput } from './NumberInput' -export { default as PasswordInput } from './PasswordInput' -export { default as SegmentedControl } from './SegmentedControl' -export { default as RichText } from './RichText' -export { default as Select } from './Select' -export { default as SwatchInput } from './SwatchInput' -export { default as Switch } from './Switch' -export { default as TextInput } from './TextInput' -export { default as Textarea } from './Textarea' +export { default as Autocomplete } from "./Autocomplete" +export { default as CurrencyInput } from "./CurrencyInput" +export { default as DateInput } from "./DateInput" +export { default as DateTimeInput } from "./DateTimeInput" +export { default as HiddenInput } from "./HiddenInput" +export { default as MultiSelect } from "./MultiSelect" +export { default as NumberInput } from "./NumberInput" +export { default as PasswordInput } from "./PasswordInput" +export { default as Radio } from "./Radio" +export { default as RichText } from "./RichText" +export { default as SegmentedControl } from "./SegmentedControl" +export { default as Select } from "./Select" +export { default as SwatchInput } from "./SwatchInput" +export { default as Switch } from "./Switch" +export { default as TextInput } from "./TextInput" +export { default as Textarea } from "./Textarea" export { default as Checkbox, GroupedCheckbox, -} from './Checkbox' +} from "./Checkbox" -export type InputConflicts = 'name'|'onChange'|'onBlur'|'onFocus'|'value'|'defaultValue' +export type InputConflicts = "name" | "onChange" | "onBlur" | "onFocus" | "value" | "defaultValue" export interface BaseFormInputProps - extends UseInertiaInputProps -{ + extends UseInertiaInputProps { model?: string errorKey?: string field?: boolean diff --git a/app/frontend/Components/Form/index.ts b/app/frontend/Components/Form/index.ts index a7e944d..df570af 100644 --- a/app/frontend/Components/Form/index.ts +++ b/app/frontend/Components/Form/index.ts @@ -1,4 +1,4 @@ -export { default as Form, type FormProps } from './Form' +export { default as Form, type FormProps } from "./Form" -export * from './Components' -export * from './Inputs' +export * from "./Components" +export * from "./Inputs" diff --git a/app/frontend/Components/Icons/index.tsx b/app/frontend/Components/Icons/index.tsx index 818bead..0621095 100644 --- a/app/frontend/Components/Icons/index.tsx +++ b/app/frontend/Components/Icons/index.tsx @@ -14,7 +14,7 @@ export { TbSquarePlus as ReplenishIcon, TbSun as SunIcon, TbMoonStars as MoonIcon, -} from 'react-icons/tb' +} from "react-icons/tb" export { MdExitToApp as LogoutIcon, @@ -28,63 +28,63 @@ export { MdOutlineDelete as TrashIcon, MdCalendarMonth as CalendarIcon, // MdDragHandle as DraggableIcon, -} from 'react-icons/md' +} from "react-icons/md" export { AiOutlinePlusCircle as PlusCircleIcon, AiOutlineMinusCircle as MinusCircleIcon, -} from 'react-icons/ai' +} from "react-icons/ai" export { BiLinkExternal as ExternalLinkIcon, -} from 'react-icons/bi' +} from "react-icons/bi" export { -} from 'react-icons/io5' +} from "react-icons/io5" export { BsCheck2Circle as CheckIcon, -} from 'react-icons/bs' +} from "react-icons/bs" export { FaHome as HomeIcon, -} from 'react-icons/fa' +} from "react-icons/fa" export { RiDraggable as DraggableIcon, -} from 'react-icons/ri' +} from "react-icons/ri" export { RxClock as ClockIcon, -} from 'react-icons/rx' +} from "react-icons/rx" export { -} from 'react-icons/ti' +} from "react-icons/ti" export { GrFormNext as NextIcon, GrFormPrevious as PreviousIcon, GrMoney as CoinsIcon, -} from 'react-icons/gr' +} from "react-icons/gr" export { TbChevronsDown as DoubleDownArrowIcon, TbChevronDown as DownArrowIcon, -} from 'react-icons/tb' +} from "react-icons/tb" export { HiOutlineUserGroup as UserGroupIcon, -} from 'react-icons/hi' +} from "react-icons/hi" export { -} from 'react-icons/cg' +} from "react-icons/cg" export { VscOrganization as MembersIcon, -} from 'react-icons/vsc' +} from "react-icons/vsc" export { LiaHandsHelpingSolid as HelpingIcon, -} from 'react-icons/lia' +} from "react-icons/lia" diff --git a/app/frontend/Components/Inputs/AutocompleteInput.tsx b/app/frontend/Components/Inputs/AutocompleteInput.tsx index bd6b22d..9a2e745 100644 --- a/app/frontend/Components/Inputs/AutocompleteInput.tsx +++ b/app/frontend/Components/Inputs/AutocompleteInput.tsx @@ -1,7 +1,7 @@ -import React, { forwardRef } from 'react' -import { Autocomplete, type AutocompleteProps as MantineAutocompleteProps } from '@mantine/core' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { Autocomplete, type AutocompleteProps as MantineAutocompleteProps } from "@mantine/core" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface AutocompleteProps extends MantineAutocompleteProps, BaseInputProps {} @@ -17,7 +17,7 @@ const AutocompleteComponent = forwardRef(( ref={ ref } id={ inputId } name={ name } - style={ [{ padding: '14px 10px' }, style] } + style={ [{ padding: "14px 10px" }, style] } wrapperProps={ wrapper ? {} : wrapperProps } onClick={ e => { e.stopPropagation() diff --git a/app/frontend/Components/Inputs/Checkbox.tsx b/app/frontend/Components/Inputs/Checkbox.tsx index 479f08e..1409449 100644 --- a/app/frontend/Components/Inputs/Checkbox.tsx +++ b/app/frontend/Components/Inputs/Checkbox.tsx @@ -1,7 +1,7 @@ -import React, { forwardRef } from 'react' -import { Checkbox, type CheckboxProps as MantineCheckboxProps } from '@mantine/core' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { Checkbox, type CheckboxProps as MantineCheckboxProps } from "@mantine/core" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface CheckboxProps extends MantineCheckboxProps, BaseInputProps {} diff --git a/app/frontend/Components/Inputs/CurrencyInput.tsx b/app/frontend/Components/Inputs/CurrencyInput.tsx index c56f3f9..7378079 100644 --- a/app/frontend/Components/Inputs/CurrencyInput.tsx +++ b/app/frontend/Components/Inputs/CurrencyInput.tsx @@ -1,15 +1,14 @@ -import React, { forwardRef } from 'react' -import { NumberInput, type NumberInputProps } from '@mantine/core' -import Label from './Label' -import InputWrapper from './InputWrapper' -import { type BaseInputProps } from '.' +import React, { forwardRef } from "react" +import { NumberInput, type NumberInputProps } from "@mantine/core" +import Label from "./Label" +import InputWrapper from "./InputWrapper" +import { type BaseInputProps } from "." export interface CurrencyInputProps extends NumberInputProps, - BaseInputProps -{ - symbol?: string|React.ReactNode + BaseInputProps { + symbol?: string | React.ReactNode } const NumberInputComponent = forwardRef(( @@ -19,8 +18,8 @@ const NumberInputComponent = forwardRef(( required = false, id, pattern, - size = 'md', - symbol = '$', + size = "md", + symbol = "$", wrapper, wrapperProps, onClick, diff --git a/app/frontend/Components/Inputs/DateInput.tsx b/app/frontend/Components/Inputs/DateInput.tsx index 3abdc2b..0a0f3d6 100644 --- a/app/frontend/Components/Inputs/DateInput.tsx +++ b/app/frontend/Components/Inputs/DateInput.tsx @@ -1,16 +1,15 @@ -import React, { useEffect, useState, forwardRef } from 'react' -import Label from './Label' -import { DatePickerInput, type DatePickerInputProps } from '@mantine/dates' -import { CalendarIcon } from '@/Components/Icons' -import { type DateInputValue, type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' -import { isUnset } from '@/lib' +import React, { useEffect, useState, forwardRef } from "react" +import Label from "./Label" +import { DatePickerInput, type DatePickerInputProps } from "@mantine/dates" +import { CalendarIcon } from "@/Components/Icons" +import { type DateInputValue, type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" +import { isUnset } from "@/lib" export interface DateInputProps extends - Omit, - BaseInputProps -{ + Omit, + BaseInputProps { name?: string id?: string value: DateInputValue @@ -23,10 +22,10 @@ const DateInputComponent = forwardRef(( label, id, name, - type = 'default', - size = 'md', - radius = 'xs', - valueFormat = 'L', + type = "default", + size = "md", + radius = "xs", + valueFormat = "L", required, wrapper, wrapperProps, @@ -53,7 +52,7 @@ const DateInputComponent = forwardRef(( if(datePickerType === type) return // DatesRangeValue and Date[] are the Array type options - if(type === 'range') { + if(type === "range") { if(Array.isArray(localValue)) { // An array of length 2 indicates it's already a range of dates if(localValue.length !== 2) { diff --git a/app/frontend/Components/Inputs/DateTimeInput.tsx b/app/frontend/Components/Inputs/DateTimeInput.tsx index b2be1ac..69459f9 100644 --- a/app/frontend/Components/Inputs/DateTimeInput.tsx +++ b/app/frontend/Components/Inputs/DateTimeInput.tsx @@ -1,10 +1,10 @@ -import React, { forwardRef } from 'react' -import Label from './Label' -import { DateTimePicker, DateTimePickerProps } from '@mantine/dates' -import { CalendarIcon } from '../Icons' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' -import { isUnset } from '@/lib' +import React, { forwardRef } from "react" +import Label from "./Label" +import { DateTimePicker, DateTimePickerProps } from "@mantine/dates" +import { CalendarIcon } from "../Icons" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" +import { isUnset } from "@/lib" export interface DateTimeProps extends DateTimePickerProps, BaseInputProps { name?: string @@ -21,9 +21,9 @@ const DateTime = forwardRef(( name, required, value, - size = 'md', - radius = 'xs', - valueFormat = 'L LT', + size = "md", + radius = "xs", + valueFormat = "L LT", wrapper, wrapperProps, onClick, diff --git a/app/frontend/Components/Inputs/HiddenInput.tsx b/app/frontend/Components/Inputs/HiddenInput.tsx index 2eea7b1..b9d4f5d 100644 --- a/app/frontend/Components/Inputs/HiddenInput.tsx +++ b/app/frontend/Components/Inputs/HiddenInput.tsx @@ -1,5 +1,5 @@ -import React, { forwardRef } from 'react' -import { InputProps } from 'react-html-props' +import React, { forwardRef } from "react" +import { InputProps } from "react-html-props" const TextInputComponent = forwardRef(( { name, id, ...props }, diff --git a/app/frontend/Components/Inputs/InputWrapper.tsx b/app/frontend/Components/Inputs/InputWrapper.tsx index b8b7896..8106d21 100644 --- a/app/frontend/Components/Inputs/InputWrapper.tsx +++ b/app/frontend/Components/Inputs/InputWrapper.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import ConditionalWrapper from '../ConditionalWrapper' -import { Box } from '@/Components' +import React from "react" +import ConditionalWrapper from "../ConditionalWrapper" +import { Box } from "@/Components" interface InputWrapper { children: React.ReactNode diff --git a/app/frontend/Components/Inputs/Label.tsx b/app/frontend/Components/Inputs/Label.tsx index aa586ab..d97d6c8 100644 --- a/app/frontend/Components/Inputs/Label.tsx +++ b/app/frontend/Components/Inputs/Label.tsx @@ -1,11 +1,10 @@ -import React from 'react' -import { Box, type BoxProps } from '@mantine/core' -import cx from 'clsx' +import React from "react" +import { Box, type BoxProps } from "@mantine/core" +import cx from "clsx" interface LabelProps extends BoxProps, - Omit, keyof BoxProps> -{ + Omit, keyof BoxProps> { required?: boolean } diff --git a/app/frontend/Components/Inputs/MultiSelect.tsx b/app/frontend/Components/Inputs/MultiSelect.tsx index cecb2dd..29908d1 100644 --- a/app/frontend/Components/Inputs/MultiSelect.tsx +++ b/app/frontend/Components/Inputs/MultiSelect.tsx @@ -1,12 +1,12 @@ -import React, { forwardRef } from 'react' -import { MultiSelect, type ComboboxData, type MultiSelectProps as MantineMultiSelectInputProps } from '@mantine/core' -import Label from './Label' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' -import { router } from '@inertiajs/react' -import { coerceArray } from '@/lib' +import React, { forwardRef } from "react" +import { MultiSelect, type ComboboxData, type MultiSelectProps as MantineMultiSelectInputProps } from "@mantine/core" +import Label from "./Label" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" +import { router } from "@inertiajs/react" +import { coerceArray } from "@/lib" -export interface MultiSelectInputProps extends Omit, BaseInputProps { +export interface MultiSelectInputProps extends Omit, BaseInputProps { options?: ComboboxData fetchOnOpen?: string } @@ -18,7 +18,7 @@ const MultiSelectComponent = forwardRef required, id, name, - size = 'md', + size = "md", maxDropdownHeight = 400, wrapper, wrapperProps, diff --git a/app/frontend/Components/Inputs/NumberInput.tsx b/app/frontend/Components/Inputs/NumberInput.tsx index d790ea1..b86f197 100644 --- a/app/frontend/Components/Inputs/NumberInput.tsx +++ b/app/frontend/Components/Inputs/NumberInput.tsx @@ -1,13 +1,13 @@ -import React, { forwardRef } from 'react' -import { NumberInput, type NumberInputProps as MantineNumberInputProps } from '@mantine/core' -import Label from './Label' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { NumberInput, type NumberInputProps as MantineNumberInputProps } from "@mantine/core" +import Label from "./Label" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface NumberInputProps extends MantineNumberInputProps, BaseInputProps {} const NumberInputComponent = forwardRef(( - { label, name, required = false, value, id, size = 'md', wrapper, wrapperProps, onClick, ...props }, + { label, name, required = false, value, id, size = "md", wrapper, wrapperProps, onClick, ...props }, ref, ) => { const inputId = id || name diff --git a/app/frontend/Components/Inputs/PasswordInput.tsx b/app/frontend/Components/Inputs/PasswordInput.tsx index 2718ca2..47a1e4c 100644 --- a/app/frontend/Components/Inputs/PasswordInput.tsx +++ b/app/frontend/Components/Inputs/PasswordInput.tsx @@ -1,13 +1,13 @@ -import React, { forwardRef } from 'react' -import { PasswordInput, type PasswordInputProps as MantinePasswordInputProps } from '@mantine/core' -import Label from './Label' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { PasswordInput, type PasswordInputProps as MantinePasswordInputProps } from "@mantine/core" +import Label from "./Label" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface PasswordInputProps extends MantinePasswordInputProps, BaseInputProps {} const PasswordInputComponent = forwardRef(( - { label, name, required = false, id, size = 'md', wrapper, wrapperProps, onClick, ...props }, + { label, name, required = false, id, size = "md", wrapper, wrapperProps, onClick, ...props }, ref, ) => { const inputId = id || name diff --git a/app/frontend/Components/Inputs/Radio.tsx b/app/frontend/Components/Inputs/Radio.tsx new file mode 100644 index 0000000..6f07fa5 --- /dev/null +++ b/app/frontend/Components/Inputs/Radio.tsx @@ -0,0 +1,36 @@ +import React, { forwardRef } from "react" +import { Radio, type RadioProps as MantineRadioProps } from "@mantine/core" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" + +export interface RadioProps extends Omit, BaseInputProps { + value: string +} + +type RadioComponentType = React.ForwardRefExoticComponent< + RadioProps & React.RefAttributes +> & { + Group: typeof Radio.Group +}; + +const RadioComponent: RadioComponentType = forwardRef(( + { id, wrapper, wrapperProps, value, ...props }, + ref, +) => { + const inputId = id ?? value + + return ( + + + + ) +}) as RadioComponentType + +RadioComponent.Group = Radio.Group + +export default RadioComponent diff --git a/app/frontend/Components/Inputs/RichText.tsx b/app/frontend/Components/Inputs/RichText.tsx index 03492b4..bbf348b 100644 --- a/app/frontend/Components/Inputs/RichText.tsx +++ b/app/frontend/Components/Inputs/RichText.tsx @@ -1,8 +1,8 @@ -import React, { forwardRef } from 'react' -import RichTextEditor, { type RichTextEditorProps } from '../RichTextEditor' -import Label from './Label' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import RichTextEditor, { type RichTextEditorProps } from "../RichTextEditor" +import Label from "./Label" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface RichTextInputProps extends RichTextEditorProps, BaseInputProps { label?: React.ReactNode diff --git a/app/frontend/Components/Inputs/SegmentedControl.tsx b/app/frontend/Components/Inputs/SegmentedControl.tsx index 223ab81..b8bd80e 100644 --- a/app/frontend/Components/Inputs/SegmentedControl.tsx +++ b/app/frontend/Components/Inputs/SegmentedControl.tsx @@ -1,17 +1,17 @@ -import React, { forwardRef } from 'react' +import React, { forwardRef } from "react" import { SegmentedControl, useMantineTheme, type SegmentedControlProps as MantineSegmentedControlProps, type SegmentedControlItem, -} from '@mantine/core' -import Label from './Label' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +} from "@mantine/core" +import Label from "./Label" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" -export interface SegmentedControlProps extends Omit, BaseInputProps { +export interface SegmentedControlProps extends Omit, BaseInputProps { label?: string - labelPosition?: 'start'|'end' + labelPosition?: "start" | "end" name: string options: SegmentedControlItem[] id?: string @@ -21,7 +21,7 @@ export interface SegmentedControlProps extends Omit(( { label, - labelPosition = 'start', + labelPosition = "start", options, name, id, @@ -40,7 +40,7 @@ const SegmentedControlComponent = forwardRef - { label && labelPosition === 'start' && } + { label && labelPosition === "start" && } - { label && labelPosition === 'end' && } + { label && labelPosition === "end" && } ) }) diff --git a/app/frontend/Components/Inputs/Select.tsx b/app/frontend/Components/Inputs/Select.tsx index 78189c8..07d28cd 100644 --- a/app/frontend/Components/Inputs/Select.tsx +++ b/app/frontend/Components/Inputs/Select.tsx @@ -1,12 +1,12 @@ -import React, { forwardRef } from 'react' -import { Select, type ComboboxData, type SelectProps } from '@mantine/core' -import { router } from '@inertiajs/react' -import { coerceArray } from '@/lib' -import { type BaseInputProps } from '.' -import Label from './Label' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { Select, type ComboboxData, type SelectProps } from "@mantine/core" +import { router } from "@inertiajs/react" +import { coerceArray } from "@/lib" +import { type BaseInputProps } from "." +import Label from "./Label" +import InputWrapper from "./InputWrapper" -export interface SelectInputProps extends Omit, BaseInputProps { +export interface SelectInputProps extends Omit, BaseInputProps { options?: ComboboxData fetchOnOpen?: string } @@ -18,7 +18,7 @@ const SelectComponent = forwardRef(( required, id, name, - size = 'md', + size = "md", maxDropdownHeight = 400, fetchOnOpen, onDropdownOpen, diff --git a/app/frontend/Components/Inputs/SwatchInput.tsx b/app/frontend/Components/Inputs/SwatchInput.tsx index 8a7e077..e86f53a 100644 --- a/app/frontend/Components/Inputs/SwatchInput.tsx +++ b/app/frontend/Components/Inputs/SwatchInput.tsx @@ -1,12 +1,12 @@ -import React, { forwardRef, useState } from 'react' -import HiddenInput from './HiddenInput' -import SwatchPicker from '../SwatchPicker' -import Label from './Label' -import { InputProps } from 'react-html-props' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef, useState } from "react" +import HiddenInput from "./HiddenInput" +import SwatchPicker from "../SwatchPicker" +import Label from "./Label" +import { InputProps } from "react-html-props" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" -export interface SwatchInputProps extends Omit, BaseInputProps { +export interface SwatchInputProps extends Omit, BaseInputProps { label?: React.ReactNode initialValue?: string onChange?: (color: string) => void @@ -17,7 +17,7 @@ const SwatchInput = forwardRef(( { label, id, name, required, initialValue, onChange, wrapper, wrapperProps, ...props }, ref, ) => { - const [color, setColor] = useState(initialValue || '') + const [color, setColor] = useState(initialValue || "") const handleChange = (color: string) => { setColor(color) diff --git a/app/frontend/Components/Inputs/Switch.tsx b/app/frontend/Components/Inputs/Switch.tsx index 6c0c0ce..f104384 100644 --- a/app/frontend/Components/Inputs/Switch.tsx +++ b/app/frontend/Components/Inputs/Switch.tsx @@ -1,7 +1,7 @@ -import React, { forwardRef } from 'react' -import { Switch, type SwitchProps as MantineSwitchProps } from '@mantine/core' -import { type BaseInputProps } from '.' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { Switch, type SwitchProps as MantineSwitchProps } from "@mantine/core" +import { type BaseInputProps } from "." +import InputWrapper from "./InputWrapper" export interface SwitchProps extends MantineSwitchProps, BaseInputProps {} @@ -18,7 +18,7 @@ const SwitchComponent = forwardRef(( id={ inputId } name={ name } required={ props.required } - style={ [{ padding: '14px 10px' }, style] } + style={ [{ padding: "14px 10px" }, style] } onClick={ e => { e.stopPropagation() onClick?.(e) diff --git a/app/frontend/Components/Inputs/TextInput.tsx b/app/frontend/Components/Inputs/TextInput.tsx index 3d7ceb5..a6afe10 100644 --- a/app/frontend/Components/Inputs/TextInput.tsx +++ b/app/frontend/Components/Inputs/TextInput.tsx @@ -1,10 +1,10 @@ -import React, { forwardRef, useState } from 'react' -import { TextInput, type TextInputProps as MantineTextInputProps } from '@mantine/core' -import { type BaseInputProps } from '.' -import Label from './Label' -import InputWrapper from './InputWrapper' -import { CrossIcon } from '../Icons' -import { isUnset } from '@/lib' +import React, { forwardRef, useState } from "react" +import { TextInput, type TextInputProps as MantineTextInputProps } from "@mantine/core" +import { type BaseInputProps } from "." +import Label from "./Label" +import InputWrapper from "./InputWrapper" +import { CrossIcon } from "../Icons" +import { isUnset } from "@/lib" export interface TextInputProps extends MantineTextInputProps, BaseInputProps { clearable?: boolean @@ -16,7 +16,7 @@ const TextInputComponent = forwardRef(( label, required = false, id, - size = 'md', + size = "md", wrapper, wrapperProps, clearable = false, @@ -29,7 +29,7 @@ const TextInputComponent = forwardRef(( ref, ) => { // Manage value as a local state to enable clearable feature - const [localValue, setLocalValue] = useState(value || '') + const [localValue, setLocalValue] = useState(value || "") const handleChange = (e: React.ChangeEvent) => { if(onChange) { @@ -42,7 +42,7 @@ const TextInputComponent = forwardRef(( const handleClear = () => { const fakeEvent = { target: { - value: '', + value: "", }, } as React.ChangeEvent handleChange(fakeEvent) diff --git a/app/frontend/Components/Inputs/Textarea.tsx b/app/frontend/Components/Inputs/Textarea.tsx index 6bd0c61..cb672ef 100644 --- a/app/frontend/Components/Inputs/Textarea.tsx +++ b/app/frontend/Components/Inputs/Textarea.tsx @@ -1,8 +1,8 @@ -import React, { forwardRef } from 'react' -import { Textarea, type TextareaProps as MantineTextareaProps } from '@mantine/core' -import { type BaseInputProps } from '.' -import Label from './Label' -import InputWrapper from './InputWrapper' +import React, { forwardRef } from "react" +import { Textarea, type TextareaProps as MantineTextareaProps } from "@mantine/core" +import { type BaseInputProps } from "." +import Label from "./Label" +import InputWrapper from "./InputWrapper" export interface TextareaProps extends MantineTextareaProps, BaseInputProps {} diff --git a/app/frontend/Components/Inputs/index.ts b/app/frontend/Components/Inputs/index.ts index bfefcbe..4df3466 100644 --- a/app/frontend/Components/Inputs/index.ts +++ b/app/frontend/Components/Inputs/index.ts @@ -1,20 +1,21 @@ -import { type DateValue, type DatesRangeValue } from '@mantine/dates' +import { type DateValue, type DatesRangeValue } from "@mantine/dates" -export { default as AutocompleteInput } from './AutocompleteInput' -export { default as Checkbox } from './Checkbox' -export { default as CurrencyInput } from './CurrencyInput' -export { default as DateInput } from './DateInput' -export { default as DateTimeInput } from './DateTimeInput' -export { default as HiddenInput } from './HiddenInput' -export { default as MultiSelect } from './MultiSelect' -export { default as NumberInput } from './NumberInput' -export { default as PasswordInput } from './PasswordInput' -export { default as SegmentedControl } from './SegmentedControl' -export { default as RichText } from './RichText' -export { default as Select } from './Select' -export { default as SwatchInput } from './SwatchInput' -export { default as Textarea } from './Textarea' -export { default as TextInput } from './TextInput' +export { default as AutocompleteInput } from "./AutocompleteInput" +export { default as Checkbox } from "./Checkbox" +export { default as CurrencyInput } from "./CurrencyInput" +export { default as DateInput } from "./DateInput" +export { default as DateTimeInput } from "./DateTimeInput" +export { default as HiddenInput } from "./HiddenInput" +export { default as MultiSelect } from "./MultiSelect" +export { default as NumberInput } from "./NumberInput" +export { default as PasswordInput } from "./PasswordInput" +export { default as Radio } from "./Radio" +export { default as RichText } from "./RichText" +export { default as SegmentedControl } from "./SegmentedControl" +export { default as Select } from "./Select" +export { default as SwatchInput } from "./SwatchInput" +export { default as Textarea } from "./Textarea" +export { default as TextInput } from "./TextInput" export interface BaseInputProps { wrapper?: boolean diff --git a/app/frontend/Components/Label/index.tsx b/app/frontend/Components/Label/index.tsx index c013439..4f27864 100644 --- a/app/frontend/Components/Label/index.tsx +++ b/app/frontend/Components/Label/index.tsx @@ -1,11 +1,10 @@ -import React from 'react' -import { Box, type BoxProps } from '@mantine/core' -import cx from 'clsx' +import React from "react" +import { Box, type BoxProps } from "@mantine/core" +import cx from "clsx" interface LabelProps extends BoxProps, - Omit, keyof BoxProps> -{ + Omit, keyof BoxProps> { required?: boolean } diff --git a/app/frontend/Components/Link/AnchorLink.tsx b/app/frontend/Components/Link/AnchorLink.tsx index b4d1fae..18bb5ef 100644 --- a/app/frontend/Components/Link/AnchorLink.tsx +++ b/app/frontend/Components/Link/AnchorLink.tsx @@ -1,10 +1,10 @@ -import React, { forwardRef } from 'react' -import { Link, type InertiaLinkProps } from '@inertiajs/react' -import { Anchor, type AnchorProps } from '@mantine/core' +import React, { forwardRef } from "react" +import { Link, type InertiaLinkProps } from "@inertiajs/react" +import { Anchor, type AnchorProps } from "@mantine/core" export interface AnchorLinkProps - extends Omit, - Omit { + extends Omit, + Omit { } diff --git a/app/frontend/Components/Link/ExternalLink.tsx b/app/frontend/Components/Link/ExternalLink.tsx index f6bcfb7..99b9dad 100644 --- a/app/frontend/Components/Link/ExternalLink.tsx +++ b/app/frontend/Components/Link/ExternalLink.tsx @@ -1,15 +1,15 @@ -import React, { forwardRef } from 'react' -import normalizeUrl from 'normalize-url' -import { ExternalLinkIcon } from '@/Components/Icons' -import { Anchor, type AnchorProps } from '@mantine/core' -import * as classes from './Link.css' -import cx from 'clsx' +import React, { forwardRef } from "react" +import normalizeUrl from "normalize-url" +import { ExternalLinkIcon } from "@/Components/Icons" +import { Anchor, type AnchorProps } from "@mantine/core" +import * as classes from "./Link.css" +import cx from "clsx" interface ExternalLinkProps extends AnchorProps, - Omit, keyof AnchorProps> { + Omit, keyof AnchorProps> { href: string - as?: 'a'|'button' + as?: "a" | "button" disabled?: boolean } @@ -21,7 +21,7 @@ const ExternalLink = forwardRef(( return ( + visit?: Omit buttonProps?: ButtonProps disabled?: boolean } @@ -20,7 +20,7 @@ const InertiaLinkComponent = forwardRef(( { children, href, - as = 'a', + as = "a", method, visit, buttonProps, @@ -44,19 +44,19 @@ const InertiaLinkComponent = forwardRef(( const mergedButtonProps = Object.assign( { disabled }, - exclude(buttonProps, 'onClick'), - exclude(props, ['classNames', 'styles', 'vars', 'onClick']), + exclude(buttonProps, "onClick"), + exclude(props, ["classNames", "styles", "vars", "onClick"]), ) - const processedHref = disabled ? '#' : href + const processedHref = disabled ? "#" : href - if((method !== undefined && method !== 'get')) { + if((method !== undefined && method !== "get")) { return } - if(as === 'button') { + if(as === "button") { return - ) -}) - -export default ButtonControl diff --git a/app/frontend/Features/Control/Control.css.ts b/app/frontend/Features/Control/Control.css.ts deleted file mode 100644 index 9bf8931..0000000 --- a/app/frontend/Features/Control/Control.css.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { vars } from '@/lib' -import { css } from '@linaria/core' - -const highlightBorderPx = 4 - -export const lastButtonClicked = css` - border: ${highlightBorderPx}px solid ${vars.colors.green[4]}; - margin: calc(${vars.spacing.xs} - ${highlightBorderPx}px); -` diff --git a/app/frontend/Features/Control/Slider/index.tsx b/app/frontend/Features/Control/Slider/index.tsx deleted file mode 100644 index dc60f41..0000000 --- a/app/frontend/Features/Control/Slider/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import { Slider } from '@/Components' -import { type SliderProps } from '@mantine/core' -import { ControlProps } from '..' -import { controlRoute, controlTitle } from '../lib' - -interface SliderControlProps extends SliderProps, ControlProps {} - -const SliderControl = ({ edit, control, ...props }: SliderControlProps) => { - const route = controlRoute(control) - - return ( - - { controlTitle(control) } - - ) -} - -export default SliderControl diff --git a/app/frontend/Features/Control/Spacer/index.tsx b/app/frontend/Features/Control/Spacer/index.tsx deleted file mode 100644 index 2bd9c52..0000000 --- a/app/frontend/Features/Control/Spacer/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import { Box } from '@/Components' -import { type ControlProps } from '..' - -const SpacerControl = ({ edit = false, ...props }: ControlProps) => { - return ( - - ) -} - -export default SpacerControl diff --git a/app/frontend/Features/Control/index.tsx b/app/frontend/Features/Control/index.tsx deleted file mode 100644 index 4448077..0000000 --- a/app/frontend/Features/Control/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { forwardRef } from 'react' -import ButtonControl from './Button' -import SliderControl from './Slider' -import SpacerControl from './Spacer' -import { type BoxProps } from '@mantine/core' - -import cx from 'clsx' -import * as classes from './Control.css' -// import { ConditionalWrapper } from '@/Components' - -interface BaseControlProps extends BoxProps { - children?: React.ReactNode -} - -type ShowControlProps = BaseControlProps & { - edit?: false | undefined - control: Schema.ControlsShow -} - -type EditControlProps = BaseControlProps & { - edit?: true - control: Schema.ControlsFormData -} - -export type ControlProps = - T extends { edit: true } - ? EditControlProps - : ShowControlProps - -const Control = forwardRef(( - { control, edit, className, ...props }, - ref, -) => { - const sharedProps = { - className: cx(className), - ref, - } - - switch(control.control_type) { - case 'button': - return ( - - ) - - case 'slider': - return ( - - ) - - case 'spacer': - return ( - - - ) - - default: - return <> - } -}) - -export default Control - -// const WrappedControl = ({ edit, ...props }) => { -// ( - -// )} -// > - -// -// } diff --git a/app/frontend/Features/Controls/Control/components/Button.tsx b/app/frontend/Features/Controls/Control/components/Button.tsx new file mode 100644 index 0000000..8a3160a --- /dev/null +++ b/app/frontend/Features/Controls/Control/components/Button.tsx @@ -0,0 +1,51 @@ +import React from "react" +import axios from "axios" +import { Button } from "@/Components" +import { useLocalStorage } from "@/lib/hooks" +import { controlRoute } from "../lib" +import { type ControlProps } from ".." + +import cx from "clsx" +import * as classes from "../../Controls.css" + +const ControlButton = ({ + control, + disable, + className, + ...props +}: ControlProps) => { + const [lastButtonClicked, setLastButtonClicked] = useLocalStorage({ + key: "last-button-clicked", + defaultValue: undefined, + }) + + const handleButtonClick = (e: React.MouseEvent) => { + e.preventDefault() + + // Do nothing if disabled or the control has not been persisted + if(disable || !control?.id) return + + const route = controlRoute(control) + + if(!route) return + + axios.put(route) + + setLastButtonClicked(control.id) + } + + return ( + + ) +} + +export default ControlButton diff --git a/app/frontend/Features/Controls/Control/components/Slider.tsx b/app/frontend/Features/Controls/Control/components/Slider.tsx new file mode 100644 index 0000000..1bb90e7 --- /dev/null +++ b/app/frontend/Features/Controls/Control/components/Slider.tsx @@ -0,0 +1,18 @@ +import React from "react" +import { Box } from "@/Components" +import { type ControlProps } from ".." + +import cx from "clsx" + +export type ControlSpacerBaseProps = ControlProps & {} + +const ControlSpacerBase = ({ control, disable, className, ...props }: ControlSpacerBaseProps) => { + return ( + + ) +} + +export default ControlSpacerBase diff --git a/app/frontend/Features/Controls/Control/components/Spacer.tsx b/app/frontend/Features/Controls/Control/components/Spacer.tsx new file mode 100644 index 0000000..d43a95d --- /dev/null +++ b/app/frontend/Features/Controls/Control/components/Spacer.tsx @@ -0,0 +1,15 @@ +import { Box } from "@/Components" +import { type ControlProps } from ".." + +import cx from "clsx" + +const ControlSpacerBase = ({ control, disable, className, ...props }: ControlProps) => { + return ( + + ) +} + +export default ControlSpacerBase diff --git a/app/frontend/Features/Controls/Control/index.tsx b/app/frontend/Features/Controls/Control/index.tsx new file mode 100644 index 0000000..3a07c7d --- /dev/null +++ b/app/frontend/Features/Controls/Control/index.tsx @@ -0,0 +1,38 @@ +import React from "react" +import ButtonControl from "./components/Button" +import SliderControl from "./components/Slider" +import SpacerControl from "./components/Spacer" + +import cx from "clsx" + +export interface ControlProps { + control: Schema.ControlsFormData | Schema.ControlsShow + disable?: boolean + className?: string + onClick?: (e: React.MouseEvent) => void +} + +type ControlComponent = (props: ControlProps & { + control: Schema.ControlsFormData | Schema.ControlsShow +}) => React.ReactNode + +const CONTROL_COMPONENTS: Record = { + button: ButtonControl, + slider: SliderControl, + spacer: SpacerControl, +} as const + + +const Control = ({ control, className, ...props }: ControlProps) => { + const ControlComponent = CONTROL_COMPONENTS[control.control_type] || React.Fragment + + return ( + + ) +} + +export default Control diff --git a/app/frontend/Features/Control/lib.ts b/app/frontend/Features/Controls/Control/lib.ts similarity index 94% rename from app/frontend/Features/Control/lib.ts rename to app/frontend/Features/Controls/Control/lib.ts index 5bdd495..de59016 100644 --- a/app/frontend/Features/Control/lib.ts +++ b/app/frontend/Features/Controls/Control/lib.ts @@ -1,4 +1,4 @@ -import { Routes } from '@/lib' +import { Routes } from "@/lib" export const controlRoute = (control: Partial) => { if(control?.protocol?.slug) { diff --git a/app/frontend/Features/Controls/ControlContainer.tsx b/app/frontend/Features/Controls/ControlContainer.tsx new file mode 100644 index 0000000..f9db306 --- /dev/null +++ b/app/frontend/Features/Controls/ControlContainer.tsx @@ -0,0 +1,19 @@ +import { Box } from "@/Components" + +import cx from "clsx" +import * as classes from "./Controls.css" + +interface ControlContainerProps { + children: React.ReactNode + className?: string +} + +const ControlContainer = ({ children, className }: ControlContainerProps) => { + return ( + + { children } + + ) +} + +export default ControlContainer diff --git a/app/frontend/Features/Controls/Controls.css.ts b/app/frontend/Features/Controls/Controls.css.ts new file mode 100644 index 0000000..c05a197 --- /dev/null +++ b/app/frontend/Features/Controls/Controls.css.ts @@ -0,0 +1,26 @@ +import { vars } from "@/lib" +import { css } from "@linaria/core" + +const highlightBorderPx = 4 + +export const controlContainer = css` + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + gap: ${vars.spacing.md}; + width: 100%; + padding: ${vars.spacing.md}; + + .control { + &.spacer {} + + &.slider {} + + &.button { + width: 100%; + } + } +` + +export const lastButtonClicked = css` + border: ${highlightBorderPx}px solid ${vars.colors.green[4]}; +` diff --git a/app/frontend/Features/AddControlsInterface/AddControlsInterface.css.ts b/app/frontend/Features/Controls/_AddControlsInterface/AddControlsInterface.css.ts similarity index 51% rename from app/frontend/Features/AddControlsInterface/AddControlsInterface.css.ts rename to app/frontend/Features/Controls/_AddControlsInterface/AddControlsInterface.css.ts index 1814c91..8dd2451 100644 --- a/app/frontend/Features/AddControlsInterface/AddControlsInterface.css.ts +++ b/app/frontend/Features/Controls/_AddControlsInterface/AddControlsInterface.css.ts @@ -1,5 +1,5 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" export const controls = css` position: fixed; diff --git a/app/frontend/Features/AddControlsInterface/ButtonControl.tsx b/app/frontend/Features/Controls/_AddControlsInterface/ButtonControl.tsx similarity index 50% rename from app/frontend/Features/AddControlsInterface/ButtonControl.tsx rename to app/frontend/Features/Controls/_AddControlsInterface/ButtonControl.tsx index ee23082..26ea97b 100644 --- a/app/frontend/Features/AddControlsInterface/ButtonControl.tsx +++ b/app/frontend/Features/Controls/_AddControlsInterface/ButtonControl.tsx @@ -1,19 +1,19 @@ -import React from 'react' -import { useDraggable } from '@dnd-kit/core' -import { Button, ButtonProps } from '@mantine/core' +import React from "react" +import { useDraggable } from "@dnd-kit/core" +import { Button, ButtonProps } from "@mantine/core" -interface ButtonControlProps extends ButtonProps { - -} +interface ButtonControlProps extends ButtonProps { } const ButtonControl = ({ ...props }: ButtonControlProps) => { const { attributes, listeners, setNodeRef, transform } = useDraggable({ - id: 'button', + id: "button", }) - const style = transform ? { - transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`, - } : undefined + const style = transform + ? { + transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`, + } + : undefined return (
diff --git a/app/frontend/Features/AddControlsInterface/SliderControl.tsx b/app/frontend/Features/Controls/_AddControlsInterface/SliderControl.tsx similarity index 54% rename from app/frontend/Features/AddControlsInterface/SliderControl.tsx rename to app/frontend/Features/Controls/_AddControlsInterface/SliderControl.tsx index 2d5608d..d99051f 100644 --- a/app/frontend/Features/AddControlsInterface/SliderControl.tsx +++ b/app/frontend/Features/Controls/_AddControlsInterface/SliderControl.tsx @@ -1,15 +1,17 @@ -import React from 'react' -import { useDraggable } from '@dnd-kit/core' -import { Slider, Text } from '@mantine/core' +import React from "react" +import { useDraggable } from "@dnd-kit/core" +import { Slider, Text } from "@mantine/core" const SliderControl = () => { const { attributes, listeners, setNodeRef, transform } = useDraggable({ - id: 'slider', + id: "slider", }) - const style = transform ? { - transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`, - } : undefined + const style = transform + ? { + transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`, + } + : undefined return ( <> @@ -19,7 +21,9 @@ const SliderControl = () => { value={ 50 } { ...listeners } { ...attributes } - >Slider + > + Slider +
Slider diff --git a/app/frontend/Features/Controls/_AddControlsInterface/SpacerControl.tsx b/app/frontend/Features/Controls/_AddControlsInterface/SpacerControl.tsx new file mode 100644 index 0000000..e75384c --- /dev/null +++ b/app/frontend/Features/Controls/_AddControlsInterface/SpacerControl.tsx @@ -0,0 +1,30 @@ +import React from "react" +import { useDraggable } from "@dnd-kit/core" +import { Box, Slider, Text } from "@mantine/core" + +const SpacerControl = () => { + const { attributes, listeners, setNodeRef, transform } = useDraggable({ + id: "spacer", + }) + + const style = transform + ? { + transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`, + } + : undefined + + return ( + <> +
+ + Spacer + +
+ + ) +} + +export default SpacerControl diff --git a/app/frontend/Features/AddControlsInterface/index.tsx b/app/frontend/Features/Controls/_AddControlsInterface/index.tsx similarity index 50% rename from app/frontend/Features/AddControlsInterface/index.tsx rename to app/frontend/Features/Controls/_AddControlsInterface/index.tsx index 4d20092..69d1322 100644 --- a/app/frontend/Features/AddControlsInterface/index.tsx +++ b/app/frontend/Features/Controls/_AddControlsInterface/index.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import { Paper } from '@mantine/core' -import cx from 'clsx' -import * as classes from './AddControlsInterface.css' -import ButtonControl from './ButtonControl' -import SliderControl from './SliderControl' -import SpacerControl from './SpacerControl' +import React from "react" +import { Paper } from "@mantine/core" +import cx from "clsx" +import * as classes from "./AddControlsInterface.css" +import ButtonControl from "./ButtonControl" +import SliderControl from "./SliderControl" +import SpacerControl from "./SpacerControl" const AddControlsInterface = () => { return ( diff --git a/app/frontend/Features/Controls/index.ts b/app/frontend/Features/Controls/index.ts new file mode 100644 index 0000000..439b32c --- /dev/null +++ b/app/frontend/Features/Controls/index.ts @@ -0,0 +1,2 @@ +export { default as Control } from "./Control" +export { default as ControlContainer } from "./ControlContainer" diff --git a/app/frontend/Features/IndexPageTemplate/IndexPage.css.ts b/app/frontend/Features/IndexPageTemplate/IndexPage.css.ts index 3c5c4f3..96fb60b 100644 --- a/app/frontend/Features/IndexPageTemplate/IndexPage.css.ts +++ b/app/frontend/Features/IndexPageTemplate/IndexPage.css.ts @@ -1,5 +1,5 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" export const title = css` flex: 1 1 100%; diff --git a/app/frontend/Features/IndexPageTemplate/TableTitleSection.tsx b/app/frontend/Features/IndexPageTemplate/TableTitleSection.tsx index cc1a2c0..33ba678 100644 --- a/app/frontend/Features/IndexPageTemplate/TableTitleSection.tsx +++ b/app/frontend/Features/IndexPageTemplate/TableTitleSection.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import { useTableContext } from '@/Components/Table/TableContext' -import { Title, Group, Divider } from '@mantine/core' -import { Menu } from '@/Components' -import { TrashIcon } from '@/Components/Icons' -import { router } from '@inertiajs/react' -import { IconType } from 'react-icons' +import React from "react" +import { useTableContext } from "@/Components/Table/TableContext" +import { Title, Group, Divider } from "@mantine/core" +import { Menu } from "@/Components" +import { TrashIcon } from "@/Components/Icons" +import { router } from "@inertiajs/react" +import { IconType } from "react-icons" // import * as classes from './IndexPage.css' @@ -25,7 +25,7 @@ const IndexTableTitleSection = ({ children, title, deleteRoute, menuOptions }: I const deleteRecords = () => { router.visit(deleteRoute, { - method: 'delete', + method: "delete", data: { ids: Array.from(selected) }, }) } diff --git a/app/frontend/Features/IndexPageTemplate/index.tsx b/app/frontend/Features/IndexPageTemplate/index.tsx index 72a758a..593d33d 100644 --- a/app/frontend/Features/IndexPageTemplate/index.tsx +++ b/app/frontend/Features/IndexPageTemplate/index.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Page, Table } from '@/Components' -import TableTitleSection, { IIndexTableTitleSectionProps } from './TableTitleSection' -import { type Pagination } from '@/types' +import React from "react" +import { Page, Table } from "@/Components" +import TableTitleSection, { IIndexTableTitleSectionProps } from "./TableTitleSection" +import { type Pagination } from "@/types" interface IIndexPageTemplateProps extends IIndexTableTitleSectionProps { model: string diff --git a/app/frontend/Features/index.ts b/app/frontend/Features/index.ts index 0c42f00..0a6b6c8 100644 --- a/app/frontend/Features/index.ts +++ b/app/frontend/Features/index.ts @@ -1,2 +1,2 @@ -export { default as AddControlsInterface } from './AddControlsInterface' -export { default as IndexPageTemplate } from './IndexPageTemplate' +export { default as AddControlsInterface } from "./Controls/_AddControlsInterface" +export { default as IndexPageTemplate } from "./IndexPageTemplate" diff --git a/app/frontend/Layouts/AppLayout/AppLayout.css.ts b/app/frontend/Layouts/AppLayout/AppLayout.css.ts index 5b5de6a..a35b691 100644 --- a/app/frontend/Layouts/AppLayout/AppLayout.css.ts +++ b/app/frontend/Layouts/AppLayout/AppLayout.css.ts @@ -1,5 +1,5 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" export const layout = css` display: flex; diff --git a/app/frontend/Layouts/AppLayout/index.tsx b/app/frontend/Layouts/AppLayout/index.tsx index 783a345..2d120e1 100644 --- a/app/frontend/Layouts/AppLayout/index.tsx +++ b/app/frontend/Layouts/AppLayout/index.tsx @@ -1,13 +1,14 @@ -import React from 'react' -import { AppShell, Burger, Container, Divider, Link, Menu, Title } from '@/Components' -import { useAuth } from '@/lib/hooks' -import { Routes } from '@/lib' +import React from "react" +import { AppShell, Burger, Container, Divider, Link, Menu, Title } from "@/Components" +import { ToggleColorSchemeButton } from "@/Components/Button" +import { HomeIcon } from "@/Components/Icons" +import { Routes } from "@/lib" +import { useAuth } from "@/lib/hooks" +import { LayoutProps } from "../index" -import * as classes from './AppLayout.css' -import { HomeIcon } from '@/Components/Icons' -import { ToggleColorSchemeButton } from '@/Components/Button' +import * as classes from "./AppLayout.css" -const AppLayout = ({ children }: { children: any }) => { +const AppLayout = ({ children }: LayoutProps) => { const { isLoggedIn } = useAuth() return ( diff --git a/app/frontend/Layouts/AuthLayout/AuthLayout.css.ts b/app/frontend/Layouts/AuthLayout/AuthLayout.css.ts index 65afcb9..0231504 100644 --- a/app/frontend/Layouts/AuthLayout/AuthLayout.css.ts +++ b/app/frontend/Layouts/AuthLayout/AuthLayout.css.ts @@ -1,5 +1,5 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" export const authLayout = css` height: 100%; diff --git a/app/frontend/Layouts/AuthLayout/index.tsx b/app/frontend/Layouts/AuthLayout/index.tsx index 56cdc34..ac47093 100644 --- a/app/frontend/Layouts/AuthLayout/index.tsx +++ b/app/frontend/Layouts/AuthLayout/index.tsx @@ -1,6 +1,8 @@ -import React from 'react' -import { Box, Center, Flex, Paper } from '@/Components' -import * as classes from './AuthLayout.css' +import React from "react" +import { Box, Center, Flex, Paper } from "@/Components" + +import cx from "clsx" +import * as classes from "./AuthLayout.css" interface LayoutProps { children: any @@ -8,7 +10,7 @@ interface LayoutProps { const Layout = ({ children }: LayoutProps) => { return ( - +
{ children } diff --git a/app/frontend/Layouts/Providers/ContrastingColorsSetup.tsx b/app/frontend/Layouts/Providers/ContrastingColorsSetup.tsx new file mode 100644 index 0000000..82de4ad --- /dev/null +++ b/app/frontend/Layouts/Providers/ContrastingColorsSetup.tsx @@ -0,0 +1,17 @@ +import { useEffect } from "react" +import useStore from "@/lib/store" +import { useComputedColorScheme, useMantineTheme } from "@mantine/core" + +const ContrastingColorsSetup = () => { + const theme = useMantineTheme() + const colorScheme = useComputedColorScheme() + const setThemeData = useStore((state) => state.setThemeData) + + useEffect(() => { + setThemeData(theme, colorScheme) + }, [theme, colorScheme, setThemeData]) + + return <> +} + +export default ContrastingColorsSetup diff --git a/app/frontend/Layouts/Providers/IconProvider.tsx b/app/frontend/Layouts/Providers/IconProvider.tsx index 8be71b8..f0a7ac4 100644 --- a/app/frontend/Layouts/Providers/IconProvider.tsx +++ b/app/frontend/Layouts/Providers/IconProvider.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import { IconContext } from 'react-icons' +import React from "react" +import { IconContext } from "react-icons" interface IIconProviderProps { children: React.ReactNode @@ -7,8 +7,8 @@ interface IIconProviderProps { } const IconProvider = ({ children, value = { - className: 'react-icon', - size: '1rem', + className: "react-icon", + size: "1rem", } }: IIconProviderProps) => { return ( diff --git a/app/frontend/Layouts/Providers/QueryProvider.tsx b/app/frontend/Layouts/Providers/QueryProvider.tsx index 59bc564..a96b9df 100644 --- a/app/frontend/Layouts/Providers/QueryProvider.tsx +++ b/app/frontend/Layouts/Providers/QueryProvider.tsx @@ -1,6 +1,5 @@ -import React from 'react' -import { QueryClient, QueryClientProvider } from '@tanstack/react-query' -import { ReactQueryDevtools } from '@tanstack/react-query-devtools' +import { QueryClient, QueryClientProvider } from "@tanstack/react-query" +import { ReactQueryDevtools } from "@tanstack/react-query-devtools" interface QueryProviderProps { children: React.ReactNode @@ -8,12 +7,10 @@ interface QueryProviderProps { const queryClient = new QueryClient() -const isDev = false // process.env.NODE_ENV && process?.env?.NODE_ENV === 'development' - const QueryProvider = ({ children }: QueryProviderProps) => { return ( - { isDev && } + { process.env.NODE_ENV && process.env.NODE_ENV === "development" && } { children } ) diff --git a/app/frontend/Layouts/Providers/UiFrameworkProvider.tsx b/app/frontend/Layouts/Providers/UiFrameworkProvider.tsx index 3960e52..28d314a 100644 --- a/app/frontend/Layouts/Providers/UiFrameworkProvider.tsx +++ b/app/frontend/Layouts/Providers/UiFrameworkProvider.tsx @@ -1,17 +1,19 @@ -import React, { useEffect, useMemo } from 'react' -import { MantineProvider, createTheme, px, type CSSVariablesResolver } from '@mantine/core' -import { type CSSVariables } from '@mantine/core/lib/core/MantineProvider/convert-css-variables/css-variables-object-to-string' -import { ModalsProvider } from '@mantine/modals' -import { Notifications } from '@mantine/notifications' -import { theme as themeObject, vars } from '@/lib/theme' -import useLayoutStore from '@/lib/store/LayoutStore' -import { toKebabCase } from '@/lib' +import React, { useMemo } from "react" +import { MantineProvider, createTheme, type CSSVariablesResolver } from "@mantine/core" +import { type CSSVariables } from "@mantine/core/lib/core/MantineProvider/convert-css-variables/css-variables-object-to-string" +import { ModalsProvider } from "@mantine/modals" +import { Notifications } from "@mantine/notifications" +import { theme as themeObject, vars } from "@/lib/theme" +import useStore from "@/lib/store" +import { toKebabCase } from "@/lib" +import { useInit } from "@/lib/hooks" +import { Flash } from "@/Components" const UiFrameworkProvider = ({ children }: { children: React.ReactNode }) => { /** * Primary color customization */ - const { primaryColor } = useLayoutStore() + const { primaryColor } = useStore() const theme = useMemo(() => createTheme({ ...themeObject, primaryColor }), [primaryColor]) @@ -39,19 +41,12 @@ const UiFrameworkProvider = ({ children }: { children: React.ReactNode }) => { }, [primaryColor]) - useEffect(() => { - /* eslint-disable no-console */ - if(process.env.NODE_ENV && process.env.NODE_ENV === 'development') { - console.log({ theme }) + useInit(() => { + if(import.meta.env.MODE === "development") { console.log({ vars }) - - console.log({ breakpointsPx: Object.fromEntries( - Object.entries(theme.breakpoints ?? []).map(([key, val]) => [key, px(val)]), - ) }) } - /* eslint-enable */ - }, []) - + }) + console.log({ children }) return ( { cssVariablesResolver={ cssVariablesResolver } > - + + { children } diff --git a/app/frontend/Layouts/Providers/global.css b/app/frontend/Layouts/Providers/global.css deleted file mode 100644 index c7971a0..0000000 --- a/app/frontend/Layouts/Providers/global.css +++ /dev/null @@ -1,18 +0,0 @@ -html, body, #app { - height: 100%; -} - - -/* *::selection { - background-color: var(--mantine-theme-primary-color-2); -} */ - -.hidden { - display: 'none'; -} - -/* .fullHeight { - display: 'flex'; - flexDirection: 'column'; - height: `calc(100vh - ${theme.other.header.height}px - ${theme.other.footer.height}px - 20px)`; -} */ diff --git a/app/frontend/Layouts/Providers/global.css.ts b/app/frontend/Layouts/Providers/global.css.ts new file mode 100644 index 0000000..221df3e --- /dev/null +++ b/app/frontend/Layouts/Providers/global.css.ts @@ -0,0 +1,41 @@ +import { css } from "@linaria/core" +import { vars } from "@/lib/theme" + +export const globals = css` + :global() { + html, body, #app { + height: 100%; + } + + *::selection { + background-color: ${vars.colors.primary[2]}; // [2] + } + + .hidden { + display: none; + } + + .fullHeight { + display: flex; + flex-direction: column; + } + + label { + font-size: 1rem; + } + + em { + font-style: italic; + } + + b { + font-weight: bold; + } + + strong { + font-weight: bold; + } + } + + +` diff --git a/app/frontend/Layouts/Providers/index.tsx b/app/frontend/Layouts/Providers/index.tsx index 625e06c..bcdbcfb 100644 --- a/app/frontend/Layouts/Providers/index.tsx +++ b/app/frontend/Layouts/Providers/index.tsx @@ -1,13 +1,15 @@ -import React from 'react' -import IconProvider from './IconProvider' -import UiFrameworkProvider from './UiFrameworkProvider' +import React from "react" +import IconProvider from "./IconProvider" +import UiFrameworkProvider from "./UiFrameworkProvider" +import QueryProvider from "./QueryProvider" +import ContrastingColorsSetup from "./ContrastingColorsSetup" -import './reset.css' -import '@mantine/core/styles.css' -import '@mantine/tiptap/styles.css' -import '@mantine/notifications/styles.css' -import './global.css' -import QueryProvider from './QueryProvider' +import "./reset.css" +import "./global.css" +import "@mantine/core/styles.css" +import "@mantine/tiptap/styles.css" +import "@mantine/dates/styles.css" +import "@mantine/notifications/styles.css" interface IProviderProps { children?: React.ReactNode @@ -17,6 +19,7 @@ const Providers = ({ children }: IProviderProps) => { return ( + { children } diff --git a/app/frontend/Layouts/PublicLayout/index.tsx b/app/frontend/Layouts/PublicLayout/index.tsx index 4516b6e..ff5b5cd 100644 --- a/app/frontend/Layouts/PublicLayout/index.tsx +++ b/app/frontend/Layouts/PublicLayout/index.tsx @@ -1,15 +1,12 @@ -import React from 'react' -import { useDisclosure } from '@mantine/hooks' -import { AppShell, Burger, Skeleton } from '@mantine/core' -import { Group, Link, Box } from '@/Components' -import { CircleDotIcon } from '@/Components/Icons' -import { Routes } from '@/lib' +import React from "react" +import { useDisclosure } from "@mantine/hooks" +import { AppShell, Burger, Skeleton } from "@mantine/core" +import { Group, Link, Box } from "@/Components" +import { CircleDotIcon } from "@/Components/Icons" +import { Routes } from "@/lib" +import { LayoutProps } from "../index" -interface PublicLayoutProps { - children: any -} - -const PublicLayout: React.FC = ({ children }) => { +const PublicLayout = ({ children }: LayoutProps) => { const [opened, { toggle }] = useDisclosure() return ( @@ -17,7 +14,7 @@ const PublicLayout: React.FC = ({ children }) => { header={ { height: { base: 30, md: 50, lg: 60 } } } navbar={ { width: { base: 100, md: 200, lg: 300 }, - breakpoint: 'sm', + breakpoint: "sm", collapsed: { mobile: !opened }, } } padding="md" @@ -34,7 +31,7 @@ const PublicLayout: React.FC = ({ children }) => { - Navigation + Navigation { Array(15) .fill(0) .map((_, index) => ( diff --git a/app/frontend/Layouts/index.tsx b/app/frontend/Layouts/index.tsx index b8190d9..d5cbcbb 100644 --- a/app/frontend/Layouts/index.tsx +++ b/app/frontend/Layouts/index.tsx @@ -1,30 +1,30 @@ -import React from 'react' -import { type PageProps } from '@inertiajs/core' -import Providers from '@/Layouts/Providers' -import { Flash } from '@/Components/Flash' +import Providers from "@/Layouts/Providers" +import { Flash } from "@/Components" -import AppLayout from './AppLayout' -import AuthLayout from './AuthLayout' -import PublicLayout from './PublicLayout' +import BareAppLayout from "./AppLayout" +import BareAuthLayout from "./AuthLayout" +import BarePublicLayout from "./PublicLayout" -import dayjs from 'dayjs' -import localizedFormat from 'dayjs/plugin/localizedFormat' -import duration from 'dayjs/plugin/duration' -import relativeTime from 'dayjs/plugin/relativeTime' +import dayjs from "dayjs" +import localizedFormat from "dayjs/plugin/localizedFormat" +import duration from "dayjs/plugin/duration" +import relativeTime from "dayjs/plugin/relativeTime" dayjs.extend(localizedFormat) dayjs.extend(duration) dayjs.extend(relativeTime) -interface LayoutWrapperProps { - children: React.ReactNode +export const LAYOUTS = { + "auth": "auth", + "app": "app", + "public": "public", } -interface InertiaPageProps extends PageProps { - props: LayoutWrapperProps +export interface LayoutProps { + children: any } -const LayoutWrapper = ({ children }: LayoutWrapperProps) => { +export const LayoutWrapper = ({ children }: LayoutProps) => { return ( @@ -33,32 +33,26 @@ const LayoutWrapper = ({ children }: LayoutWrapperProps) => { ) } -const AppLayoutLayout = (page: InertiaPageProps) => { +export const AppLayout = ({ children }: LayoutProps) => { return ( - { page } + { children } ) } -const AuthLayoutLayout = (page: InertiaPageProps) => { +export const AuthLayout = ({ children }: LayoutProps) => { return ( - { page } + { children } ) } -const PublicLayoutLayout = (page: InertiaPageProps) => { +export const PublicLayout = ({ children }: LayoutProps) => { return ( - { page } + { children } ) } - -export { - AppLayoutLayout as AppLayout, - AuthLayoutLayout as AuthLayout, - PublicLayoutLayout as PublicLayout, -} diff --git a/app/frontend/Pages/Commands/Edit/index.tsx b/app/frontend/Pages/Commands/Edit/index.tsx index e1b9ddf..33ade38 100644 --- a/app/frontend/Pages/Commands/Edit/index.tsx +++ b/app/frontend/Pages/Commands/Edit/index.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import CommandsForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import CommandsForm from "../Form" interface IEditCommandProps { command: Schema.CommandsEdit diff --git a/app/frontend/Pages/Commands/Form.tsx b/app/frontend/Pages/Commands/Form.tsx index 3e678f2..552fa22 100644 --- a/app/frontend/Pages/Commands/Form.tsx +++ b/app/frontend/Pages/Commands/Form.tsx @@ -1,10 +1,10 @@ -import React from 'react' -import { Grid, Text } from '@/Components' -import { Form, TextInput, Submit, RichText, Checkbox, DynamicInputs } from '@/Components/Form' -import { type HTTPVerb, type UseFormProps } from 'use-inertia-form' -import { CommandPayloadTypesDropdown, ServerDropdown } from '@/Components/Dropdowns' -import { exclude } from '@/lib' -import { useListState } from '@mantine/hooks' +import React from "react" +import { Grid, Text } from "@/Components" +import { Form, TextInput, Submit, RichText, Checkbox, DynamicInputs } from "@/Components/Form" +import { type HTTPVerb, type UseFormProps } from "use-inertia-form" +import { CommandPayloadTypesDropdown, ServerDropdown } from "@/Components/Dropdowns" +import { exclude } from "@/lib" +import { useListState } from "@mantine/hooks" type CommandFormData = { command: Schema.CommandsFormData @@ -13,22 +13,22 @@ type CommandFormData = { export interface CommandFormProps { to: string method?: HTTPVerb - onSubmit?: (object: UseFormProps) => boolean|void + onSubmit?: (object: UseFormProps) => boolean | void command?: Schema.CommandsFormData } const emptyCommand: Partial = { - title: '', + title: "", server_id: undefined, - address: '', - description: '', + address: "", + description: "", payload_type: undefined, allow_custom_value: false, command_values: [], } -const CommandForm = ({ method = 'post', command, ...props }: CommandFormProps) => { - const [deletedValues, deletedValueHandlers] = useListState<{ id: string|number, _destroy: boolean}>() +const CommandForm = ({ method = "post", command, ...props }: CommandFormProps) => { + const [deletedValues, deletedValueHandlers] = useListState<{ id: string | number, _destroy: boolean }>() const handleRemoveCommandValue = (record: Schema.CommandValue) => { if(!record?.id) return @@ -48,7 +48,7 @@ const CommandForm = ({ method = 'post', command, ...props }: CommandFormProps) = } } - const formCommand = exclude(command, ['id', 'slug', 'created_at', 'updated_at']) ?? emptyCommand + const formCommand = exclude(command, ["id", "slug", "created_at", "updated_at"]) ?? emptyCommand return (
@@ -105,7 +105,7 @@ const CommandForm = ({ method = 'post', command, ...props }: CommandFormProps) = - { command?.id ? 'Update' : 'Create' } Command + { command?.id ? "Update" : "Create" } Command ) diff --git a/app/frontend/Pages/Commands/Index/index.tsx b/app/frontend/Pages/Commands/Index/index.tsx index 75edab9..8c69eea 100644 --- a/app/frontend/Pages/Commands/Index/index.tsx +++ b/app/frontend/Pages/Commands/Index/index.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Routes } from '@/lib' -import { IndexPageTemplate } from '@/Features' -import { NewIcon } from '@/Components/Icons' -import CommandsTable from '../Table' -import { type Pagination } from '@/types' +import React from "react" +import { Routes } from "@/lib" +import { IndexPageTemplate } from "@/Features" +import { NewIcon } from "@/Components/Icons" +import CommandsTable from "../Table" +import { type Pagination } from "@/types" interface ICommandIndexProps { commands: Schema.CommandsIndex[] @@ -19,7 +19,7 @@ const CommandsIndex = ({ commands, pagination }: ICommandIndexProps) => { pagination={ pagination } deleteRoute={ Routes.commands() } menuOptions={ [ - { label: 'New Command', href: Routes.newCommand(), icon: NewIcon }, + { label: "New Command", href: Routes.newCommand(), icon: NewIcon }, ] } > diff --git a/app/frontend/Pages/Commands/New/index.tsx b/app/frontend/Pages/Commands/New/index.tsx index bbc88f1..657f660 100644 --- a/app/frontend/Pages/Commands/New/index.tsx +++ b/app/frontend/Pages/Commands/New/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import CommandForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import CommandForm from "../Form" interface INewCommandProps { command: Schema.CommandsFormData } const NewCommand = ({ ...data }: INewCommandProps) => { - const title = 'New Command' + const title = "New Command" return ( diff --git a/app/frontend/Pages/Commands/Show/index.tsx b/app/frontend/Pages/Commands/Show/index.tsx index bf38ac9..f061abb 100644 --- a/app/frontend/Pages/Commands/Show/index.tsx +++ b/app/frontend/Pages/Commands/Show/index.tsx @@ -1,15 +1,15 @@ -import React from 'react' -import { Box, Code, DangerousHtml, Group, Title, Link, Menu, Page, Section, List } from '@/Components' -import { Routes } from '@/lib' -import ButtonControl from '@/Features/Control/Button' -import { EditButton } from '@/Components/Button' +import React from "react" +import { Box, Code, DangerousHtml, Group, Title, Link, Menu, Page, Section, List } from "@/Components" +import { Routes } from "@/lib" +import { Control } from "@/Features/Controls" +import { EditButton } from "@/Components/Button" interface ShowCommandProps { command: Schema.CommandsShow } const ShowCommand = ({ command }: ShowCommandProps) => { - const title = command.title ?? 'Command' + const title = command.title ?? "Command" return ( @@ -42,7 +42,7 @@ const ShowCommand = ({ command }: ShowCommandProps) => { { /* { command?.command_values && <> Test: { command.command_values?.map(value => ( - + )) } } */ } diff --git a/app/frontend/Pages/Commands/Table.tsx b/app/frontend/Pages/Commands/Table.tsx index 1a1fe8a..4804c90 100644 --- a/app/frontend/Pages/Commands/Table.tsx +++ b/app/frontend/Pages/Commands/Table.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Table, Link, type TableProps } from '@/Components' -import { DeleteButton, EditButton } from '@/Components/Button' +import React from "react" +import { Routes } from "@/lib" +import { Table, Link, type TableProps, Group } from "@/Components" +import { DeleteButton, EditButton } from "@/Components/Button" const CommandTable = (props: TableProps) => { return ( @@ -32,8 +32,10 @@ const CommandTable = (props: TableProps) => { - - + + + + diff --git a/app/frontend/Pages/Devise/Confirmations/New/index.tsx b/app/frontend/Pages/Devise/Confirmations/New/index.tsx index cbec9d0..08655a6 100644 --- a/app/frontend/Pages/Devise/Confirmations/New/index.tsx +++ b/app/frontend/Pages/Devise/Confirmations/New/index.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Form, TextInput, Submit } from '@/Components/Form' -import { Routes } from '@/lib' -import { Title, Link } from '@/Components' +import React from "react" +import { Form, TextInput, Submit } from "@/Components/Form" +import { Routes } from "@/lib" +import { Title, Link } from "@/Components" interface IConfirmationsNew { user: Schema.User diff --git a/app/frontend/Pages/Devise/Login/Login.css.ts b/app/frontend/Pages/Devise/Login/Login.css.ts index 2f3a7e3..9f87979 100644 --- a/app/frontend/Pages/Devise/Login/Login.css.ts +++ b/app/frontend/Pages/Devise/Login/Login.css.ts @@ -1,6 +1,6 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' -import { rem } from '@mantine/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" +import { rem } from "@mantine/core" export const form = css` .field { diff --git a/app/frontend/Pages/Devise/Login/index.tsx b/app/frontend/Pages/Devise/Login/index.tsx index d2ad117..bfc3c3e 100644 --- a/app/frontend/Pages/Devise/Login/index.tsx +++ b/app/frontend/Pages/Devise/Login/index.tsx @@ -1,9 +1,9 @@ -import React, { useRef } from 'react' -import { Form, Field, TextInput, PasswordInput, Checkbox, Submit } from '@/Components/Form' -import { Routes } from '@/lib' -import { Title, Link } from '@/Components' -import { type UseFormProps } from 'use-inertia-form' -import * as classes from './Login.css' +import React, { useRef } from "react" +import { Form, Field, TextInput, PasswordInput, Checkbox, Submit } from "@/Components/Form" +import { Routes } from "@/lib" +import { Title, Link } from "@/Components" +import { type UseFormProps } from "use-inertia-form" +import * as classes from "./Login.css" type LoginFormData = { user: { @@ -15,15 +15,15 @@ type LoginFormData = { const defaultData = { user: { - email: '', - password: '', + email: "", + password: "", remember_me: false, }, } const Login = () => { const handleSubmit = ({ data }: UseFormProps) => { - if(data.user.email === '' || data.user.password === '') { + if(data.user.email === "" || data.user.password === "") { return false } } diff --git a/app/frontend/Pages/Devise/Passwords/New/index.tsx b/app/frontend/Pages/Devise/Passwords/New/index.tsx index e447eb5..4c13ee2 100644 --- a/app/frontend/Pages/Devise/Passwords/New/index.tsx +++ b/app/frontend/Pages/Devise/Passwords/New/index.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Field, Form, TextInput, Submit } from '@/Components/Form' -import { Routes } from '@/lib' -import { Title, Link } from '@/Components' +import React from "react" +import { Field, Form, TextInput, Submit } from "@/Components/Form" +import { Routes } from "@/lib" +import { Title, Link } from "@/Components" type TPasswordsNewFormData = { email: string @@ -9,7 +9,7 @@ type TPasswordsNewFormData = { const PasswordsNew = () => { const defaultData: TPasswordsNewFormData = { - email: '', + email: "", } return ( diff --git a/app/frontend/Pages/Devise/Register/index.tsx b/app/frontend/Pages/Devise/Register/index.tsx index aca55ba..8577a23 100644 --- a/app/frontend/Pages/Devise/Register/index.tsx +++ b/app/frontend/Pages/Devise/Register/index.tsx @@ -1,8 +1,8 @@ -import React from 'react' -import { Form, TextInput, PasswordInput, Submit, Field } from '@/Components/Form' -import { Routes } from '@/lib' -import { Box, Title, Link, Grid, Text } from '@/Components' -import { type UseFormProps } from 'use-inertia-form' +import React from "react" +import { Form, TextInput, PasswordInput, Submit, Field } from "@/Components/Form" +import { Routes } from "@/lib" +import { Box, Title, Link, Grid, Text } from "@/Components" +import { type UseFormProps } from "use-inertia-form" type RegisterFormData = { user: { @@ -21,32 +21,32 @@ const Register = ({ user, first_run }: RegisterProps) => { const handleFormChange = ({ data }: UseFormProps) => { } - const handlePasswordChange = (value: string|number, { data, getError, clearErrors }: UseFormProps) => { - if(getError('user.password') || getError('user.password_confirmation')) { + const handlePasswordChange = (value: string | number, { data, getError, clearErrors }: UseFormProps) => { + if(getError("user.password") || getError("user.password_confirmation")) { if(data.user.password === data.user.password_confirmation) { - clearErrors('user.password') - clearErrors('user.password_confirmation') + clearErrors("user.password") + clearErrors("user.password_confirmation") } } } const handleSubmit = ({ data, setError, errors, transform }: UseFormProps) => { if(data.user.password !== data.user.password_confirmation) { - setError('user.password_confirmation', 'Passwords must match') + setError("user.password_confirmation", "Passwords must match") return false } } - const handleEmailBlur = (value: string|number, form: UseFormProps) => { + const handleEmailBlur = (value: string | number, form: UseFormProps) => { } return (
{ - return ( - - OSC - This is a placeholder page for the public section of the application. - - ) -} - -export default Home diff --git a/app/frontend/Pages/Protocols/Edit/index.tsx b/app/frontend/Pages/Protocols/Edit/index.tsx index d416111..ed7778f 100644 --- a/app/frontend/Pages/Protocols/Edit/index.tsx +++ b/app/frontend/Pages/Protocols/Edit/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import ProtocolsForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import ProtocolsForm from "../Form" interface IEditProtocolProps { protocol: Schema.ProtocolsEdit } const EditProtocol = ({ protocol }: IEditProtocolProps) => { - const title = `Edit Protocol ${protocol?.title ? `: ${protocol.title}` : ''}` + const title = `Edit Protocol ${protocol?.title ? `: ${protocol.title}` : ""}` return ( diff --git a/app/frontend/Pages/Protocols/Form/CommandInputs.tsx b/app/frontend/Pages/Protocols/Form/CommandInputs.tsx index 53d2f05..3ec75cd 100644 --- a/app/frontend/Pages/Protocols/Form/CommandInputs.tsx +++ b/app/frontend/Pages/Protocols/Form/CommandInputs.tsx @@ -1,11 +1,11 @@ -import React, { useMemo } from 'react' -import { Grid, Label } from '@/Components' -import { NumberInput, TextInput, useDynamicInputContext } from '@/Components/Form' -import { CommandDropdown, CommandValueDropdown } from '@/Components/Dropdowns' -import { useForm } from 'use-inertia-form' -import dayjs from 'dayjs' -import { humanizeDuration } from '@/lib/formatters' -import TextInputComponent from '@/Components/Inputs/TextInput' +import React, { useMemo } from "react" +import { Grid, Label } from "@/Components" +import { NumberInput, TextInput, useDynamicInputContext } from "@/Components/Form" +import { CommandDropdown, CommandValueDropdown } from "@/Components/Dropdowns" +import { useForm } from "use-inertia-form" +import dayjs from "dayjs" +import { humanizeDuration } from "@/lib/formatters" +import TextInputComponent from "@/Components/Inputs/TextInput" interface CommandInputsProps { commands: Schema.CommandsOptions[] @@ -16,7 +16,7 @@ const CommandInputs = ({ commands }: CommandInputsProps) => { const { setData } = useForm() const handleChange = () => { - setData(`protocol.protocols_commands[${index}].command_value_id`, '') + setData(`protocol.protocols_commands[${index}].command_value_id`, "") } const activeCommand = useMemo( @@ -53,9 +53,9 @@ const CommandInputs = ({ commands }: CommandInputsProps) => { diff --git a/app/frontend/Pages/Protocols/Form/SortableFormSection.tsx b/app/frontend/Pages/Protocols/Form/SortableFormSection.tsx index d2ef1a5..5ed46b7 100644 --- a/app/frontend/Pages/Protocols/Form/SortableFormSection.tsx +++ b/app/frontend/Pages/Protocols/Form/SortableFormSection.tsx @@ -1,20 +1,20 @@ -import React, { useMemo, useState } from 'react' +import React, { useMemo, useState } from "react" import { DndContext, useSensor, useSensors, -} from '@dnd-kit/core' -import type { Active, DragEndEvent, DragStartEvent, UniqueIdentifier } from '@dnd-kit/core' +} from "@dnd-kit/core" +import type { Active, DragEndEvent, DragStartEvent, UniqueIdentifier } from "@dnd-kit/core" import { SortableContext, arrayMove, verticalListSortingStrategy, -} from '@dnd-kit/sortable' +} from "@dnd-kit/sortable" // import * as classes from './SortableList.css' -import { useForm } from 'use-inertia-form' -import { createContext } from '@/lib/hooks' -import { FormPointerSensor } from '@/Components/Sortable' +import { useForm } from "use-inertia-form" +import { createContext } from "@/lib/hooks" +import { FormPointerSensor } from "@/Components/Sortable" const [useSortableFormContext, SortableFormContextProvider] = createContext() export { useSortableFormContext } @@ -32,7 +32,7 @@ interface SortableFormSectionProps { const SortableFormSection = ({ children, model, - sortField = 'order', + sortField = "order", }: SortableFormSectionProps) => { const form = useForm() const [active, setActive] = useState(null) diff --git a/app/frontend/Pages/Protocols/Form/index.tsx b/app/frontend/Pages/Protocols/Form/index.tsx index 456e3d2..3579091 100644 --- a/app/frontend/Pages/Protocols/Form/index.tsx +++ b/app/frontend/Pages/Protocols/Form/index.tsx @@ -1,11 +1,11 @@ -import React from 'react' -import { Form, TextInput, Submit, RichText } from '@/Components/Form' -import { UseInertiaFormProps, type HTTPVerb, type UseFormProps } from 'use-inertia-form' -import { Grid } from '@/Components' -import CommandInputs from './CommandInputs' -import { useGetCommands } from '@/queries' -import SortableDynamicInputs from '@/Components/Form/Components/DynamicInputs/SortableDynamicInputs' -import { exclude } from '@/lib' +import React from "react" +import { Form, TextInput, Submit, RichText } from "@/Components/Form" +import { UseInertiaFormProps, type HTTPVerb, type UseFormProps } from "use-inertia-form" +import { Grid } from "@/Components" +import CommandInputs from "./CommandInputs" +import { useGetCommands } from "@/queries" +import SortableDynamicInputs from "@/Components/Form/Components/DynamicInputs/SortableDynamicInputs" +import { exclude } from "@/lib" type ProtocolFormData = { protocol: Schema.ProtocolsFormData @@ -14,11 +14,11 @@ type ProtocolFormData = { export interface IProtocolFormProps { to: string method?: HTTPVerb - onSubmit?: (object: UseFormProps) => boolean|void + onSubmit?: (object: UseFormProps) => boolean | void protocol: Schema.ProtocolsFormData } -const ProtocolForm = ({ method = 'post', protocol, ...props }: IProtocolFormProps) => { +const ProtocolForm = ({ method = "post", protocol, ...props }: IProtocolFormProps) => { const { data: commands } = useGetCommands({ initialData: protocol.commands as Schema.CommandsEdit[], }) @@ -28,13 +28,13 @@ const ProtocolForm = ({ method = 'post', protocol, ...props }: IProtocolFormProp data.protocol.protocols_commands = data.protocol.protocols_commands.map(cmd => { const excludeKeys = []; - (['value', 'delay'] as const).forEach(check => { - if(cmd[check] === '') { + (["value", "delay"] as const).forEach(check => { + if(cmd[check] === "") { excludeKeys.push(check) } }) - return exclude(cmd, 'value') + return exclude(cmd, "value") }) return data @@ -44,13 +44,13 @@ const ProtocolForm = ({ method = 'post', protocol, ...props }: IProtocolFormProp return ( - { protocol.id ? 'Update' : 'Create' } Protocol + { protocol.id ? "Update" : "Create" } Protocol ) diff --git a/app/frontend/Pages/Protocols/Form/protocolFormData.ts b/app/frontend/Pages/Protocols/Form/protocolFormData.ts index acd42ff..06533a5 100644 --- a/app/frontend/Pages/Protocols/Form/protocolFormData.ts +++ b/app/frontend/Pages/Protocols/Form/protocolFormData.ts @@ -1,11 +1,11 @@ -import { exclude } from '@/lib' +import { exclude } from "@/lib" export const transformProtocolFormData = (protocol: Schema.ProtocolsFormData) => { return exclude(protocol, [ - 'id', - 'slug', - 'created_at', - 'updated_at', + "id", + "slug", + "created_at", + "updated_at", // 'commands[].slug', // 'commands[].address', // 'commands[].description', diff --git a/app/frontend/Pages/Protocols/Index/index.tsx b/app/frontend/Pages/Protocols/Index/index.tsx index 599fc82..8e6f656 100644 --- a/app/frontend/Pages/Protocols/Index/index.tsx +++ b/app/frontend/Pages/Protocols/Index/index.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Routes } from '@/lib' -import { IndexPageTemplate } from '@/Features' -import { NewIcon } from '@/Components/Icons' -import ProtocolsTable from '../Table' -import { type Pagination } from '@/types' +import React from "react" +import { Routes } from "@/lib" +import { IndexPageTemplate } from "@/Features" +import { NewIcon } from "@/Components/Icons" +import ProtocolsTable from "../Table" +import { type Pagination } from "@/types" interface IProtocolIndexProps { protocols: Schema.ProtocolsIndex[] @@ -19,7 +19,7 @@ const ProtocolsIndex = ({ protocols, pagination }: IProtocolIndexProps) => { pagination={ pagination } deleteRoute={ Routes.protocols() } menuOptions={ [ - { label: 'New Protocol', href: Routes.newProtocol(), icon: NewIcon }, + { label: "New Protocol", href: Routes.newProtocol(), icon: NewIcon }, ] } > diff --git a/app/frontend/Pages/Protocols/New/index.tsx b/app/frontend/Pages/Protocols/New/index.tsx index b5d4da6..5f26716 100644 --- a/app/frontend/Pages/Protocols/New/index.tsx +++ b/app/frontend/Pages/Protocols/New/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import ProtocolForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import ProtocolForm from "../Form" interface INewProtocolProps { protocol: Schema.ProtocolsFormData } const NewProtocol = ({ ...data }: INewProtocolProps) => { - const title = 'New Protocol' + const title = "New Protocol" return ( diff --git a/app/frontend/Pages/Protocols/Show/index.tsx b/app/frontend/Pages/Protocols/Show/index.tsx index 6d59687..8ef5fed 100644 --- a/app/frontend/Pages/Protocols/Show/index.tsx +++ b/app/frontend/Pages/Protocols/Show/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Box, Code, DangerousHtml, Group, Title, Menu, Page, Section, Table, Link } from '@/Components' -import { Routes } from '@/lib' -import { EditButton } from '@/Components/Button' +import React from "react" +import { Box, Code, DangerousHtml, Group, Title, Menu, Page, Section, Table, Link } from "@/Components" +import { Routes } from "@/lib" +import { EditButton } from "@/Components/Button" interface IShowProtocolProps { protocol: Schema.ProtocolsShow } const ShowProtocol = ({ protocol }: IShowProtocolProps) => { - const title = protocol.title || 'Protocol' + const title = protocol.title || "Protocol" return ( diff --git a/app/frontend/Pages/Protocols/Table.tsx b/app/frontend/Pages/Protocols/Table.tsx index 63eec81..382f6d8 100644 --- a/app/frontend/Pages/Protocols/Table.tsx +++ b/app/frontend/Pages/Protocols/Table.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Table, Link, type TableProps } from '@/Components' -import { DeleteButton, EditButton } from '@/Components/Button' +import React from "react" +import { Routes } from "@/lib" +import { Table, Link, type TableProps, Group } from "@/Components" +import { DeleteButton, EditButton } from "@/Components/Button" const ProtocolTable = (props: TableProps) => { return ( @@ -24,8 +24,10 @@ const ProtocolTable = (props: TableProps) => { { protocol.commands.length } - - + + + + diff --git a/app/frontend/Pages/Screens/Edit/EditControls/Control.css.ts b/app/frontend/Pages/Screens/Edit/EditControls/Control.css.ts deleted file mode 100644 index bfb971f..0000000 --- a/app/frontend/Pages/Screens/Edit/EditControls/Control.css.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { vars } from '@/lib' -import { css } from '@linaria/core' - -export const editButtonIcon = css` - position: absolute; - top: 5px; - right: 13px; - cursor: pointer; - z-index: 100; -` - -export const editControl = css` - cursor: auto; - - &:active { - transform: none; - } -` - -export const editControlWrapper = css` - display: inline-block; - position: relative; -` diff --git a/app/frontend/Pages/Screens/Edit/EditControls/DraggableControl.tsx b/app/frontend/Pages/Screens/Edit/EditControls/DraggableControl.tsx deleted file mode 100644 index 0a71e26..0000000 --- a/app/frontend/Pages/Screens/Edit/EditControls/DraggableControl.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import Control, { ControlProps } from '@/Features/Control' -import { useSortable } from '@dnd-kit/sortable' -import { CSS } from '@dnd-kit/utilities' -import { Box } from '@mantine/core' -import EditControlButton from './EditControlButton' - -import cx from 'clsx' -import * as classes from './Control.css' -import { router } from '@inertiajs/react' - -interface DraggableControlProps extends ControlProps<{edit: true}> {} - -const DraggableControl = ({ control, ...props }: DraggableControlProps) => { - const { - attributes, - listeners, - setNodeRef, - transform, - transition, - } = useSortable({ id: control.id! }) - - return ( - - router.reload() } - /> - - - - ) -} - -export default DraggableControl diff --git a/app/frontend/Pages/Screens/Edit/EditControls/EditControlButton.tsx b/app/frontend/Pages/Screens/Edit/EditControls/EditControlButton.tsx deleted file mode 100644 index 39ae3b4..0000000 --- a/app/frontend/Pages/Screens/Edit/EditControls/EditControlButton.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Box, type BoxProps } from '@mantine/core' -import { EditIcon } from '@/Components/Icons' -import { modals } from '@mantine/modals' -import ControlForm from '@/Features/Control/Form' -import { type ControlProps } from '@/Features/Control' - -import cx from 'clsx' -import * as classes from './Control.css' - -interface EditControlButtonProps extends BoxProps, ControlProps { - onSuccess?: () => void -} - -const EditControlButton = ({ control, onSuccess, ...props }: EditControlButtonProps) => { - - const handleEditButtonClick = (e: React.MouseEvent) => { - e.stopPropagation() - e.preventDefault() - - modals.open({ - title: 'Edit Control', - children: ( - modals.closeAll() } - filter={ ['control.id', 'control.command', 'control.updated_at', 'control.created_at', 'control.command_id', 'control.protocol'] } - onSuccess={ () => { - onSuccess?.() - } } - /> - ), - }) - } - - return ( - - - - ) -} - -export default EditControlButton diff --git a/app/frontend/Pages/Screens/Edit/EditControls/index.tsx b/app/frontend/Pages/Screens/Edit/Form/DndEditControlsInterface.tsx similarity index 55% rename from app/frontend/Pages/Screens/Edit/EditControls/index.tsx rename to app/frontend/Pages/Screens/Edit/Form/DndEditControlsInterface.tsx index cdb411f..f751318 100644 --- a/app/frontend/Pages/Screens/Edit/EditControls/index.tsx +++ b/app/frontend/Pages/Screens/Edit/Form/DndEditControlsInterface.tsx @@ -1,41 +1,40 @@ -import React from 'react' import { DndContext, - type DragEndEvent, useSensors, PointerSensor, useSensor, closestCenter, UniqueIdentifier, -} from '@dnd-kit/core' -import { - arrayMove, - SortableContext, -} from '@dnd-kit/sortable' -import DraggableControl from './DraggableControl' -import { useDynamicInputs, useForm } from 'use-inertia-form' + type DragEndEvent, +} from "@dnd-kit/core" +import { arrayMove, SortableContext } from "@dnd-kit/sortable" +import { useDynamicInputs, useForm } from "use-inertia-form" +import { Control } from "@/Features/Controls" +import EditControlWrapper from "./EditControlWrapper" -interface IEditControlsProps { +interface DndEditControlsInterfaceProps { screen: Schema.ScreensEdit } -const EditControls = ({ screen }: IEditControlsProps) => { - const { addInput, removeInput, paths } = useDynamicInputs({ - model: 'controls', +const DndEditControlsInterface = ({ screen }: DndEditControlsInterfaceProps) => { + const { paths } = useDynamicInputs({ + model: "controls", emptyData: { - title: '', - control_type: '', + title: "", + control_type: "", order: 0, min_value: 0, max_value: 0, - value: '', + value: "", screen_id: screen.id, - protocol_id: '', - command_id: '', - color: '', + protocol_id: "", + command_id: "", + color: "", }, }) - const { getData, setData, model: formModel } = useForm<{screen: Schema.ScreensEdit}>() + + const { getData, setData, model: formModel } = useForm<{ screen: Schema.ScreensEdit }>() + const sensors = useSensors( useSensor(PointerSensor), ) @@ -45,13 +44,13 @@ const EditControls = ({ screen }: IEditControlsProps) => { const handleDragEnd = ({ active, over }: DragEndEvent) => { if(!over || active.id === over.id) return - const controls = getData(controlsPath) as Schema.ControlsEdit[] + const controls = getData(controlsPath) as Schema.ControlsFormData[] const activeIndex = controls.findIndex(el => el.id === active.id) const overIndex = controls.findIndex(el => el.id === over.id) setData(controlsPath, arrayMove( - getData(controlsPath) as Schema.ControlsEdit[], + getData(controlsPath) as Schema.ControlsFormData[], activeIndex, overIndex, ).map((control, i) => { @@ -70,13 +69,18 @@ const EditControls = ({ screen }: IEditControlsProps) => { items={ getData(`${formModel}.controls`) as UniqueIdentifier[] } > { paths.map((path, i) => { - const record = getData(`${formModel}.${path}`) as Schema.ControlsEdit + const record = getData(`${formModel}.${path}`) as Schema.ControlsFormData return ( - + > + + ) }) } @@ -84,4 +88,4 @@ const EditControls = ({ screen }: IEditControlsProps) => { ) } -export default EditControls +export default DndEditControlsInterface diff --git a/app/frontend/Pages/Screens/Edit/Form/EditControlWrapper.tsx b/app/frontend/Pages/Screens/Edit/Form/EditControlWrapper.tsx new file mode 100644 index 0000000..094a887 --- /dev/null +++ b/app/frontend/Pages/Screens/Edit/Form/EditControlWrapper.tsx @@ -0,0 +1,72 @@ +import React from "react" +import { Routes } from "@/lib" +import { useSortable } from "@dnd-kit/sortable" +import { CSS } from "@dnd-kit/utilities" +import { Box } from "@mantine/core" +import { EditIcon } from "@/Components/Icons" +import { modals } from "@mantine/modals" +import ControlForm from "./ScreenControlForm" + +import cx from "clsx" +import * as classes from "./EditControls.css" + +interface EditControlWrapperProps { + children: React.ReactNode + control: Schema.ControlsFormData +} + +const EditControlWrapper = ({ children, control, ...props }: EditControlWrapperProps) => { + const { + attributes, + listeners, + setNodeRef, + transform, + transition, + } = useSortable({ id: control.id! }) + + const handleEditButtonClick = (e: React.MouseEvent) => { + e.stopPropagation() + e.preventDefault() + + modals.open({ + title: "Edit Control", + children: ( + modals.closeAll() } + filter={ ["control.id", "control.command", "control.updated_at", "control.created_at", "control.command_id", "control.protocol"] } + // onSuccess={ () => { + // onSuccess?.() + // } } + /> + ), + }) + } + + return ( + + + + + { children } + + ) +} + +export default EditControlWrapper diff --git a/app/frontend/Pages/Screens/Edit/Form/EditControls.css.ts b/app/frontend/Pages/Screens/Edit/Form/EditControls.css.ts new file mode 100644 index 0000000..e52e512 --- /dev/null +++ b/app/frontend/Pages/Screens/Edit/Form/EditControls.css.ts @@ -0,0 +1,39 @@ +import { vars } from "@/lib" +import { css } from "@linaria/core" + +export const editControlsForm = css` + .control { + &.spacer { + border: 2px dotted ${vars.colors.gray[4]}; + border-radius: ${vars.radius.sm}; + min-height: 100%; + } + + &.slider {} + + &.button { + width: 100%; + } + } +` + +export const editButtonIcon = css` + position: absolute; + top: 5px; + right: 13px; + cursor: pointer; + z-index: 100; +` + +export const editControl = css` + cursor: auto; + + &:active { + transform: none; + } +` + +export const editControlWrapper = css` + display: inline-block; + position: relative; +` diff --git a/app/frontend/Features/Control/Form.tsx b/app/frontend/Pages/Screens/Edit/Form/ScreenControlForm.tsx similarity index 50% rename from app/frontend/Features/Control/Form.tsx rename to app/frontend/Pages/Screens/Edit/Form/ScreenControlForm.tsx index f1f4c67..c5f714a 100644 --- a/app/frontend/Features/Control/Form.tsx +++ b/app/frontend/Pages/Screens/Edit/Form/ScreenControlForm.tsx @@ -1,20 +1,20 @@ -import React, { useState } from 'react' -import { Code, Grid, Paper, ScrollArea, Text } from '@/Components' -import { Form, TextInput, Submit, SwatchInput, FormConsumer } from '@/Components/Form' -import { ProtocolDropdown } from '@/Components/Dropdowns' -import { useGetProtocol } from '@/queries' -import { FormProps } from 'use-inertia-form' +import React, { useState } from "react" +import { Code, Grid, Paper, ScrollArea, Text } from "@/Components" +import { Form, TextInput, Submit, SwatchInput, FormConsumer, Radio } from "@/Components/Form" +import { ProtocolDropdown } from "@/Components/Dropdowns" +import { useGetProtocol } from "@/queries" +import { FormProps } from "use-inertia-form" -type ControlFormData = { - control: Schema.ControlsFormData +type ScreenControlFormData = { + control: Partial } -export interface ControlFormProps extends Omit, 'data'> { +export interface EditScreenControlFormProps extends Omit, "data"> { control?: Schema.ControlsFormData } -const ControlForm = ({ control, ...props }: ControlFormProps) => { - const [showingProtocolSlug, setShowingProtocolSlug] = useState(control?.protocol?.slug || '') +const ScreenControlForm = ({ control, ...props }: EditScreenControlFormProps) => { + const [showingProtocolSlug, setShowingProtocolSlug] = useState(control?.protocol?.slug || "") const { data } = useGetProtocol({ slug: showingProtocolSlug }, { initialData: control?.protocol || {}, @@ -22,7 +22,7 @@ const ControlForm = ({ control, ...props }: ControlFormProps) => { }) return ( - + model="control" data={ control ? { control } : undefined } remember={ false } @@ -31,14 +31,14 @@ const ControlForm = ({ control, ...props }: ControlFormProps) => { - { control?.control_type === 'slider' && <> + { control?.control_type === "slider" && <> } - >{ ({ data }) => <> - { data.control.control_type !== 'spacer' && + >{ ({ data }) => <> + { data.control.control_type !== "spacer" && { const option = options.find(option => option.value === protocol) @@ -55,7 +55,7 @@ const ControlForm = ({ control, ...props }: ControlFormProps) => { { data.commands?.map(command => ( - + { command.address } )) @@ -65,19 +65,26 @@ const ControlForm = ({ control, ...props }: ControlFormProps) => { } - >{ ({ data }) => <> - { data.control.control_type !== 'spacer' && + >{ ({ data }) => <> + { data.control.control_type !== "spacer" && } } - { control?.id ? 'Update' : 'Create' } Control + + + + + + + + { control?.id ? "Update" : "Create" } Control ) } -export default ControlForm +export default ScreenControlForm diff --git a/app/frontend/Pages/Screens/Edit/Form/index.tsx b/app/frontend/Pages/Screens/Edit/Form/index.tsx new file mode 100644 index 0000000..39b1539 --- /dev/null +++ b/app/frontend/Pages/Screens/Edit/Form/index.tsx @@ -0,0 +1,37 @@ +import React from "react" +import { Routes } from "@/lib" +import { Divider } from "@/Components" +import { Form, Submit } from "@/Components/Form" +import DndEditControlsInterface from "./DndEditControlsInterface" +import { ControlContainer } from "@/Features/Controls" + +import cx from "clsx" +import * as classes from "./EditControls.css" + +interface EditScreenFormProps { + screen: Schema.ScreensEdit +} + +const EditScreenForm = ({ screen }: EditScreenFormProps) => { + return ( +
+ + + + + + + + Save Screen Layout + + ) +} + +export default EditScreenForm diff --git a/app/frontend/Pages/Screens/Edit/NewControlMenu/index.tsx b/app/frontend/Pages/Screens/Edit/NewControlMenu/index.tsx index b93da93..d9e9bfe 100644 --- a/app/frontend/Pages/Screens/Edit/NewControlMenu/index.tsx +++ b/app/frontend/Pages/Screens/Edit/NewControlMenu/index.tsx @@ -1,31 +1,37 @@ -import React from 'react' -import { Affix, Button, Menu } from '@/Components' -import ControlForm from '../../../../Features/Control/Form' -import { modals } from '@mantine/modals' -import { Routes } from '@/lib' +import React from "react" +import { Affix, Button, Menu } from "@/Components" +import { modals } from "@mantine/modals" +import { Routes } from "@/lib" +import { useCreateControl } from "@/queries" +import ControlForm from "../Form/ScreenControlForm" -const controlFormFilter = ['control.id', 'control.command', 'control.updated_at', 'control.created_at', 'control.command_id', 'control.protocol'] +const controlFormFilter = ["control.id", "control.command", "control.updated_at", "control.created_at", "control.command_id", "control.protocol"] -type ControlType = 'button'|'spacer'|'slider' +type ControlType = "button" | "spacer" | "slider" interface NewControlMenuProps { - menuId: number + screenId: number | false + menuId?: number } -const NewControlMenu = ({ menuId }: NewControlMenuProps) => { +const NewControlMenu = ({ screenId, menuId }: NewControlMenuProps) => { + const { mutate: createControl } = useCreateControl() + + if(!menuId || !screenId) return <> + const emptyData = (type: ControlType): Schema.ControlsFormData => ({ screen_id: menuId, control_type: type, order: NaN, - title: '', + title: "", }) const handleNewButtonClick = () => { modals.open({ - title: 'Add New Control Button', + title: "Add New Control Button", children: ( modals.closeAll() } @@ -36,17 +42,9 @@ const NewControlMenu = ({ menuId }: NewControlMenuProps) => { } const handleNewSpacerClick = () => { - modals.open({ - title: 'Add New Control Button', - children: ( - modals.closeAll() } - filter={ controlFormFilter } - /> - ), + createControl({ + control_type: "spacer", + screen_id: screenId, }) } @@ -57,17 +55,17 @@ const NewControlMenu = ({ menuId }: NewControlMenuProps) => { - Button - - { /* Slider */ } - { /* + { /* Slider */ } + Spacer - */ } + diff --git a/app/frontend/Pages/Screens/Edit/ScreenControl.css.ts b/app/frontend/Pages/Screens/Edit/ScreenControl.css.ts index afac298..471f7c4 100644 --- a/app/frontend/Pages/Screens/Edit/ScreenControl.css.ts +++ b/app/frontend/Pages/Screens/Edit/ScreenControl.css.ts @@ -1,5 +1,5 @@ -import { vars } from '@/lib/theme' -import { css } from '@linaria/core' +import { vars } from "@/lib/theme" +import { css } from "@linaria/core" export const droppable = css` width: 100%; diff --git a/app/frontend/Pages/Screens/Edit/ScreenTabControls/EditScreenTabButton.tsx b/app/frontend/Pages/Screens/Edit/ScreenTabControls/EditScreenTabButton.tsx index f23d29d..8dc6a8a 100644 --- a/app/frontend/Pages/Screens/Edit/ScreenTabControls/EditScreenTabButton.tsx +++ b/app/frontend/Pages/Screens/Edit/ScreenTabControls/EditScreenTabButton.tsx @@ -1,13 +1,13 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Accordion, Box, Divider, Text } from '@/Components' -import { EditIcon } from '@/Components/Icons' -import { modals } from '@mantine/modals' -import ScreenForm from '../../Form' -import { DeleteButton } from '@/Components/Button' +import React from "react" +import { Routes } from "@/lib" +import { Accordion, Box, Divider, Text } from "@/Components" +import { EditIcon } from "@/Components/Icons" +import { modals } from "@mantine/modals" +import ScreenForm from "../../New/Form" +import { DeleteButton } from "@/Components/Button" interface EditScreenTabButtonProps { - screen: Schema.ScreensEdit + screen: Schema.ScreensOptions onSuccess?: () => void } @@ -18,7 +18,7 @@ const EditScreenTabButton = ({ screen, onSuccess, ...props }: EditScreenTabButto e.preventDefault() modals.open({ - title: 'Edit Screen', + title: "Edit Screen", children: ( <> { const handleNewScreenModalTrigger = () => { modals.open({ - title: 'Create a New Screen', + title: "Create a New Screen", children: ( { +const EditScreen = ({ screen, screens }: EditScreenProps) => { const getScreenId = (slug: string): number | false => { const currentScreen = screens.find(s => s.slug === slug) if(currentScreen?.id) { @@ -32,10 +31,10 @@ const EditScreen = ({ screen, screens }: IEditScreenProps) => { const [currentTabId, setCurrentTabId] = useState(getScreenId(paths[1])) - const title = 'Edit Screen' + const title = "Edit Screen" const droppable = useDroppable({ - id: 'screen_droppable', + id: "screen_droppable", }) const handleTabChange = (value: string | null) => { @@ -82,29 +81,15 @@ const EditScreen = ({ screen, screens }: IEditScreenProps) => { className={ cx(classes.tabsPanel) } ref={ droppable.setNodeRef } > - { iScreen.id === screen.id && ( -
- - - Save Screen Layout - - ) } + { iScreen.id === screen.id && } )) } - +
+
) diff --git a/app/frontend/Pages/Screens/Form.tsx b/app/frontend/Pages/Screens/New/Form.tsx similarity index 55% rename from app/frontend/Pages/Screens/Form.tsx rename to app/frontend/Pages/Screens/New/Form.tsx index f028521..7fc4659 100644 --- a/app/frontend/Pages/Screens/Form.tsx +++ b/app/frontend/Pages/Screens/New/Form.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Form, TextInput, Submit } from '@/Components/Form' -import { Grid } from '@/Components' -import { type HTTPVerb, type UseFormProps } from 'use-inertia-form' +import React from "react" +import { Form, TextInput, Submit } from "@/Components/Form" +import { Grid } from "@/Components" +import { type HTTPVerb, type UseFormProps } from "use-inertia-form" type TScreenFormData = { screen: Schema.ScreensFormData @@ -10,11 +10,11 @@ type TScreenFormData = { export interface ScreenFormProps { to: string method?: HTTPVerb - onSubmit?: (object: UseFormProps) => boolean|void + onSubmit?: (object: UseFormProps) => boolean | void screen?: Schema.ScreensFormData } -const ScreenForm = ({ method = 'post', screen, ...props }: ScreenFormProps) => { +const ScreenForm = ({ method = "post", screen, ...props }: ScreenFormProps) => { return (
{ - { screen?.id ? 'Update' : 'Create' } Screen + { screen?.id ? "Update" : "Create" } Screen
diff --git a/app/frontend/Pages/Screens/New/index.tsx b/app/frontend/Pages/Screens/New/index.tsx index 5f11a05..1b5b7b6 100644 --- a/app/frontend/Pages/Screens/New/index.tsx +++ b/app/frontend/Pages/Screens/New/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import ScreenForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import NewScreenForm from "./Form" interface INewScreenProps { screen: Schema.ScreensFormData } const NewScreen = ({ ...data }: INewScreenProps) => { - const title = 'New Screen' + const title = "New Screen" return ( @@ -16,7 +16,7 @@ const NewScreen = ({ ...data }: INewScreenProps) => {
{ title } - diff --git a/app/frontend/Pages/Screens/Show/index.tsx b/app/frontend/Pages/Screens/Show/index.tsx index fa7479e..a4b721e 100644 --- a/app/frontend/Pages/Screens/Show/index.tsx +++ b/app/frontend/Pages/Screens/Show/index.tsx @@ -1,9 +1,10 @@ -import React from 'react' -import { Box, Page, Tabs } from '@/Components' -import Control from '../../../Features/Control' -import { Routes } from '@/lib' -import { useLocation } from '@/lib/hooks' -import { router } from '@inertiajs/react' +import React from "react" +import { Page, Tabs } from "@/Components" +import Control from "../../../Features/Controls/Control" +import { Routes } from "@/lib" +import { useLocation } from "@/lib/hooks" +import { router } from "@inertiajs/react" +import { ControlContainer } from "@/Features/Controls" interface IShowScreenProps { screen: Schema.ScreensShow @@ -13,7 +14,7 @@ interface IShowScreenProps { const ShowScreen = ({ screen, screens }: IShowScreenProps) => { const { paths } = useLocation() - const title = 'Screen' + const title = "Screen" return ( @@ -32,11 +33,11 @@ const ShowScreen = ({ screen, screens }: IShowScreenProps) => { { screens.map(iScreen => ( { iScreen.id === screen.id && - + { screen?.controls?.map(control => ( )) } - + } )) } diff --git a/app/frontend/Pages/Servers/Edit/index.tsx b/app/frontend/Pages/Servers/Edit/index.tsx index ffb082a..55c0068 100644 --- a/app/frontend/Pages/Servers/Edit/index.tsx +++ b/app/frontend/Pages/Servers/Edit/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import ServersForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import ServersForm from "../Form" interface IEditServerProps { server: Schema.ServersEdit } const EditServer = ({ server }: IEditServerProps) => { - const title = 'Edit Server' + const title = "Edit Server" return ( diff --git a/app/frontend/Pages/Servers/Form.tsx b/app/frontend/Pages/Servers/Form.tsx index 1375242..53c506d 100644 --- a/app/frontend/Pages/Servers/Form.tsx +++ b/app/frontend/Pages/Servers/Form.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Grid } from '@/Components' -import { Form, TextInput, Submit, Textarea, NumberInput } from '@/Components/Form' -import { type HTTPVerb, type UseFormProps } from 'use-inertia-form' +import React from "react" +import { Grid } from "@/Components" +import { Form, TextInput, Submit, Textarea, NumberInput } from "@/Components/Form" +import { type HTTPVerb, type UseFormProps } from "use-inertia-form" type TServerFormData = { server: Schema.ServersFormData @@ -10,11 +10,11 @@ type TServerFormData = { export interface IServerFormProps { to: string method?: HTTPVerb - onSubmit?: (object: UseFormProps) => boolean|void + onSubmit?: (object: UseFormProps) => boolean | void server: Schema.ServersFormData } -const ServerForm = ({ method = 'post', server, ...props }: IServerFormProps) => { +const ServerForm = ({ method = "post", server, ...props }: IServerFormProps) => { return (
- { server.id ? 'Update' : 'Create' } Server + { server.id ? "Update" : "Create" } Server diff --git a/app/frontend/Pages/Servers/Index/index.tsx b/app/frontend/Pages/Servers/Index/index.tsx index bf9493f..7dc2ca6 100644 --- a/app/frontend/Pages/Servers/Index/index.tsx +++ b/app/frontend/Pages/Servers/Index/index.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Routes } from '@/lib' -import { IndexPageTemplate } from '@/Features' -import { NewIcon } from '@/Components/Icons' -import ServersTable from '../Table' -import { type Pagination } from '@/types' +import React from "react" +import { Routes } from "@/lib" +import { IndexPageTemplate } from "@/Features" +import { NewIcon } from "@/Components/Icons" +import ServersTable from "../Table" +import { type Pagination } from "@/types" interface IServerIndexProps { servers: Schema.ServersIndex[] @@ -19,7 +19,7 @@ const ServersIndex = ({ servers, pagination }: IServerIndexProps) => { pagination={ pagination } deleteRoute={ Routes.servers() } menuOptions={ [ - { label: 'New Server', href: Routes.newServer(), icon: NewIcon }, + { label: "New Server", href: Routes.newServer(), icon: NewIcon }, ] } > diff --git a/app/frontend/Pages/Servers/New/index.tsx b/app/frontend/Pages/Servers/New/index.tsx index ab2d1f3..2cdf945 100644 --- a/app/frontend/Pages/Servers/New/index.tsx +++ b/app/frontend/Pages/Servers/New/index.tsx @@ -1,14 +1,14 @@ -import React from 'react' -import { Title, Page, Section } from '@/Components' -import { Routes } from '@/lib' -import ServerForm from '../Form' +import React from "react" +import { Title, Page, Section } from "@/Components" +import { Routes } from "@/lib" +import ServerForm from "../Form" interface INewServerProps { server: Schema.ServersFormData } const NewServer = ({ ...data }: INewServerProps) => { - const title = 'New Server' + const title = "New Server" return ( diff --git a/app/frontend/Pages/Servers/Show/index.tsx b/app/frontend/Pages/Servers/Show/index.tsx index 22f3ad1..153cfd3 100644 --- a/app/frontend/Pages/Servers/Show/index.tsx +++ b/app/frontend/Pages/Servers/Show/index.tsx @@ -1,13 +1,13 @@ -import React from 'react' -import { Group, Title, Menu, Page, Section, Text } from '@/Components' -import { Routes } from '@/lib' +import React from "react" +import { Group, Title, Menu, Page, Section, Text } from "@/Components" +import { Routes } from "@/lib" interface IShowServerProps { server: Schema.ServersShow } const ShowServer = ({ server }: IShowServerProps) => { - const title = 'Server' + const title = "Server" return ( @@ -25,7 +25,7 @@ const ShowServer = ({ server }: IShowServerProps) => { - { `${server.hostname}${server?.port ? `:${server.port}` : ''}` } + { `${server.hostname}${server?.port ? `:${server.port}` : ""}` } { server?.description }
diff --git a/app/frontend/Pages/Servers/Table.tsx b/app/frontend/Pages/Servers/Table.tsx index 527e81b..cfbef26 100644 --- a/app/frontend/Pages/Servers/Table.tsx +++ b/app/frontend/Pages/Servers/Table.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Table, Link, type TableProps } from '@/Components' -import { EditButton } from '@/Components/Button' +import React from "react" +import { Routes } from "@/lib" +import { Table, Link, type TableProps } from "@/Components" +import { EditButton } from "@/Components/Button" const ServerTable = (props: TableProps) => { return ( diff --git a/app/frontend/Pages/Settings/Appearance/Index/index.tsx b/app/frontend/Pages/Settings/Appearance/Index/index.tsx index 3e356ad..44c1e28 100644 --- a/app/frontend/Pages/Settings/Appearance/Index/index.tsx +++ b/app/frontend/Pages/Settings/Appearance/Index/index.tsx @@ -1,7 +1,7 @@ -import React, { useEffect, useRef } from 'react' -import { Box, Title } from '@/Components' -import SettingsLayout from '../../SettingsLayout' -import useLayoutStore from '@/lib/store/LayoutStore' +import React, { useEffect, useRef } from "react" +import { Box, Title } from "@/Components" +import SettingsLayout from "../../SettingsLayout" +import useStore from "@/lib/store" interface IAppearanceSettingsProps { settings: { @@ -10,7 +10,7 @@ interface IAppearanceSettingsProps { } const AppearanceSettings = ({ settings }: IAppearanceSettingsProps) => { - const { primaryColor, setPrimaryColor } = useLayoutStore() + const { primaryColor, setPrimaryColor } = useStore() const RevertColorRef = useRef(primaryColor!) useEffect(() => { diff --git a/app/frontend/Pages/Settings/General/Index/index.tsx b/app/frontend/Pages/Settings/General/Index/index.tsx index 740e29e..067ae3f 100644 --- a/app/frontend/Pages/Settings/General/Index/index.tsx +++ b/app/frontend/Pages/Settings/General/Index/index.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import SettingsLayout from '../../SettingsLayout' -import { Title } from '@/Components' +import React from "react" +import SettingsLayout from "../../SettingsLayout" +import { Title } from "@/Components" const General = () => { return ( diff --git a/app/frontend/Pages/Settings/Localization/Index/index.tsx b/app/frontend/Pages/Settings/Localization/Index/index.tsx index 8a0dc71..7d7fd18 100644 --- a/app/frontend/Pages/Settings/Localization/Index/index.tsx +++ b/app/frontend/Pages/Settings/Localization/Index/index.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import SettingsLayout from '../../SettingsLayout' -import { Title } from '@/Components' +import React from "react" +import SettingsLayout from "../../SettingsLayout" +import { Title } from "@/Components" const LocalizationSettings = () => { return ( diff --git a/app/frontend/Pages/Settings/Notifications/Index/index.tsx b/app/frontend/Pages/Settings/Notifications/Index/index.tsx index bd1635a..fd8e285 100644 --- a/app/frontend/Pages/Settings/Notifications/Index/index.tsx +++ b/app/frontend/Pages/Settings/Notifications/Index/index.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import SettingsLayout from '../../SettingsLayout' -import { Title } from '@/Components' +import React from "react" +import SettingsLayout from "../../SettingsLayout" +import { Title } from "@/Components" const Appearance = () => { return ( diff --git a/app/frontend/Pages/Settings/SettingsLayout.tsx b/app/frontend/Pages/Settings/SettingsLayout.tsx index 68628e3..f1107e2 100644 --- a/app/frontend/Pages/Settings/SettingsLayout.tsx +++ b/app/frontend/Pages/Settings/SettingsLayout.tsx @@ -1,8 +1,8 @@ -import React, { useEffect, useState } from 'react' -import { Paper, Page, Box, Section, Tabs } from '@/Components' -import { router } from '@inertiajs/react' -import { px, useMantineTheme } from '@mantine/core' -import { useViewportSize, useLocation } from '@/lib/hooks' +import React, { useEffect, useState } from "react" +import { Paper, Page, Box, Section, Tabs } from "@/Components" +import { router } from "@inertiajs/react" +import { px, useMantineTheme } from "@mantine/core" +import { useViewportSize, useLocation } from "@/lib/hooks" interface SettingsLayoutProps { children: React.ReactNode @@ -15,21 +15,21 @@ type Tab = { } const tabs: Tab[] = [ - { name: 'general', label: 'General' }, - { name: 'appearance', label: 'Appearance' }, - { name: 'mail', label: 'Mail' }, - { name: 'notifications', label: 'Notifications' }, + { name: "general", label: "General" }, + { name: "appearance", label: "Appearance" }, + { name: "mail", label: "Mail" }, + { name: "notifications", label: "Notifications" }, // { name: 'integrations', label: 'Integrations' }, - { name: 'asset_tags', label: 'Asset Tags' }, + { name: "asset_tags", label: "Asset Tags" }, // { name: 'barcodes', label: 'Barcodes' }, - { name: 'ldap', label: 'LDAP' }, - { name: 'tickets', label: 'Tickets' }, - { name: 'backups', label: 'Backups' }, - { name: 'logs', label: 'Logs' }, + { name: "ldap", label: "LDAP" }, + { name: "tickets", label: "Tickets" }, + { name: "backups", label: "Backups" }, + { name: "logs", label: "Logs" }, ] const SettingsLayout = ({ children }: SettingsLayoutProps) => { - const title = 'Settings' + const title = "Settings" const { width } = useViewportSize() const theme = useMantineTheme() const [mobileFormat, setMobileFormat] = useState(window.innerWidth < Number(px(theme.breakpoints.sm))) @@ -41,15 +41,15 @@ const SettingsLayout = ({ children }: SettingsLayoutProps) => { setMobileFormat(width < Number(px(theme.breakpoints.sm))) }, [width]) - const handleTabChange = (value: string|null) => { - router.get(`/settings/${value ?? 'general'}`, {}, { preserveState: true }) + const handleTabChange = (value: string | null) => { + router.get(`/settings/${value ?? "general"}`, {}, { preserveState: true }) } return (
{ > { tabs.map(tab => ( @@ -73,8 +75,8 @@ const SettingsLayout = ({ children }: SettingsLayoutProps) => { { tabs.map(tab => ( - - + + { children } diff --git a/app/frontend/Pages/Users/Edit/index.tsx b/app/frontend/Pages/Users/Edit/index.tsx index 054cddf..1014a53 100644 --- a/app/frontend/Pages/Users/Edit/index.tsx +++ b/app/frontend/Pages/Users/Edit/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react" const Edit = () => { return ( diff --git a/app/frontend/Pages/Users/Form.tsx b/app/frontend/Pages/Users/Form.tsx index 97ea9c0..13fc9fd 100644 --- a/app/frontend/Pages/Users/Form.tsx +++ b/app/frontend/Pages/Users/Form.tsx @@ -1,10 +1,10 @@ -import React from 'react' +import React from "react" import { Form, TextInput, Submit, -} from '@/Components/Form' -import { type HTTPVerb, type UseFormProps } from 'use-inertia-form' +} from "@/Components/Form" +import { type HTTPVerb, type UseFormProps } from "use-inertia-form" type TUserFormData = { user: Schema.UsersFormData @@ -13,11 +13,11 @@ type TUserFormData = { export interface IUserFormProps { to: string method?: HTTPVerb - onSubmit?: (object: UseFormProps) => boolean|void + onSubmit?: (object: UseFormProps) => boolean | void user: Schema.UsersFormData } -const UserForm = ({ to, method = 'post', onSubmit, user }: IUserFormProps) => { +const UserForm = ({ to, method = "post", onSubmit, user }: IUserFormProps) => { return ( { - { user.id ? 'Update' : 'Create' } User + { user.id ? "Update" : "Create" } User ) diff --git a/app/frontend/Pages/Users/Index/index.tsx b/app/frontend/Pages/Users/Index/index.tsx index 3d4f4d3..0a81974 100644 --- a/app/frontend/Pages/Users/Index/index.tsx +++ b/app/frontend/Pages/Users/Index/index.tsx @@ -1,9 +1,9 @@ -import React from 'react' -import { Routes } from '@/lib' -import { IndexPageTemplate } from '@/Features' -import { NewIcon } from '@/Components/Icons' -import UsersTable from '../Table' -import { type Pagination } from '@/types' +import React from "react" +import { Routes } from "@/lib" +import { IndexPageTemplate } from "@/Features" +import { NewIcon } from "@/Components/Icons" +import UsersTable from "../Table" +import { type Pagination } from "@/types" interface IUserIndexProps { users: Schema.UsersIndex[] @@ -19,7 +19,7 @@ const UserIndex = ({ users, pagination }: IUserIndexProps) => { pagination={ pagination } deleteRoute={ Routes.users() } menuOptions={ [ - { label: 'Invite New User', href: Routes.newUser(), icon: NewIcon }, + { label: "Invite New User", href: Routes.newUser(), icon: NewIcon }, ] } > diff --git a/app/frontend/Pages/Users/New/index.tsx b/app/frontend/Pages/Users/New/index.tsx index 0f21b57..e62427e 100644 --- a/app/frontend/Pages/Users/New/index.tsx +++ b/app/frontend/Pages/Users/New/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react" const New = () => { return ( diff --git a/app/frontend/Pages/Users/Show/index.tsx b/app/frontend/Pages/Users/Show/index.tsx index 8ddfdd7..55ee537 100644 --- a/app/frontend/Pages/Users/Show/index.tsx +++ b/app/frontend/Pages/Users/Show/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react" interface IShowUserProps { user: Schema.User diff --git a/app/frontend/Pages/Users/Table.tsx b/app/frontend/Pages/Users/Table.tsx index 42e9dce..5276754 100644 --- a/app/frontend/Pages/Users/Table.tsx +++ b/app/frontend/Pages/Users/Table.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import { Routes } from '@/lib' -import { Link, Table, type TableProps } from '@/Components' -import { EditButton } from '@/Components/Button' +import React from "react" +import { Routes } from "@/lib" +import { Link, Table, type TableProps } from "@/Components" +import { EditButton } from "@/Components/Button" const UsersTable = (props: TableProps) => { return ( @@ -9,7 +9,7 @@ const UsersTable = (props: TableProps) => { Email - Actions + Actions diff --git a/app/frontend/entrypoints/application.tsx b/app/frontend/entrypoints/application.tsx index e002294..a96a048 100644 --- a/app/frontend/entrypoints/application.tsx +++ b/app/frontend/entrypoints/application.tsx @@ -1,44 +1,51 @@ -import React from 'react' -import { createInertiaApp } from '@inertiajs/react' -import { createRoot } from 'react-dom/client' -import { PublicLayout, AppLayout, AuthLayout } from '../Layouts' - -type PagesObject = { default: React.ComponentType & { - layout?: React.ComponentType +import React from "react" +import { createInertiaApp, router } from "@inertiajs/react" +import { createRoot } from "react-dom/client" +import { LAYOUTS } from "../Layouts" +import { + applyPropsMiddleware, + setupCSRFToken, + setupInertiaListeners, + handlePageLayout, +} from "./middleware" + +import dayjs from "dayjs" +import localizedFormat from "dayjs/plugin/localizedFormat" +import duration from "dayjs/plugin/duration" +import relativeTime from "dayjs/plugin/relativeTime" + +const pages = import.meta.glob("../Pages/**/index.tsx") + +dayjs.extend(localizedFormat) +dayjs.extend(localizedFormat) +dayjs.extend(duration) +dayjs.extend(relativeTime) + +const SITE_TITLE = "OSC" + +export type PagesObject = { default: React.ComponentType & { + layout?: React.ComponentType + defaultLayout?: keyof typeof LAYOUTS } } -const pages = import.meta.glob('../Pages/**/index.tsx') +document.addEventListener("DOMContentLoaded", () => { + setupCSRFToken() + setupInertiaListeners(router) -document.addEventListener('DOMContentLoaded', () => { createInertiaApp({ - title: title => `OSC - ${title}`, - - resolve: async name => { - let checkedName = name - let layout - - switch(name.substring(0, name.indexOf('/'))) { - case 'Public': - layout = PublicLayout - checkedName = name.replace('Public/', '') - break - case 'Auth': - layout = AuthLayout - checkedName = name.replace('Auth/', '') - break - default: - layout = AppLayout - } - - const page = (await pages[`../Pages/${checkedName}/index.tsx`]()).default - - if(page.layout === undefined) page.layout = layout - - return page + title: title => `${SITE_TITLE} - ${title}`, + + resolve: async (name) => { + const page: PagesObject = (await pages[`../Pages/${name}/index.tsx`]()) + + return handlePageLayout(page) }, setup({ el, App, props }) { const root = createRoot(el) + + props.initialPage.props = applyPropsMiddleware(props.initialPage.props) + root.render() }, }) diff --git a/app/frontend/entrypoints/middleware/convertDates.ts b/app/frontend/entrypoints/middleware/convertDates.ts new file mode 100644 index 0000000..0620129 --- /dev/null +++ b/app/frontend/entrypoints/middleware/convertDates.ts @@ -0,0 +1,27 @@ +import { isPlainObject } from "lodash" + +/** + * Recursively check each prop value and convert ISO strings to dates + */ +export function convertDates | Record[]>(obj: T): T { + if(Array.isArray(obj)) { + // Recurse over array values + return obj.map(convertDates) as unknown as T + } else if(isPlainObject(obj)) { + // Recurse over object values + return Object.keys(obj).reduce((acc, key) => { + (acc as any)[key] = convertDates((obj as any)[key]) + return acc + }, {} as T) + } else if(typeof obj === "string" && isISODateString(obj)) { + // Case to convert the date object + return new Date(obj) as unknown as T + } + + return obj +} + +function isISODateString(value: string) { + const isoDateFormat = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?([+-]\d{2}:\d{2}|Z)?$/ + return isoDateFormat.test(value) +} diff --git a/app/frontend/entrypoints/middleware/handlePageLayout.tsx b/app/frontend/entrypoints/middleware/handlePageLayout.tsx new file mode 100644 index 0000000..f944299 --- /dev/null +++ b/app/frontend/entrypoints/middleware/handlePageLayout.tsx @@ -0,0 +1,23 @@ +import { + LAYOUTS, + AuthLayout, + PublicLayout, + AppLayout, + LayoutProps, +} from "@/Layouts" +import { PagesObject } from "../application" + +const LAYOUT_COMPONENTS: Record React.JSX.Element> = { + "auth": AuthLayout, + "app": AppLayout, + "public": PublicLayout, +} as const + +const handlePageLayout = (page: PagesObject) => { + const DefaultLayout = LAYOUT_COMPONENTS[page.default.defaultLayout as keyof typeof LAYOUTS] || AppLayout + page.default.layout ||= (children: React.ReactNode) => { children } + + return page.default +} + +export default handlePageLayout diff --git a/app/frontend/entrypoints/middleware/index.ts b/app/frontend/entrypoints/middleware/index.ts new file mode 100644 index 0000000..a815d39 --- /dev/null +++ b/app/frontend/entrypoints/middleware/index.ts @@ -0,0 +1,49 @@ +import { ErrorBag, Errors, PageProps, type Router } from "@inertiajs/core" +import { convertDates } from "./convertDates" +import axios from "axios" + +export { default as handlePageLayout } from "./handlePageLayout" + +export const applyPropsMiddleware = (props: PageProps & { + errors: Errors & ErrorBag +}) => { + return convertDates(props) +} + +export function setupCSRFToken() { + const csrfToken = (document.querySelector("meta[name=csrf-token]") as HTMLMetaElement).content + axios.defaults.headers.common["X-CSRF-Token"] = csrfToken +} + +export function setupInertiaListeners(router: Router) { + // Handle both full and partial page updates + router.on("navigate", (event) => { + event.detail.page.props = applyPropsMiddleware(event.detail.page.props) + }) + + // Handle partial updates + const originalReload = router.reload.bind(router) + router.reload = function(options?: { only?: string[] }) { + if(options?.only) { + // Intercept the response to apply middleware to partial updates + const originalVisit = router.visit.bind(router) + router.visit = function(url, visitOptions = {}) { + const originalPreserveState = visitOptions.preserveState + visitOptions.preserveState = (page) => { + if(typeof originalPreserveState === "function") { + page.props = applyPropsMiddleware(page.props) + return originalPreserveState(page) + } + page.props = applyPropsMiddleware(page.props) + return true + } + return originalVisit(url, visitOptions) + } + + const result = originalReload(options) + router.visit = originalVisit + return result + } + return originalReload(options) + } +} diff --git a/app/frontend/lib/Collections/NestedObject.ts b/app/frontend/lib/Collections/NestedObject.ts index a5242c6..874f0d8 100644 --- a/app/frontend/lib/Collections/NestedObject.ts +++ b/app/frontend/lib/Collections/NestedObject.ts @@ -1,9 +1,9 @@ -import { unset, get, set, isEmpty } from 'lodash' +import { unset, get, set, isEmpty } from "lodash" export default class NestedObject { data = {} - constructor(initialData?: Record|Map) { + constructor(initialData?: Record | Map) { if(!initialData) return for(const [key, value] of Object.entries(initialData)) { diff --git a/app/frontend/lib/Collections/NestedURLSearchParams.ts b/app/frontend/lib/Collections/NestedURLSearchParams.ts index 2bca9cf..aaf7241 100644 --- a/app/frontend/lib/Collections/NestedURLSearchParams.ts +++ b/app/frontend/lib/Collections/NestedURLSearchParams.ts @@ -1,12 +1,12 @@ -import { unset, get, set, isEmpty } from 'lodash' +import { unset, get, set, isEmpty } from "lodash" export default class NestedURLSearchParams { _data: Record = {} - constructor(initialData?: string|Record|URLSearchParams) { + constructor(initialData?: string | Record | URLSearchParams) { if(!initialData) return - if(initialData instanceof URLSearchParams || typeof initialData === 'string') { + if(initialData instanceof URLSearchParams || typeof initialData === "string") { let searchParams: URLSearchParams if(initialData instanceof URLSearchParams) { @@ -65,7 +65,7 @@ export default class NestedURLSearchParams { } toString() { - return `?${convertToQueryString(this.data)}`.replace(/\&$/, '') + return `?${convertToQueryString(this.data)}`.replace(/\&$/, "") } params() { @@ -77,10 +77,10 @@ export default class NestedURLSearchParams { } } -const ignoreValues = [undefined, null, ''] +const ignoreValues = [undefined, null, ""] -const convertToQueryString = (obj: Record, parentKey = ''): string => { - let queryString = '' +const convertToQueryString = (obj: Record, parentKey = ""): string => { + let queryString = "" for(const key in obj) { if(Object.prototype.hasOwnProperty.call(obj, key)) { @@ -90,7 +90,7 @@ const convertToQueryString = (obj: Record, parentKey = ''): string const formattedKey = parentKey ? `${parentKey}[${key}]` : key - if(typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]' && value !== null) { + if(typeof value === "object" && Object.prototype.toString.call(value) === "[object Object]" && value !== null) { queryString += convertToQueryString(value, formattedKey) } else { let formattedValue = value diff --git a/app/frontend/lib/collections.test.ts b/app/frontend/lib/collections.test.ts index 22cbb90..8eae41d 100644 --- a/app/frontend/lib/collections.test.ts +++ b/app/frontend/lib/collections.test.ts @@ -1,22 +1,22 @@ -import { describe, expect, test } from 'vitest' -import { coerceArray, exclude, findMax } from './collections' +import { describe, expect, test } from "vitest" +import { coerceArray, exclude, findMax } from "./collections" const records = [ - { id: 1, str: 'hello1', obj: { key: 12 } }, - { id: 2, str: 'hello2', obj: { key: 11 } }, - { id: 3, str: 'hello3', obj: { key: 10 } }, + { id: 1, str: "hello1", obj: { key: 12 } }, + { id: 2, str: "hello2", obj: { key: 11 } }, + { id: 3, str: "hello3", obj: { key: 10 } }, ] -describe('findMax', () => { - test('returns element with largest id', () => { - expect(findMax(records, 'id')).toEqual(records[2]) +describe("findMax", () => { + test("returns element with largest id", () => { + expect(findMax(records, "id")).toEqual(records[2]) }) - test('handles strings', () => { - expect(findMax(records, 'str')).toBeNaN() + test("handles strings", () => { + expect(findMax(records, "str")).toBeNaN() }) - test('handles nested objects', () => { - expect(findMax(records, 'obj.key')).toEqual(records[0]) + test("handles nested objects", () => { + expect(findMax(records, "obj.key")).toEqual(records[0]) }) }) diff --git a/app/frontend/lib/collections.ts b/app/frontend/lib/collections.ts index c7905c7..5216d95 100644 --- a/app/frontend/lib/collections.ts +++ b/app/frontend/lib/collections.ts @@ -1,7 +1,7 @@ -import { cloneDeep, get, unset } from 'lodash' +import { cloneDeep, get, unset } from "lodash" -export { default as NestedObject } from './Collections/NestedObject' -export { default as NestedURLSearchParams } from './Collections/NestedURLSearchParams' +export { default as NestedObject } from "./Collections/NestedObject" +export { default as NestedURLSearchParams } from "./Collections/NestedURLSearchParams" /** * Ensures the object is an array member diff --git a/app/frontend/lib/colors.ts b/app/frontend/lib/colors.ts new file mode 100644 index 0000000..455aaf0 --- /dev/null +++ b/app/frontend/lib/colors.ts @@ -0,0 +1,28 @@ +import { isLightColor, MantinePrimaryShade, MantineTheme } from "@mantine/core" + +export const calculateContrastingColor = ( + color: string, + theme: MantineTheme, + colorScheme: "light" | "dark" +) => { + const black = theme?.black || "#000000" + const white = theme?.white || "#FFFFFF" + + if(color === "black") return white + if(color === "white" || color === undefined) return black + + let validatedColor = color + if(validatedColor.charAt(0) !== "#") { + if(!theme || !colorScheme) return black + + const colors = theme.colors + const primaryShade = theme.primaryShade as MantinePrimaryShade + + if(Object.keys(colors).includes(color)) { + const shade = primaryShade[colorScheme] + validatedColor = colors[color][shade] + } + } + + return isLightColor(validatedColor) ? black : white +} diff --git a/app/frontend/lib/formatters.ts b/app/frontend/lib/formatters.ts index 22ab2b4..890eb4c 100644 --- a/app/frontend/lib/formatters.ts +++ b/app/frontend/lib/formatters.ts @@ -1,30 +1,30 @@ -import dayjs from 'dayjs' +import dayjs from "dayjs" -export const currency = (amount: number, currency = 'USD') => { - const formatter = new Intl.NumberFormat('en-US', { - style: 'currency', +export const currency = (amount: number, currency = "USD") => { + const formatter = new Intl.NumberFormat("en-US", { + style: "currency", currency, }) return formatter.format(amount) } export const date = { - short: (date: string|Date) => dayjs(new Date(date)).format('MM/DD/YYYY'), - long: (date: string|Date) => dayjs(new Date(date)).format('MM/DD/YYYY HH:mm:ss'), - relative: (date: string|Date) => { - return dayjs(new Date(date)).format('MM/DD/YYYY') + short: (date: string | Date) => dayjs(new Date(date)).format("MM/DD/YYYY"), + long: (date: string | Date) => dayjs(new Date(date)).format("MM/DD/YYYY HH:mm:ss"), + relative: (date: string | Date) => { + return dayjs(new Date(date)).format("MM/DD/YYYY") }, - english: (date: string|Date) => dayjs(new Date(date)).format('MM/DD/YYYY'), + english: (date: string | Date) => dayjs(new Date(date)).format("MM/DD/YYYY"), } -const durationKeys = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'] as const +const durationKeys = ["year", "month", "day", "hour", "minute", "second", "millisecond"] as const export const humanizeDuration = (duration: plugin.Duration) => { - let humanDuration = '' + let humanDuration = "" durationKeys.forEach((unit) => { const value = duration.get(unit) if(value > 0) { - humanDuration += `${humanDuration === '' ? '' : ', '}${value} ${unit}${value > 1 ? 's' : ''}` + humanDuration += `${humanDuration === "" ? "" : ", "}${value} ${unit}${value > 1 ? "s" : ""}` } }) diff --git a/app/frontend/lib/forms.ts b/app/frontend/lib/forms.ts index 674d0e4..e2b74e9 100644 --- a/app/frontend/lib/forms.ts +++ b/app/frontend/lib/forms.ts @@ -1,23 +1,23 @@ -import { useForm } from 'use-inertia-form' +import { useForm } from "use-inertia-form" /** * Test if a value is "unset" in the context of a form input value. Returns true if the value can be considered "empty" * @param v Variable to test whether is an "unset" value * @returns boolean */ -export const isUnset = (v: T): v is T extends (null | undefined | '') ? T : never => { +export const isUnset = (v: T): v is T extends (null | undefined | "") ? T : never => { if( v === null || v === undefined || - (typeof v === 'string' && v === '') || + (typeof v === "string" && v === "") || Number.isNaN(v) || - JSON.stringify(v) === '{}' + JSON.stringify(v) === "{}" ) { return true } if(Array.isArray(v)) { - return !v.some(el => el !== '' && el !== undefined) + return !v.some(el => el !== "" && el !== undefined) } return false @@ -29,13 +29,13 @@ export function getInputOnChange( return (val: Value | React.ChangeEvent | ((current: Value) => Value)) => { if(!val) { setValue(val as Value) - } else if(typeof val === 'function') { + } else if(typeof val === "function") { setValue(val) - } else if(typeof val === 'object' && 'nativeEvent' in val) { + } else if(typeof val === "object" && "nativeEvent" in val) { const { currentTarget } = val if(currentTarget instanceof HTMLInputElement) { - if(currentTarget.type === 'checkbox') { + if(currentTarget.type === "checkbox") { setValue(currentTarget.checked as any) } else { setValue(currentTarget.value as any) diff --git a/app/frontend/lib/hooks/createContext.ts b/app/frontend/lib/hooks/createContext.ts index 2dd63d6..309ed75 100644 --- a/app/frontend/lib/hooks/createContext.ts +++ b/app/frontend/lib/hooks/createContext.ts @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react" /** * createContext @@ -15,7 +15,7 @@ const createContext = () => { function useContext(error = true) { const c = React.useContext(context) if(error && c === null) { - throw new Error('useContext must be inside a Provider with a value') + throw new Error("useContext must be inside a Provider with a value") } return c } diff --git a/app/frontend/lib/hooks/index.ts b/app/frontend/lib/hooks/index.ts index 8992f5d..bea827b 100644 --- a/app/frontend/lib/hooks/index.ts +++ b/app/frontend/lib/hooks/index.ts @@ -1,12 +1,13 @@ -export { default as createContext } from './createContext' -export { default as useBooleanToggle } from './useBooleanToggle' -export { default as useCheckboxState } from './useCheckboxState' -export { default as useLocation } from './useLocation' -export { default as usePageProps } from './usePageProps' -export { default as useInit } from './useInit' -export { default as useAuth } from './useAuth' -export { default as useContrastingTextColor } from './useContrastingTextColor' -export { default as useCurrency, type UseCurrencyOptions } from './useCurrency' +export { default as createContext } from "./createContext" +export { default as useBooleanToggle } from "./useBooleanToggle" +export { default as useCheckboxState } from "./useCheckboxState" +export { default as useLocation } from "./useLocation" +export { default as usePageProps } from "./usePageProps" +export { default as useInit } from "./useInit" +export { default as useAuth } from "./useAuth" +export { default as useContrastingTextColor } from "./useContrastingTextColor" +export { default as useCurrency, type UseCurrencyOptions } from "./useCurrency" +export { default as useViewportSize } from "./useViewportSize" -export * from '@mantine/hooks' +export * from "@mantine/hooks" diff --git a/app/frontend/lib/hooks/useAuth.ts b/app/frontend/lib/hooks/useAuth.ts index a7d2349..d520650 100644 --- a/app/frontend/lib/hooks/useAuth.ts +++ b/app/frontend/lib/hooks/useAuth.ts @@ -1,4 +1,4 @@ -import usePageProps from './usePageProps' +import usePageProps from "./usePageProps" const useAuth = () => { const { auth } = usePageProps() diff --git a/app/frontend/lib/hooks/useBooleanToggle.ts b/app/frontend/lib/hooks/useBooleanToggle.ts index 4a649bc..c7af21a 100644 --- a/app/frontend/lib/hooks/useBooleanToggle.ts +++ b/app/frontend/lib/hooks/useBooleanToggle.ts @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useState } from "react" const useBooleanToggle = (initial: boolean): [boolean, (explicit?: boolean) => void] => { const [value, setValue] = useState(initial) diff --git a/app/frontend/lib/hooks/useCheckboxState.ts b/app/frontend/lib/hooks/useCheckboxState.ts index 66c5040..d9061c7 100644 --- a/app/frontend/lib/hooks/useCheckboxState.ts +++ b/app/frontend/lib/hooks/useCheckboxState.ts @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useState, useEffect } from "react" const useCheckboxState = (length: number, selected: number) => { const [allChecked, setAllChecked] = useState(false) diff --git a/app/frontend/lib/hooks/useColorSchemeOption.ts b/app/frontend/lib/hooks/useColorSchemeOption.ts index 2632988..71186a0 100644 --- a/app/frontend/lib/hooks/useColorSchemeOption.ts +++ b/app/frontend/lib/hooks/useColorSchemeOption.ts @@ -1,9 +1,9 @@ -import { useColorScheme } from '@mantine/hooks' +import { useColorScheme } from "@mantine/hooks" const useColorSchemeOption = (light: any, dark: any) => { const colorScheme = useColorScheme() - return colorScheme === 'dark' ? dark : light + return colorScheme === "dark" ? dark : light } export default useColorSchemeOption diff --git a/app/frontend/lib/hooks/useContrastingTextColor.ts b/app/frontend/lib/hooks/useContrastingTextColor.ts index cae4872..4384d6f 100644 --- a/app/frontend/lib/hooks/useContrastingTextColor.ts +++ b/app/frontend/lib/hooks/useContrastingTextColor.ts @@ -1,18 +1,18 @@ -import { isLightColor, type MantinePrimaryShade, useMantineColorScheme, useMantineTheme } from '@mantine/core' +import { isLightColor, type MantinePrimaryShade, useMantineColorScheme, useMantineTheme } from "@mantine/core" const useContrastingTextColor = (color: string) => { const { colors, primaryShade } = useMantineTheme() const { colorScheme } = useMantineColorScheme() - if(color === undefined) return 'black' + if(color === undefined) return "black" let validatedColor = color if(Object.keys(colors).includes(color)) { - const shade = (primaryShade as MantinePrimaryShade)[(colorScheme as 'light'|'dark')] + const shade = (primaryShade as MantinePrimaryShade)[(colorScheme as "light" | "dark")] validatedColor = colors[color][shade] } - return isLightColor(validatedColor, 0.379) ? 'black' : 'white' + return isLightColor(validatedColor, 0.379) ? "black" : "white" } export default useContrastingTextColor diff --git a/app/frontend/lib/hooks/useCurrency.ts b/app/frontend/lib/hooks/useCurrency.ts index bb90d95..77a4336 100644 --- a/app/frontend/lib/hooks/useCurrency.ts +++ b/app/frontend/lib/hooks/useCurrency.ts @@ -1,6 +1,6 @@ -import { type Money } from '@/types' +import { type Money } from "@/types" -export type UseCurrencyOptions = Omit +export type UseCurrencyOptions = Omit interface UseCurrencyProps { amount: number | Money | null @@ -9,28 +9,28 @@ interface UseCurrencyProps { options?: UseCurrencyOptions } -type OmittedOptions = Pick +type OmittedOptions = Pick const useCurrency = ({ amount, - currency = 'USD', - locale = 'en-US', + currency = "USD", + locale = "en-US", options = {}, }: UseCurrencyProps): [amount: number, formatter: Intl.NumberFormat] => { let currencyIso = currency - if(typeof amount !== 'number' && amount?.hasOwnProperty('currency_iso')) { + if(typeof amount !== "number" && amount?.hasOwnProperty("currency_iso")) { currencyIso = amount.currency_iso } let value = 0 - if(typeof amount === 'number') { + if(typeof amount === "number") { value = amount - } else if(amount?.hasOwnProperty('amount')) { + } else if(amount?.hasOwnProperty("amount")) { value = amount.amount } const baseOptions: OmittedOptions = { - style: 'currency', + style: "currency", currency: currencyIso, } diff --git a/app/frontend/lib/hooks/useInit.ts b/app/frontend/lib/hooks/useInit.ts index 5de1362..467f028 100644 --- a/app/frontend/lib/hooks/useInit.ts +++ b/app/frontend/lib/hooks/useInit.ts @@ -1,4 +1,4 @@ -import { useEffect, useRef } from 'react' +import { useEffect, useRef } from "react" const useInit = (cb: Function) => { const hasRunRef = useRef(false) diff --git a/app/frontend/lib/hooks/useLocation.ts b/app/frontend/lib/hooks/useLocation.ts index e83e095..3d73d40 100644 --- a/app/frontend/lib/hooks/useLocation.ts +++ b/app/frontend/lib/hooks/useLocation.ts @@ -1,6 +1,6 @@ -import { useState, useEffect, useMemo } from 'react' -import { omit } from 'lodash' -import { NestedURLSearchParams } from '@/lib/collections' +import { useState, useEffect, useMemo } from "react" +import { omit } from "lodash" +import { NestedURLSearchParams } from "@/lib/collections" const useLocation = () => { const [location, setLocation] = useState(window.location) @@ -10,10 +10,10 @@ const useLocation = () => { } useEffect(() => { - window.addEventListener('popstate', listenToPopstate) + window.addEventListener("popstate", listenToPopstate) return () => { - window.removeEventListener('popstate', listenToPopstate) + window.removeEventListener("popstate", listenToPopstate) } }, []) @@ -21,14 +21,14 @@ const useLocation = () => { return { ...omit(location, [ - 'toString', - 'replace', - 'reload', - 'assign', - 'ancestorOrigins', + "toString", + "replace", + "reload", + "assign", + "ancestorOrigins", ]), path: `${location.origin}${location.pathname}`, - paths: location.pathname.replace(/^\//, '').split('/'), + paths: location.pathname.replace(/^\//, "").split("/"), params, paramsAsJson: useMemo(() => { const hash: Record = {} diff --git a/app/frontend/lib/hooks/usePageProps.ts b/app/frontend/lib/hooks/usePageProps.ts index 4f6e8d6..4e29def 100644 --- a/app/frontend/lib/hooks/usePageProps.ts +++ b/app/frontend/lib/hooks/usePageProps.ts @@ -1,6 +1,6 @@ -import { usePage } from '@inertiajs/react' -import { PageProps, Errors, ErrorBag } from '@inertiajs/core' -import { type FlashMessage } from '@/types' +import { usePage } from "@inertiajs/react" +import { PageProps, Errors, ErrorBag } from "@inertiajs/core" +import { type FlashMessage } from "@/types" export interface SharedInertiaProps extends PageProps { auth: { diff --git a/app/frontend/lib/hooks/useViewportSize.ts b/app/frontend/lib/hooks/useViewportSize.ts new file mode 100644 index 0000000..277dbe1 --- /dev/null +++ b/app/frontend/lib/hooks/useViewportSize.ts @@ -0,0 +1,16 @@ +import { useEffect } from "react" +import { useViewportSize as useMantineViewportSize } from "@mantine/hooks" + +type OnChangeCallback = (dimensions: { width: number, height: number }) => void + +const useViewportSize = (onChange?: OnChangeCallback) => { + const { width, height } = useMantineViewportSize() + + useEffect(() => { + onChange?.({ width, height }) + }, [width, height, onChange]) + + return { width, height } +} + +export default useViewportSize diff --git a/app/frontend/lib/index.tsx b/app/frontend/lib/index.tsx index 87630f7..065a94f 100644 --- a/app/frontend/lib/index.tsx +++ b/app/frontend/lib/index.tsx @@ -1,16 +1,19 @@ -import { Routes } from '@/lib' +import { Routes } from "@/lib" -export * as Routes from './routes/routes' -export * as formatter from './formatters' +export * as Routes from "./routes/routes" +export * as formatter from "./formatters" -export * from './uuid' -export * from './strings' -export * from './collections' -export * from './forms' -export * from './theme' -export * from './units' +export * from "./colors" +export * from "./collections" +export * from "./forms" +export * from "./strings" +export * from "./theme" +export * from "./units" +export * from "./uuid" -export const polymorphicRoute = (model: string, param: string|number) => { +export const polymorphicRoute = (model: string, param: string | number) => { // @ts-ignore return Routes[camelize(model)](param) } + +export { withLayout } from "./withLayout" diff --git a/app/frontend/lib/routes/routes.d.ts b/app/frontend/lib/routes/routes.d.ts index 5239464..01e6b36 100644 --- a/app/frontend/lib/routes/routes.d.ts +++ b/app/frontend/lib/routes/routes.d.ts @@ -1,10 +1,12 @@ /** - * File generated by js-routes RubyVariables.GEM_VERSION - * Based on Rails RubyVariables.RAILS_VERSION routes of RubyVariables.APP_CLASS + * @file Generated by js-routes 2.3.4. Based on Rails 7.1.5.1 routes of Osc::Application. + * @version 12d356819031face4f2d3c522b0da10dc3cb3ac970bfee938234252cbcfe8b2f + * @see https://github.com/railsware/js-routes */ declare type Optional = { [P in keyof T]?: T[P] | null; }; +declare type Collection = Record; declare type BaseRouteParameter = string | boolean | Date | number; declare type MethodRouteParameter = BaseRouteParameter | (() => BaseRouteParameter); declare type ModelRouteParameter = { @@ -19,8 +21,8 @@ declare type OptionalRouteParameter = undefined | null | RequiredRouteParameter; declare type QueryRouteParameter = OptionalRouteParameter | QueryRouteParameter[] | { [k: string]: QueryRouteParameter; }; -declare type RouteParameters = Record; -declare type Serializable = Record; +declare type RouteParameters = Collection; +declare type Serializable = Collection; declare type Serializer = (value: Serializable) => string; declare type RouteHelperExtras = { requiredParams(): string[]; @@ -32,9 +34,9 @@ declare type RequiredParameters = T extends 1 ? [RequiredRoute RequiredRouteParameter, RequiredRouteParameter ] : RequiredRouteParameter[]; -declare type RouteHelperOptions = RouteOptions & Record; +declare type RouteHelperOptions = RouteOptions & Collection; declare type RouteHelper = ((...args: [...RequiredParameters, RouteHelperOptions]) => string) & RouteHelperExtras; -declare type RouteHelpers = Record; +declare type RouteHelpers = Collection; declare type Configuration = { prefix: string; default_url_options: RouteParameters; @@ -53,17 +55,17 @@ declare type KeywordUrlOptions = Optional<{ port: string | number; anchor: string; trailing_slash: boolean; + script_name: string; params: RouteParameters; }>; declare type RouteOptions = KeywordUrlOptions & RouteParameters; -declare type PartsTable = Record; declare type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "DTS" | "NIL"; declare const RubyVariables: { PREFIX: string; - DEPRECATED_GLOBBING_BEHAVIOR: boolean; DEPRECATED_FALSE_PARAMETER_BEHAVIOR: boolean; SPECIAL_OPTIONS_KEY: string; DEFAULT_URL_OPTIONS: RouteParameters; @@ -76,7 +78,7 @@ declare const define: undefined | (((arg: unknown[], callback: () => unknown) => amd?: unknown; }); declare const module: { - exports: any; + exports: unknown; } | undefined; export const configure: RouterExposedMethods['configure']; @@ -443,7 +445,7 @@ export const editUserRegistration: (( * @returns {string} route path */ export const home: (( - options?: {} & RouteOptions + options?: RouteOptions ) => string) & RouteHelperExtras; /** @@ -565,7 +567,7 @@ export const protocols: (( * @returns {string} route path */ export const root: (( - options?: {} & RouteOptions + options?: RouteOptions ) => string) & RouteHelperExtras; /** diff --git a/app/frontend/lib/routes/routes.ts b/app/frontend/lib/routes/routes.ts index b0bf8cc..1b15531 100644 --- a/app/frontend/lib/routes/routes.ts +++ b/app/frontend/lib/routes/routes.ts @@ -1,6 +1,7 @@ /** - * File generated by js-routes 2.2.8 - * Based on Rails 7.1.4 routes of Osc::Application + * @file Generated by js-routes 2.3.4. Based on Rails 7.1.5.1 routes of Osc::Application. + * @version 12d356819031face4f2d3c522b0da10dc3cb3ac970bfee938234252cbcfe8b2f + * @see https://github.com/railsware/js-routes */ // eslint-disable-next-line const __jsr = ( @@ -30,8 +31,9 @@ const __jsr = ( const ModuleReferences = { CJS: { define(routes) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - module.exports = routes; + if (module) { + module.exports = routes; + } }, isSupported() { return typeof module === "object"; @@ -39,10 +41,11 @@ const __jsr = ( }, AMD: { define(routes) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - define([], function () { - return routes; - }); + if (define) { + define([], function () { + return routes; + }); + } }, isSupported() { return typeof define === "function" && !!define.amd; @@ -112,6 +115,7 @@ const __jsr = ( "host", "port", "protocol", + "script_name", ]; class UtilsClass { constructor() { @@ -277,22 +281,30 @@ const __jsr = ( } build_route(parts, required_params, default_options, route, absolute, args) { const { keyword_parameters, query_parameters } = this.partition_parameters(parts, required_params, default_options, args); + let { trailing_slash, anchor, script_name } = keyword_parameters; const missing_params = required_params.filter((param) => !hasProp(query_parameters, param) || this.is_nullable(query_parameters[param])); if (missing_params.length) { throw new ParametersMissing(...missing_params); } let result = this.get_prefix() + this.visit(route, query_parameters); - if (keyword_parameters.trailing_slash) { + if (trailing_slash) { result = result.replace(/(.*?)[/]?$/, "$1/"); } const url_params = this.serialize(query_parameters); if (url_params.length) { result += "?" + url_params; } - result += keyword_parameters.anchor - ? "#" + keyword_parameters.anchor - : ""; + if (anchor) { + result += "#" + anchor; + } + if (script_name) { + const last_index = script_name.length - 1; + if (script_name[last_index] == "/" && result[0] == "/") { + script_name = script_name.slice(0, last_index); + } + result = script_name + result; + } if (absolute) { result = this.route_url(keyword_parameters) + result; } @@ -413,9 +425,7 @@ const __jsr = ( value = value.join("/"); } const result = this.path_identifier(value); - return false - ? result - : encodeURI(result); + return encodeURI(result); } get_prefix() { const prefix = this.configuration.prefix; @@ -485,6 +495,9 @@ const __jsr = ( return ReservedOptions.includes(key); } configure(new_config) { + if (new_config.prefix) { + console.warn("JsRoutes configuration prefix option is deprecated in favor of default_url_options.script_name."); + } this.configuration = { ...this.configuration, ...new_config }; return this.configuration; } @@ -502,30 +515,29 @@ const __jsr = ( define_module(name, module) { this.ensure_module_supported(name); ModuleReferences[name].define(module); + return module; } } - const Utils = new UtilsClass(); + const utils = new UtilsClass(); // We want this helper name to be short const __jsr = { r(parts_table, route_spec, absolute) { - return Utils.route(parts_table, route_spec, absolute); + return utils.route(parts_table, route_spec, absolute); }, }; - const result = { + return utils.define_module("ESM", { ...__jsr, configure: (config) => { - return Utils.configure(config); + return utils.configure(config); }, config: () => { - return Utils.config(); + return utils.config(); }, serialize: (object) => { - return Utils.serialize(object); + return utils.serialize(object); }, ...{}, - }; - Utils.define_module("ESM", result); - return result; + }); })(); export const configure = __jsr.configure; diff --git a/app/frontend/lib/store/LayoutStore.ts b/app/frontend/lib/store/LayoutStore.ts deleted file mode 100644 index 8afca44..0000000 --- a/app/frontend/lib/store/LayoutStore.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { create } from 'zustand' -import { type IColorSlice, type ISidebarSlice } from './slices' -import { createColorSlice } from './slices/colorSlice' -import { createSidebarSlice } from './slices/sidebarSlice' - -type LayoutStoreSlices = IColorSlice & ISidebarSlice & { - defaults: { - tableRecordsLimit: number - } -} - -const useLayoutStore = create()((...args) => ({ - defaults: { - tableRecordsLimit: 25, - }, - ...createColorSlice(...args), - ...createSidebarSlice(...args), -})) - -export default useLayoutStore diff --git a/app/frontend/lib/store/appLayoutMachine.ts b/app/frontend/lib/store/appLayoutMachine.ts index 06955f0..ae3649c 100644 --- a/app/frontend/lib/store/appLayoutMachine.ts +++ b/app/frontend/lib/store/appLayoutMachine.ts @@ -1,8 +1,8 @@ -import { createMachine } from 'xstate' +import { createMachine } from "xstate" const appLayoutMachine = createMachine({ - id: 'appLayout', - initial: '', + id: "appLayout", + initial: "", }) export default appLayoutMachine diff --git a/app/frontend/lib/store/contrastingColorSlice.ts b/app/frontend/lib/store/contrastingColorSlice.ts new file mode 100644 index 0000000..be26b12 --- /dev/null +++ b/app/frontend/lib/store/contrastingColorSlice.ts @@ -0,0 +1,38 @@ +import { StateCreator } from "zustand" +import { type MantineTheme } from "@mantine/core" +import { calculateContrastingColor } from "../colors" + +export interface ContrastingColorSlice { + contrastingColorsMap: Map + setThemeData: (theme: MantineTheme, colorScheme: "light" | "dark") => void + getContrastingColor: (color: string) => string +} + +export const createContrastingColorSlice: StateCreator = (set, get) => { + let theme: MantineTheme + let colorScheme: "light" | "dark" + + return { + theme: undefined, + colorScheme: "light", + contrastingColorsMap: new Map(), + + setThemeData: (newTheme, newColorScheme) => { + theme = newTheme + colorScheme = newColorScheme + }, + + getContrastingColor: (color) => { + const { contrastingColorsMap } = get() + + if(contrastingColorsMap.has(color)) { + return contrastingColorsMap.get(color)! + } + + const contrastingColor = calculateContrastingColor(color, theme, colorScheme) + contrastingColorsMap.set(color, contrastingColor) + + return contrastingColor + }, + } +} diff --git a/app/frontend/lib/store/defaultsSlice.ts b/app/frontend/lib/store/defaultsSlice.ts new file mode 100644 index 0000000..d073c6c --- /dev/null +++ b/app/frontend/lib/store/defaultsSlice.ts @@ -0,0 +1,13 @@ +import { StateCreator } from "zustand" + +export interface DefaultsSlice { + defaults: { + tableRecordsLimit: number + } +} + +export const createDefaultsSlice: StateCreator = () => ({ + defaults: { + tableRecordsLimit: 25, + }, +}) diff --git a/app/frontend/lib/store/index.ts b/app/frontend/lib/store/index.ts index 5c2f22f..8dde74f 100644 --- a/app/frontend/lib/store/index.ts +++ b/app/frontend/lib/store/index.ts @@ -1 +1,14 @@ -export { default as useLayoutStore } from './LayoutStore' +import { create } from "zustand" +import { createContrastingColorSlice, type ContrastingColorSlice } from "./contrastingColorSlice" +import { createLayoutSlice, type LayoutSlice } from "./layoutSlice" +import { createDefaultsSlice, type DefaultsSlice } from "./defaultsSlice" + +type GlobalStore = ContrastingColorSlice & LayoutSlice & DefaultsSlice + +const useStore = create((...args) => ({ + ...createContrastingColorSlice(...args), + ...createLayoutSlice(...args), + ...createDefaultsSlice(...args), +})) + +export default useStore diff --git a/app/frontend/lib/store/layoutSlice.tsx b/app/frontend/lib/store/layoutSlice.tsx new file mode 100644 index 0000000..d8d5eb3 --- /dev/null +++ b/app/frontend/lib/store/layoutSlice.tsx @@ -0,0 +1,50 @@ +import { StateCreator } from "zustand" +import { defaultColor } from "../theme" + +export interface LayoutSlice { + siteTitle: string + + sidebarOpen: boolean + sidebarVisible: boolean + sidebarBreakpoint: string + toggleSidebarOpen: (sidebarOpen?: boolean) => void + setSidebarVisible: (visible: boolean) => void + + primaryColor: string + setPrimaryColor: (color: string) => void + + NavMenu: React.JSX.Element + setNavMenu: (menu: React.JSX.Element) => void +} + +export const createLayoutSlice: StateCreator = (set) => ({ + siteTitle: "OSC", + + sidebarOpen: true, + sidebarVisible: false, + sidebarBreakpoint: "sm", + + primaryColor: defaultColor, + + NavMenu: <>, + + toggleSidebarOpen: sidebarOpen => set(state => { + let setValue = sidebarOpen + if(sidebarOpen === undefined) { + setValue = !state.sidebarOpen + } + return { sidebarOpen: setValue } + }), + + setSidebarVisible: visible => set(() => ({ + sidebarVisible: visible, + })), + + setPrimaryColor: color => set(state => ({ + primaryColor: color, + })), + + setNavMenu: menu => set(() => ({ + NavMenu: menu, + })), +}) diff --git a/app/frontend/lib/store/slices/colorSlice.ts b/app/frontend/lib/store/slices/colorSlice.ts deleted file mode 100644 index a28cacb..0000000 --- a/app/frontend/lib/store/slices/colorSlice.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { StateCreator } from 'zustand' -import { defaultColor } from '@/lib/theme' - -export interface IColorSlice { - primaryColor: string - setPrimaryColor: (color: string) => void -} - -export const createColorSlice: StateCreator = -(set) => ({ - primaryColor: defaultColor, - - setPrimaryColor: color => set(() => ({ - primaryColor: color, - })), - -}) diff --git a/app/frontend/lib/store/slices/index.ts b/app/frontend/lib/store/slices/index.ts deleted file mode 100644 index 2fb223d..0000000 --- a/app/frontend/lib/store/slices/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { type IColorSlice } from './colorSlice' -export { type IMenuSlice } from './menuSlice' -export { type ISidebarSlice } from './sidebarSlice' diff --git a/app/frontend/lib/store/slices/menuSlice.tsx b/app/frontend/lib/store/slices/menuSlice.tsx deleted file mode 100644 index 694b725..0000000 --- a/app/frontend/lib/store/slices/menuSlice.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { StateCreator } from 'zustand' -// import { DefaultMenu } from '@/Layouts/AppLayout/AppSidebar/menus' - -export interface IMenuSlice { - NavMenu: React.JSX.Element - setNavMenu: (menu: React.JSX.Element) => void -} - -export const createMenuSlice: StateCreator = -(set) => ({ - NavMenu: <>, // , - - setNavMenu: menu => set(() => ({ - NavMenu: menu, - })), -}) diff --git a/app/frontend/lib/store/slices/sidebarSlice.ts b/app/frontend/lib/store/slices/sidebarSlice.ts deleted file mode 100644 index ee5f296..0000000 --- a/app/frontend/lib/store/slices/sidebarSlice.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { StateCreator } from 'zustand' - -export interface ISidebarSlice { - sidebarOpen: boolean - sidebarVisible: boolean - sidebarBreakpoint: string - toggleSidebarOpen: (sidebarOpen?: boolean) => void - setSidebarVisible: (visible: boolean) => void -} - -export const createSidebarSlice: StateCreator = -(set) => ({ - sidebarOpen: true, - sidebarVisible: false, - sidebarBreakpoint: 'sm', - - toggleSidebarOpen: sidebarOpen => set(state => { - let setValue = sidebarOpen - if(sidebarOpen === undefined) { - setValue = !state.sidebarOpen - } - return { sidebarOpen: setValue } - }), - - setSidebarVisible: visible => set(() => ({ - sidebarVisible: visible, - })), -}) diff --git a/app/frontend/lib/strings.ts b/app/frontend/lib/strings.ts index a5f9e42..f20ad37 100644 --- a/app/frontend/lib/strings.ts +++ b/app/frontend/lib/strings.ts @@ -1,16 +1,16 @@ const WORDS_REGEX = /[A-Z\xC0-\xD6\xD8-\xDE]?[a-z\xDF-\xF6\xF8-\xFF]+|[A-Z\xC0-\xD6\xD8-\xDE]+(?![a-z\xDF-\xF6\xF8-\xFF])|\d+/g -const toWords = (str?: string|null) => { - const input = str ?? '' +const toWords = (str?: string | null) => { + const input = str ?? "" return input.match(WORDS_REGEX) || [] } -export const capitalize = (str?: string|null): string => { - if(typeof str !== 'string') return '' +export const capitalize = (str?: string | null): string => { + if(typeof str !== "string") return "" return str.charAt(0).toUpperCase() + str.slice(1) } -export const toCamelCase = (str?: string|null) => { +export const toCamelCase = (str?: string | null) => { const words = toWords(str) return words.map((word, i) => { @@ -19,7 +19,7 @@ export const toCamelCase = (str?: string|null) => { return lowered } return capitalize(lowered) - }).join('') + }).join("") } export const initials = (str: string) => { @@ -36,8 +36,8 @@ export const initials = (str: string) => { return initials } -export const toKebabCase = (str?: string|null) => { +export const toKebabCase = (str?: string | null) => { const words = toWords(str) - return words.map((word, i) => word.toLocaleLowerCase()).join('-') + return words.map((word, i) => word.toLocaleLowerCase()).join("-") } diff --git a/app/frontend/lib/theme.ts b/app/frontend/lib/theme.ts index e69551e..a186c3c 100644 --- a/app/frontend/lib/theme.ts +++ b/app/frontend/lib/theme.ts @@ -1,23 +1,23 @@ -import { createTheme, DEFAULT_THEME, mergeMantineTheme } from '@mantine/core' -import { themeToVars } from '@mantine/vanilla-extract' -import breakpoints from './breakpoints.mjs' +import { createTheme, DEFAULT_THEME, mergeMantineTheme } from "@mantine/core" +import { themeToVars } from "@mantine/vanilla-extract" +import breakpoints from "./breakpoints.mjs" -export const defaultColor = 'blue' +export const defaultColor = "blue" export const themeObject = { breakpoints, - defaultRadius: 'xs', + defaultRadius: "xs", spacing: { - xxl: 'calc(2.5rem * var(--mantine-scale))', - xxs: 'calc(0.5rem * var(--mantine-scale))', + xxl: "calc(2.5rem * var(--mantine-scale))", + xxs: "calc(0.5rem * var(--mantine-scale))", }, shadows: { - xs: '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)', - sm: '0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)', - md: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)', - lg: '0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)', - xl: '0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22)', - xxl: '0 29px 52px rgba(0,0,0,0.40), 0 25px 16px rgba(0,0,0,0.20)', + xs: "0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)", + sm: "0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)", + md: "0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)", + lg: "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)", + xl: "0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22)", + xxl: "0 29px 52px rgba(0,0,0,0.40), 0 25px 16px rgba(0,0,0,0.20)", }, other: { table: { diff --git a/app/frontend/lib/units.ts b/app/frontend/lib/units.ts index 57575d5..b507954 100644 --- a/app/frontend/lib/units.ts +++ b/app/frontend/lib/units.ts @@ -1,7 +1,7 @@ -import { px } from '@mantine/core' +import { px } from "@mantine/core" const fixedPx = (val: string) => { - return +px(val) + return + px(val) } export { fixedPx as px } diff --git a/app/frontend/lib/uuid.ts b/app/frontend/lib/uuid.ts index 17900e2..179b1e9 100644 --- a/app/frontend/lib/uuid.ts +++ b/app/frontend/lib/uuid.ts @@ -1,4 +1,4 @@ -const B64_SEPARATOR = ' ' +const B64_SEPARATOR = " " export const encodeId = (model: string, id: number) => btoa(`${model}${B64_SEPARATOR}${id}`) diff --git a/app/frontend/lib/withLayout.ts b/app/frontend/lib/withLayout.ts new file mode 100644 index 0000000..5ec6f96 --- /dev/null +++ b/app/frontend/lib/withLayout.ts @@ -0,0 +1,13 @@ +import { LAYOUTS } from "@/Layouts" +import { type PagesObject } from "@/entrypoints/application" + +type LayoutType = keyof typeof LAYOUTS + +export function withLayout( + Component: PagesObject["default"], + layout: LayoutType +) { + Component.defaultLayout = layout + + return Component +} diff --git a/app/frontend/queries/commands/index.ts b/app/frontend/queries/commands/index.ts index 938d84e..a494946 100644 --- a/app/frontend/queries/commands/index.ts +++ b/app/frontend/queries/commands/index.ts @@ -1,2 +1,2 @@ -export * from './queries' -export * from './mutations' +export * from "./queries" +export * from "./mutations" diff --git a/app/frontend/queries/commands/keys.ts b/app/frontend/queries/commands/keys.ts index 831c164..dcb4f7b 100644 --- a/app/frontend/queries/commands/keys.ts +++ b/app/frontend/queries/commands/keys.ts @@ -1,7 +1,7 @@ -const queryRoot = 'commands' +const queryRoot = "commands" export const queryKeys = { commands: [queryRoot] as const, command: (slug: string) => [queryRoot, slug] as const, - payloadTypes: [queryRoot, 'payloadTypes'] as const, + payloadTypes: [queryRoot, "payloadTypes"] as const, } diff --git a/app/frontend/queries/commands/mutations.ts b/app/frontend/queries/commands/mutations.ts index 0e6bd1d..d73ea0a 100644 --- a/app/frontend/queries/commands/mutations.ts +++ b/app/frontend/queries/commands/mutations.ts @@ -1,8 +1,8 @@ import { useMutation, useQueryClient } from "@tanstack/react-query" import { type ReactMutationFunction } from ".." -import axios from 'axios'; -import { Routes } from "@/lib"; -import { queryKeys } from "./keys"; +import axios from "axios" +import { Routes } from "@/lib" +import { queryKeys } from "./keys" export const useCreateCommand: ReactMutationFunction = (options) => { const queryClient = useQueryClient() diff --git a/app/frontend/queries/commands/queries.ts b/app/frontend/queries/commands/queries.ts index 7528042..6ba6ecc 100644 --- a/app/frontend/queries/commands/queries.ts +++ b/app/frontend/queries/commands/queries.ts @@ -1,9 +1,9 @@ -import { useQuery } from '@tanstack/react-query' -import { Routes } from '@/lib' -import axios from 'axios' -import { ComboboxData } from '@mantine/core' -import { type ReactQueryFunction } from '..' -import { queryKeys } from "./keys"; +import { useQuery } from "@tanstack/react-query" +import { Routes } from "@/lib" +import axios from "axios" +import { ComboboxData } from "@mantine/core" +import { type ReactQueryFunction } from ".." +import { queryKeys } from "./keys" export const useGetCommands: ReactQueryFunction = (options) => { return useQuery({ queryKey: queryKeys.commands, diff --git a/app/frontend/queries/controls/index.ts b/app/frontend/queries/controls/index.ts index 938d84e..a494946 100644 --- a/app/frontend/queries/controls/index.ts +++ b/app/frontend/queries/controls/index.ts @@ -1,2 +1,2 @@ -export * from './queries' -export * from './mutations' +export * from "./queries" +export * from "./mutations" diff --git a/app/frontend/queries/controls/keys.ts b/app/frontend/queries/controls/keys.ts index 22620a2..101863a 100644 --- a/app/frontend/queries/controls/keys.ts +++ b/app/frontend/queries/controls/keys.ts @@ -1,4 +1,4 @@ -const queryRoot = 'control' +const queryRoot = "control" export const queryKeys = { controls: [queryRoot] as const, diff --git a/app/frontend/queries/controls/mutations.ts b/app/frontend/queries/controls/mutations.ts index 0c17654..f2a87ab 100644 --- a/app/frontend/queries/controls/mutations.ts +++ b/app/frontend/queries/controls/mutations.ts @@ -1,8 +1,8 @@ import { useMutation, useQueryClient } from "@tanstack/react-query" import { type ReactMutationFunction } from ".." -import axios from 'axios'; -import { Routes } from "@/lib"; -import { queryKeys } from "./keys"; +import axios from "axios" +import { Routes } from "@/lib" +import { queryKeys } from "./keys" export const useCreateControl: ReactMutationFunction< Schema.ControlsFormData, diff --git a/app/frontend/queries/controls/queries.ts b/app/frontend/queries/controls/queries.ts index 82be53c..c530289 100644 --- a/app/frontend/queries/controls/queries.ts +++ b/app/frontend/queries/controls/queries.ts @@ -1,7 +1,7 @@ -import { useQuery } from '@tanstack/react-query' -import { Routes } from '@/lib' -import axios from 'axios' -import { type ReactQueryFunction } from '..' +import { useQuery } from "@tanstack/react-query" +import { Routes } from "@/lib" +import axios from "axios" +import { type ReactQueryFunction } from ".." export const useGetControl: ReactQueryFunction = ({ slug }, options) => { return useQuery({ @@ -16,7 +16,7 @@ export const useGetControl: ReactQueryFunction = (options) => { return useQuery({ - queryKey: ['controls'], + queryKey: ["controls"], queryFn: async () => { const res = await axios.get(Routes.apiControls()) return res.data diff --git a/app/frontend/queries/index.ts b/app/frontend/queries/index.ts index 829fed8..fbfda9f 100644 --- a/app/frontend/queries/index.ts +++ b/app/frontend/queries/index.ts @@ -3,13 +3,13 @@ import { type UseMutationOptions, type UseQueryResult, type UseMutationResult, -} from '@tanstack/react-query' +} from "@tanstack/react-query" /** * Query types */ -interface LimitedQueryOptions extends Omit, 'queryKey' | 'queryFn'> {} +interface LimitedQueryOptions extends Omit, "queryKey" | "queryFn"> {} type ReactQueryFunctionBasic = (options?: LimitedQueryOptions) => UseQueryResult @@ -30,7 +30,7 @@ export type ReactQueryFunction = */ interface LimitedMutationOptions extends - Omit, 'mutationKey' | 'onSuccess'> { + Omit, "mutationKey" | "onSuccess"> { onSuccess?: (data: TReturnData, variables: TVariables) => void } @@ -58,7 +58,7 @@ export type ReactMutationFunction< * Folder exports */ -export * from './commands' -export * from './protocols' -export * from './servers' -export * from './controls' +export * from "./commands" +export * from "./protocols" +export * from "./servers" +export * from "./controls" diff --git a/app/frontend/queries/protocols/index.ts b/app/frontend/queries/protocols/index.ts index 938d84e..a494946 100644 --- a/app/frontend/queries/protocols/index.ts +++ b/app/frontend/queries/protocols/index.ts @@ -1,2 +1,2 @@ -export * from './queries' -export * from './mutations' +export * from "./queries" +export * from "./mutations" diff --git a/app/frontend/queries/protocols/keys.ts b/app/frontend/queries/protocols/keys.ts index 7d280c8..707d35c 100644 --- a/app/frontend/queries/protocols/keys.ts +++ b/app/frontend/queries/protocols/keys.ts @@ -1,7 +1,7 @@ -const queryRoot = 'protocols' +const queryRoot = "protocols" export const queryKeys = { protocols: [queryRoot] as const, protocol: (slug: string) => [queryRoot, slug] as const, - protocolOptions: [queryRoot, 'options'] as const, + protocolOptions: [queryRoot, "options"] as const, } diff --git a/app/frontend/queries/protocols/mutations.ts b/app/frontend/queries/protocols/mutations.ts index 2babab1..c44459a 100644 --- a/app/frontend/queries/protocols/mutations.ts +++ b/app/frontend/queries/protocols/mutations.ts @@ -1,8 +1,8 @@ import { useMutation, useQueryClient } from "@tanstack/react-query" import { type ReactMutationFunction } from ".." -import axios from 'axios'; -import { Routes } from "@/lib"; -import { queryKeys } from "./keys"; +import axios from "axios" +import { Routes } from "@/lib" +import { queryKeys } from "./keys" export const useCreateProtocol: ReactMutationFunction< Schema.ProtocolsFormData, diff --git a/app/frontend/queries/protocols/queries.ts b/app/frontend/queries/protocols/queries.ts index d8acfd5..3333ace 100644 --- a/app/frontend/queries/protocols/queries.ts +++ b/app/frontend/queries/protocols/queries.ts @@ -1,8 +1,8 @@ -import { useQuery } from '@tanstack/react-query' -import { Routes } from '@/lib' -import axios from 'axios' -import { type ReactQueryFunction } from '..' -import { queryKeys } from './keys' +import { useQuery } from "@tanstack/react-query" +import { Routes } from "@/lib" +import axios from "axios" +import { type ReactQueryFunction } from ".." +import { queryKeys } from "./keys" export const useGetProtocol: ReactQueryFunction = ({ slug }, options) => { return useQuery({ diff --git a/app/frontend/queries/servers/index.ts b/app/frontend/queries/servers/index.ts index 938d84e..a494946 100644 --- a/app/frontend/queries/servers/index.ts +++ b/app/frontend/queries/servers/index.ts @@ -1,2 +1,2 @@ -export * from './queries' -export * from './mutations' +export * from "./queries" +export * from "./mutations" diff --git a/app/frontend/queries/servers/keys.ts b/app/frontend/queries/servers/keys.ts index 0b66fed..2a8999e 100644 --- a/app/frontend/queries/servers/keys.ts +++ b/app/frontend/queries/servers/keys.ts @@ -1,4 +1,4 @@ -const queryRoot = 'servers' +const queryRoot = "servers" export const queryKeys = { servers: [queryRoot] as const, diff --git a/app/frontend/queries/servers/mutations.ts b/app/frontend/queries/servers/mutations.ts index 3fe2401..c8c9d63 100644 --- a/app/frontend/queries/servers/mutations.ts +++ b/app/frontend/queries/servers/mutations.ts @@ -1,8 +1,8 @@ import { useMutation, useQueryClient } from "@tanstack/react-query" import { type ReactMutationFunction } from ".." -import axios from 'axios'; -import { Routes } from "@/lib"; -import { queryKeys } from "./keys"; +import axios from "axios" +import { Routes } from "@/lib" +import { queryKeys } from "./keys" export const useCreateServer: ReactMutationFunction< Schema.ServersFormData, diff --git a/app/frontend/queries/servers/queries.ts b/app/frontend/queries/servers/queries.ts index 6fefdbc..a39604a 100644 --- a/app/frontend/queries/servers/queries.ts +++ b/app/frontend/queries/servers/queries.ts @@ -1,8 +1,8 @@ -import { useQuery } from '@tanstack/react-query' -import { Routes } from '@/lib' -import axios from 'axios' -import { type ReactQueryFunction } from '..' -import { queryKeys } from './keys' +import { useQuery } from "@tanstack/react-query" +import { Routes } from "@/lib" +import axios from "axios" +import { type ReactQueryFunction } from ".." +import { queryKeys } from "./keys" export const useGetServers: ReactQueryFunction = (options) => { return useQuery({ diff --git a/app/frontend/queries/users/index.ts b/app/frontend/queries/users/index.ts index 938d84e..a494946 100644 --- a/app/frontend/queries/users/index.ts +++ b/app/frontend/queries/users/index.ts @@ -1,2 +1,2 @@ -export * from './queries' -export * from './mutations' +export * from "./queries" +export * from "./mutations" diff --git a/app/frontend/queries/users/keys.ts b/app/frontend/queries/users/keys.ts index 5f1b792..3d0a7db 100644 --- a/app/frontend/queries/users/keys.ts +++ b/app/frontend/queries/users/keys.ts @@ -1,8 +1,8 @@ -const queryRoot = 'users' +const queryRoot = "users" export const queryKeys = { users: [queryRoot] as const, user: (id: string | number) => [queryRoot, id] as const, - userPreferences: (id: string | number) => [queryRoot, id, 'preferences'] as const, - userTablePreferences: (id: string | number) => [queryRoot, id, 'table_preferences'] as const, + userPreferences: (id: string | number) => [queryRoot, id, "preferences"] as const, + userTablePreferences: (id: string | number) => [queryRoot, id, "table_preferences"] as const, } diff --git a/app/frontend/queries/users/mutations.ts b/app/frontend/queries/users/mutations.ts index 7a11367..cc80c63 100644 --- a/app/frontend/queries/users/mutations.ts +++ b/app/frontend/queries/users/mutations.ts @@ -1,9 +1,9 @@ -import { Routes } from '@/lib' -import axios from 'axios' -import { type UserPreferences, type UserTablePreferences } from '@/types' -import { useMutation, useQueryClient } from '@tanstack/react-query' -import { type ReactMutationFunction } from '..' -import { queryKeys } from './keys' +import { Routes } from "@/lib" +import axios from "axios" +import { type UserPreferences, type UserTablePreferences } from "@/types" +import { useMutation, useQueryClient } from "@tanstack/react-query" +import { type ReactMutationFunction } from ".." +import { queryKeys } from "./keys" type UserPreferencesParams = { id: string | number @@ -23,8 +23,8 @@ export const useUpdateUserPreferences: ReactMutationFunction< const res = await axios.patch(Routes.apiUpdateUserPreferences(id), { user: { user_preferences: preferences }, }) - if(res.statusText !== 'OK') { - throw new Error('Failed to update user preferences') + if(res.statusText !== "OK") { + throw new Error("Failed to update user preferences") } return res.data }, @@ -54,8 +54,8 @@ export const useUpdateUserTablePreferences: ReactMutationFunction< const res = await axios.patch(Routes.apiUpdateTablePreferences(id), { user: { table_preferences: preferences }, }) - if(res.statusText !== 'OK') { - throw new Error('Failed to update table preferences') + if(res.statusText !== "OK") { + throw new Error("Failed to update table preferences") } return res.data }, diff --git a/app/frontend/queries/users/queries.ts b/app/frontend/queries/users/queries.ts index 57397d6..9ce972f 100644 --- a/app/frontend/queries/users/queries.ts +++ b/app/frontend/queries/users/queries.ts @@ -1,8 +1,8 @@ -import { useQuery } from '@tanstack/react-query' -import { Routes } from '@/lib' -import axios from 'axios' -import { type ReactQueryFunction } from '..' -import { queryKeys } from './keys' +import { useQuery } from "@tanstack/react-query" +import { Routes } from "@/lib" +import axios from "axios" +import { type ReactQueryFunction } from ".." +import { queryKeys } from "./keys" export const useGetUsers: ReactQueryFunction = (options) => { return useQuery({ diff --git a/app/frontend/types/FlashMessage.ts b/app/frontend/types/FlashMessage.ts index d158ac6..5c7c913 100644 --- a/app/frontend/types/FlashMessage.ts +++ b/app/frontend/types/FlashMessage.ts @@ -1 +1 @@ -export type FlashMessage = Record<'success' | 'alert' | 'info' | 'warning', string> +export type FlashMessage = Record<"success" | "alert" | "info" | "warning", string> diff --git a/app/frontend/types/InputTypes.ts b/app/frontend/types/InputTypes.ts index 7e69313..ff000fe 100644 --- a/app/frontend/types/InputTypes.ts +++ b/app/frontend/types/InputTypes.ts @@ -1 +1 @@ -export type InputType = 'button'|'checkbox'|'color'|'currency'|'date'|'datetime-local'|'email'|'file'|'hidden'|'image'|'month'|'number'|'password'|'radio'|'range'|'reset'|'search'|'select'|'submit'|'tel'|'text'|'textarea'|'time'|'url' +export type InputType = "button" | "checkbox" | "color" | "currency" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "select" | "submit" | "tel" | "text" | "textarea" | "time" | "url" diff --git a/app/frontend/types/Money.ts b/app/frontend/types/Money.ts index 4e2ee85..62b17f7 100644 --- a/app/frontend/types/Money.ts +++ b/app/frontend/types/Money.ts @@ -7,4 +7,4 @@ export type Money = { export type CurrencyOption = { symbol: string code: string -} \ No newline at end of file +} diff --git a/app/frontend/types/Pagination.ts b/app/frontend/types/Pagination.ts index 1d8eca3..815d979 100644 --- a/app/frontend/types/Pagination.ts +++ b/app/frontend/types/Pagination.ts @@ -1,15 +1,4 @@ -export interface Pagination { - count: number - pages: number - limit: number - current_page: number - next_page: number - prev_page: number - is_first_page: boolean - is_last_page: boolean -} - export type PaginatedModel = { data: T - pagination: Pagination -} \ No newline at end of file + pagination: Schema.Pagination +} diff --git a/app/frontend/types/UserPreferences.ts b/app/frontend/types/UserPreferences.ts index 6612b8e..abcec33 100644 --- a/app/frontend/types/UserPreferences.ts +++ b/app/frontend/types/UserPreferences.ts @@ -1,3 +1,3 @@ export interface UserPreferences { - colorScheme?: 'light'|'dark'|'auto' + colorScheme?: "light" | "dark" | "auto" } diff --git a/app/frontend/types/index.ts b/app/frontend/types/index.ts index 5af06a3..63a7037 100644 --- a/app/frontend/types/index.ts +++ b/app/frontend/types/index.ts @@ -1,6 +1,6 @@ -export { type FlashMessage } from './FlashMessage' -export { type InputType } from './InputTypes' -export { type Pagination, type PaginatedModel } from './Pagination' -export { type UserTablePreferences } from './UserTablePreferences' -export { type UserPreferences } from './UserPreferences' -export { type Money, type CurrencyOption } from './Money' +export { type FlashMessage } from "./FlashMessage" +export { type InputType } from "./InputTypes" +export { type Pagination, type PaginatedModel } from "./Pagination" +export { type UserTablePreferences } from "./UserTablePreferences" +export { type UserPreferences } from "./UserPreferences" +export { type Money, type CurrencyOption } from "./Money" diff --git a/app/frontend/types/inertia.d.ts b/app/frontend/types/inertia.d.ts new file mode 100644 index 0000000..bd5dde1 --- /dev/null +++ b/app/frontend/types/inertia.d.ts @@ -0,0 +1,48 @@ +import { type InertiaFormProps as DefaultInertiaFormProps, InertiaHeadProps } from "@inertiajs/core-react" +import { Page, PageProps, Errors, ErrorBag } from "@inertiajs/core" + +declare global { + + interface SharedInertiaProps extends PageProps { + auth: { + form_authenticty_token: string + user: Schema.UsersShare + } + flash: FlashMessage + errors: Errors & ErrorBag + } + + interface IndexedInertiaFormProps extends DefaultInertiaFormProps{ + [key: string]: any + } + + interface InertiaFormProps> extends Omit { + errors: Record + getData: (key: string) => any + unsetData: (key: string) => void + getError: (data: string) => string + } + + interface IInertiaInputProps { + name: string + model?: string + errorKey?: string + compact?: boolean + onChange?: (value: T, form: UseFormProps) => void + onBlur?: (value: T, form: UseFormProps) => void + } + + declare namespace Inertia { + type Errors = Record + + interface FormProps> extends InertiaFormProps { + model?: string + method: HTTPVerb + to?: string + getData: (key: string) => any + getError: (data: string) => string + unsetData: (key: string) => void + submit: () => Promise + } + } +} diff --git a/app/frontend/types/mantine.d.ts b/app/frontend/types/mantine.d.ts index d258d87..04eb697 100644 --- a/app/frontend/types/mantine.d.ts +++ b/app/frontend/types/mantine.d.ts @@ -1,7 +1,7 @@ -import { type SelectProps, type InputProps } from '@mantine/core' +import { type SelectProps, type InputProps } from "@mantine/core" type OverriddenColors = { - [key in keyof Colors]: key extends 'primary' + [key in keyof Colors]: key extends "primary" ? { 0: string 1: string @@ -24,7 +24,7 @@ type OverriddenColors = { : Colors[key] } -declare module '@mantine/vanilla-extract/lib/types' { +declare module "@mantine/vanilla-extract/lib/types" { type Colors = OverriddenColors interface MantineVars { @@ -32,7 +32,7 @@ declare module '@mantine/vanilla-extract/lib/types' { } } -declare module '@mantine/vanilla-extract' { +declare module "@mantine/vanilla-extract" { type Colors = OverriddenColors interface MantineVars { @@ -40,7 +40,7 @@ declare module '@mantine/vanilla-extract' { } } -declare module '@mantine/core' { +declare module "@mantine/core" { export interface MantineThemeOther { colorSchemeOption: (light: any, dark: any) => any header: { @@ -74,7 +74,7 @@ declare module '@mantine/core' { > = { as?: T } & TProps & - Omit, keyof TProps & 'as'> + Omit, keyof TProps & "as"> interface PolymorphicComponent { as: T diff --git a/app/frontend/types/serializers/Control.d.ts b/app/frontend/types/serializers/Control.d.ts index a171d3d..7d88e27 100644 --- a/app/frontend/types/serializers/Control.d.ts +++ b/app/frontend/types/serializers/Control.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 11440afa5ce58484a6ab36473b4d78fb +// TypesFromSerializers CacheKey 0bc106863143a01426135d7263f91a66 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type Command from './Command' @@ -11,7 +11,7 @@ declare global { color?: string command: Command command_id?: number - control_type: string + control_type: "button" | "slider" | "spacer" max_value?: string | number min_value?: string | number order: number diff --git a/app/frontend/types/serializers/Controls/Edit.d.ts b/app/frontend/types/serializers/Controls/Edit.d.ts index 7ccd160..1d62002 100644 --- a/app/frontend/types/serializers/Controls/Edit.d.ts +++ b/app/frontend/types/serializers/Controls/Edit.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 0770a783eb2bc87c468393c865015831 +// TypesFromSerializers CacheKey 49b1efb72ac927272bfc40e401c3b239 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type Command from '../Command' @@ -11,7 +11,7 @@ declare global { color?: string command: Command command_id?: number - control_type: string + control_type: "button" | "slider" | "spacer" created_at: string | Date max_value?: string | number min_value?: string | number diff --git a/app/frontend/types/serializers/Controls/FormData.d.ts b/app/frontend/types/serializers/Controls/FormData.d.ts index bb58ad4..d1fa7fb 100644 --- a/app/frontend/types/serializers/Controls/FormData.d.ts +++ b/app/frontend/types/serializers/Controls/FormData.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 4e173dce70b753b845bc6a24cb9c641a +// TypesFromSerializers CacheKey 37cff8a2614851e20ca11699c31bc654 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type CommandsFormData from '../Commands/FormData' @@ -11,14 +11,14 @@ declare global { color?: string command?: CommandsFormData command_id?: number - control_type: string + control_type: "button" | "slider" | "spacer" max_value?: string | number min_value?: string | number - order: number + order?: number protocol?: ProtocolsFormData protocol_id?: number screen_id: number - title: string + title?: string value?: string | number } } diff --git a/app/frontend/types/serializers/Controls/Index.d.ts b/app/frontend/types/serializers/Controls/Index.d.ts index fbea870..4cd6310 100644 --- a/app/frontend/types/serializers/Controls/Index.d.ts +++ b/app/frontend/types/serializers/Controls/Index.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 7a569e8cd6a73a61659a0b1a7e0af640 +// TypesFromSerializers CacheKey 581b9d49d2db3413d036e0ad578ea5c8 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type Command from '../Command' @@ -11,7 +11,7 @@ declare global { color?: string command: Command command_id?: number - control_type: string + control_type: "button" | "slider" | "spacer" created_at: string | Date max_value?: string | number min_value?: string | number diff --git a/app/frontend/types/serializers/Controls/Show.d.ts b/app/frontend/types/serializers/Controls/Show.d.ts index 33c4774..ee8f93b 100644 --- a/app/frontend/types/serializers/Controls/Show.d.ts +++ b/app/frontend/types/serializers/Controls/Show.d.ts @@ -1,22 +1,22 @@ -// TypesFromSerializers CacheKey ef613b82d29f55a49ee7be4ea8492ab2 +// TypesFromSerializers CacheKey e81f3516f4adac05308c1a02d39ffa98 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. -import type CommandsShow from '../Commands/Show' -import type ProtocolsShow from '../Protocols/Show' +import type Command from '../Command' +import type Protocol from '../Protocol' declare global { namespace Schema { interface ControlsShow { id: number color?: string - command: CommandsShow + command?: Command command_id?: number - control_type: string + control_type: "button" | "slider" | "spacer" created_at: string | Date max_value?: string | number min_value?: string | number order: number - protocol: ProtocolsShow + protocol?: Protocol protocol_id?: number screen_id: number title: string diff --git a/app/frontend/types/serializers/Protocols/Edit.d.ts b/app/frontend/types/serializers/Protocols/Edit.d.ts index 0b7d3ae..29f9899 100644 --- a/app/frontend/types/serializers/Protocols/Edit.d.ts +++ b/app/frontend/types/serializers/Protocols/Edit.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 0bd8d5845e33f82ef98f3902ba585932 +// TypesFromSerializers CacheKey a9b20052695d91508820dd079dee245c // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type CommandsFormData from '../Commands/FormData' @@ -9,10 +9,12 @@ declare global { interface ProtocolsEdit { id: number commands: CommandsFormData[] + created_at: string | Date description?: string protocols_commands: ProtocolsCommandsFormData[] slug: string title: string + updated_at: string | Date } } } diff --git a/app/frontend/types/serializers/Protocols/Show.d.ts b/app/frontend/types/serializers/Protocols/Show.d.ts index bb6f19b..cc3bf90 100644 --- a/app/frontend/types/serializers/Protocols/Show.d.ts +++ b/app/frontend/types/serializers/Protocols/Show.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 51d92a1c0febda98424763bb16972478 +// TypesFromSerializers CacheKey 769c08a77763c163f07ddf9ff5ddffbc // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. import type ProtocolsCommands from './Commands' @@ -8,9 +8,11 @@ declare global { interface ProtocolsShow { id: number commands: ProtocolsCommands[] + created_at: string | Date description?: string slug: string title: string + updated_at: string | Date } } } diff --git a/app/frontend/types/serializers/Server.d.ts b/app/frontend/types/serializers/Server.d.ts index 7e8829a..ea8d41a 100644 --- a/app/frontend/types/serializers/Server.d.ts +++ b/app/frontend/types/serializers/Server.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 1d0ebd771dfaa1616c2b8cc2815f3579 +// TypesFromSerializers CacheKey 40aabc61d8d8aa6ed654b56786781183 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id?: number slug?: string description?: string - hostname?: string + hostname: string port?: number title: string } diff --git a/app/frontend/types/serializers/Servers/Edit.d.ts b/app/frontend/types/serializers/Servers/Edit.d.ts index 98e3564..7996a54 100644 --- a/app/frontend/types/serializers/Servers/Edit.d.ts +++ b/app/frontend/types/serializers/Servers/Edit.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey f339f7c6ee20beabffa34c27dd8b94d5 +// TypesFromSerializers CacheKey 86721184a9f27404319bdc672e4b837a // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id: number created_at: string | Date description?: string - hostname?: string + hostname: string port?: number slug: string title: string diff --git a/app/frontend/types/serializers/Servers/FormData.d.ts b/app/frontend/types/serializers/Servers/FormData.d.ts index 7c9c49a..9960bf5 100644 --- a/app/frontend/types/serializers/Servers/FormData.d.ts +++ b/app/frontend/types/serializers/Servers/FormData.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 84d128d8fe827615484a2b15377c8951 +// TypesFromSerializers CacheKey 5dd6b66905e60008cfff90d5da69b3f9 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id?: number slug?: string description?: string - hostname?: string + hostname: string port?: number title: string } diff --git a/app/frontend/types/serializers/Servers/Index.d.ts b/app/frontend/types/serializers/Servers/Index.d.ts index 848e806..e9ac508 100644 --- a/app/frontend/types/serializers/Servers/Index.d.ts +++ b/app/frontend/types/serializers/Servers/Index.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 716bc833e9c693f93d1559387bf54345 +// TypesFromSerializers CacheKey f4d136286c2e492204840de9b4897383 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id: number created_at: string | Date description?: string - hostname?: string + hostname: string port?: number slug: string title: string diff --git a/app/frontend/types/serializers/Servers/Reference.d.ts b/app/frontend/types/serializers/Servers/Reference.d.ts index 62c5e15..38828b6 100644 --- a/app/frontend/types/serializers/Servers/Reference.d.ts +++ b/app/frontend/types/serializers/Servers/Reference.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 94c79fec6d06b1a04c3b467c3f749357 +// TypesFromSerializers CacheKey 1849ca7af9fd288fed83589abde6bcbd // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id: number created_at: string | Date description?: string - hostname?: string + hostname: string port?: number slug: string title: string diff --git a/app/frontend/types/serializers/Servers/Show.d.ts b/app/frontend/types/serializers/Servers/Show.d.ts index d0a73a6..2e52395 100644 --- a/app/frontend/types/serializers/Servers/Show.d.ts +++ b/app/frontend/types/serializers/Servers/Show.d.ts @@ -1,4 +1,4 @@ -// TypesFromSerializers CacheKey 1265f32fcf64780e057802ccf4bb49ae +// TypesFromSerializers CacheKey e2851dc9ea3d1728e6dda994f8de6031 // // DO NOT MODIFY: This file was automatically generated by TypesFromSerializers. export {} @@ -9,7 +9,7 @@ declare global { id: number created_at: string | Date description?: string - hostname?: string + hostname: string port?: number slug: string title: string diff --git a/app/frontend/types/types.d.ts b/app/frontend/types/types.d.ts new file mode 100644 index 0000000..e732251 --- /dev/null +++ b/app/frontend/types/types.d.ts @@ -0,0 +1,28 @@ +import React from "react" +import { type ISelectProps } from "@/Components/Inputs/Select" +import { type SelectProps, type InputProps } from "@mantine/core" + +declare global { + type HTTPVerb = "post" | "put" | "get" | "patch" | "delete" + + type InputElementType = "button" | "checkbox" | "color" | "currency" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "select" | "submit" | "tel" | "text" | "textarea" | "time" | "url" + + type FlashMessage = Record<"success" | "alert" | "info" | "warning", { + id: string + message: string + }> + + declare namespace Schema { + + interface Pagination { + count: number + pages: number + limit: number + current_page: number + next_page: number + prev_page: number + is_first_page: boolean + is_last_page: boolean + } + } +} diff --git a/app/jobs/osc_job.rb b/app/jobs/osc_job.rb index 50bce85..b8784b3 100644 --- a/app/jobs/osc_job.rb +++ b/app/jobs/osc_job.rb @@ -3,22 +3,33 @@ class OscJob < ApplicationJob private def send_osc_command(command, client = nil) - client ||= udp_client_from_server(command[:server]) + command_hash = command_hash(command) + + client ||= udp_client_from_server(command_hash[:server]) - # pry command message = OscService::Message.new( - command[:address], - cast_to_type(command[:value], command[:payload_type]), + command_hash[:address], + cast_to_type(command_hash[:value], command_hash[:payload_type]), ) client.send(message) rescue Errno::ECONNREFUSED => e - server = command[:server] || Server.find(command[:server_id]) + server = command_hash[:server] || Server.find(command_hash[:server_id]) log_connection_error(server, e) rescue StandardError => e Rails.logger.error({ error: e }) end + def command_hash(command) + if command.respond_to?(:attributes) + command.attributes.with_indifferent_access.merge( + server: command.server.attributes.with_indifferent_access, + ) + else + command + end + end + def udp_client_from_server(server) OscService::Client.new( host: server[:hostname], diff --git a/app/jobs/send_osc_commands_job.rb b/app/jobs/send_osc_commands_job.rb index a696b1c..5726dbd 100644 --- a/app/jobs/send_osc_commands_job.rb +++ b/app/jobs/send_osc_commands_job.rb @@ -7,12 +7,12 @@ def perform(commands, server = nil) client = udp_client_from_server(server) end - if commands.respond_to?('each') + if commands.respond_to?("each") commands.each do |command| send_osc_command(command, client) end else - send_osc_command(command, client) + send_osc_command(commands, client) end end end diff --git a/app/jobs/send_osc_protocol_job.rb b/app/jobs/send_osc_protocol_job.rb index f610e57..bd6f28d 100644 --- a/app/jobs/send_osc_protocol_job.rb +++ b/app/jobs/send_osc_protocol_job.rb @@ -18,7 +18,6 @@ def perform(protocol) commands_grouped_by_delay.push(command) next end - # When a command has a delay, send off the batch and start fresh delay += command[:delay] diff --git a/app/models/command.rb b/app/models/command.rb index f2ae6bb..e3f19a1 100644 --- a/app/models/command.rb +++ b/app/models/command.rb @@ -29,7 +29,7 @@ class Command < ApplicationRecord pg_search_scope( :search, against: [:title, :address, :payload, :description], - assoicated_against: { + associated_against: { protocols: [:title, :description] }, using: { @@ -42,6 +42,8 @@ class Command < ApplicationRecord enum :payload_type, { integer: 0, float: 1, string: 2, blob: 3, time: 4, symbol: 5, character: 6, boolean: 7 } + attribute :allow_custom_value, :boolean, default: false + slug :title has_many :protocols_commands, dependent: :destroy @@ -50,6 +52,8 @@ class Command < ApplicationRecord belongs_to :server + validates :title, presence: true + scope :includes_associated, -> { includes([:protocols_commands, :protocols, :command_values]) } accepts_nested_attributes_for :command_values, allow_destroy: true diff --git a/app/models/command_value.rb b/app/models/command_value.rb index 2f3b8b7..10e4319 100644 --- a/app/models/command_value.rb +++ b/app/models/command_value.rb @@ -20,5 +20,7 @@ class CommandValue < ApplicationRecord resourcify + validates :value, presence: true + belongs_to :command end diff --git a/app/models/control.rb b/app/models/control.rb index ad18cfa..943bc1d 100644 --- a/app/models/control.rb +++ b/app/models/control.rb @@ -32,10 +32,11 @@ class Control < ApplicationRecord include PgSearch::Model before_validation :set_unique_order + before_validation :set_spacer_title, if: -> { self.control_type == "spacer" } pg_search_scope( :search, - against: [:title, :type, :screen, :order, :min_value, :max_value, :value, :protocol], + against: [:title, :control_type, :screen, :order, :min_value, :max_value, :value, :protocol], associated_against: { screen: [], protocol: [], }, @@ -55,8 +56,10 @@ class Control < ApplicationRecord scope :includes_associated, -> { includes([:protocol, :command]) } - validate :protocol_xor_command + validate :protocol_xor_command, if: -> { self.control_type != "spacer" } validates :order, presence: true + validates :title, presence: true + validates :control_type, presence: true private @@ -71,9 +74,13 @@ def next_order_number max_order ? max_order + 1 : 1 end + def set_spacer_title + self.title = "spacer_#{self.order}" + end + def protocol_xor_command return if protocol.blank? ^ command.blank? - errors.add(:protocol_xor_command, 'A control must reference either a protocol or a command') + errors.add(:protocol_xor_command, "A control must reference either a protocol or a command") end end diff --git a/app/models/protocol.rb b/app/models/protocol.rb index 2f6bff9..9ed1e82 100644 --- a/app/models/protocol.rb +++ b/app/models/protocol.rb @@ -41,10 +41,12 @@ class Protocol < ApplicationRecord protocols_commands.*, COALESCE(protocols_commands.value, command_values.value) AS value ') - .joins('LEFT JOIN command_values ON command_values.id = protocols_commands.command_value_id') + .joins("LEFT JOIN command_values ON command_values.id = protocols_commands.command_value_id") .includes([:server, :command_values]) }, through: :protocols_commands, dependent: :nullify + validates :title, presence: true + scope :includes_associated, -> { includes([:protocols_commands]) } accepts_nested_attributes_for :protocols_commands, allow_destroy: true diff --git a/app/models/screen.rb b/app/models/screen.rb index d6db9c2..d489dd3 100644 --- a/app/models/screen.rb +++ b/app/models/screen.rb @@ -32,14 +32,12 @@ class Screen < ApplicationRecord slug :title - has_many :controls, -> { order(order: :asc) }, dependent: :nullify, inverse_of: :screen + has_many :controls, -> { order(order: :asc) }, dependent: :destroy, inverse_of: :screen default_scope { order(:order) } scope :includes_associated, -> { includes([:controls]) } - validates :title, format: { without: /new/ } - - accepts_nested_attributes_for :controls, reject_if: ->(attributes) { attributes['title'].blank? }, allow_destroy: true + accepts_nested_attributes_for :controls, reject_if: ->(attributes) { attributes["title"].blank? }, allow_destroy: true private @@ -47,6 +45,12 @@ def set_screen_order return unless self.order.nil? last_screen = Screen.order(:order).last - self.order = last_screen.nil? ? 1 : last_screen.order + 1 + + self.order = if last_screen.nil? || last_screen.order.nil? + 1 + else + last_screen.order + 1 + end end + end diff --git a/app/models/server.rb b/app/models/server.rb index 2b14032..4a40ffd 100644 --- a/app/models/server.rb +++ b/app/models/server.rb @@ -4,7 +4,7 @@ # # id :bigint not null, primary key # description :text -# hostname :string +# hostname :string not null # port :integer # slug :string not null # title :string not null @@ -34,7 +34,9 @@ class Server < ApplicationRecord has_many :commands, dependent: :nullify - scope :includes_associated, -> { includes([:commands]) } + attribute :port, :integer, default: 9091 + + validates :hostname, presence: true - attribute :port, :integer, default: 8080 + scope :includes_associated, -> { includes([:commands]) } end diff --git a/app/models/user.rb b/app/models/user.rb index e6d21d3..9d7755d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -55,16 +55,15 @@ class User < ApplicationRecord # :omniauthable, :timeoutable, :confirmable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :lockable, :trackable - scope :includes_associated, -> { includes([:circles]) } + password_complexity_regex = /\A(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-.]).{8,70}\z/ + validates :password, format: { with: password_complexity_regex }, on: [:create, :update], confirmation: true, if: :password - belongs_to :person, optional: true - - def circles - Circle.with_roles(Circle.find_roles.pluck(:name), self) - end + validates :email, presence: true, uniqueness: true + validates :email, length: { maximum: 255 } + validates :email, format: { with: URI::MailTo::EMAIL_REGEXP } # Rows page for pagination def limit(model) - self.table_preferences&.[](model.to_s)&.[]('limit') + self.table_preferences&.[](model.to_s)&.[]("limit") end end diff --git a/app/policies/control_policy.rb b/app/policies/control_policy.rb index 6d69f6b..b7d1250 100644 --- a/app/policies/control_policy.rb +++ b/app/policies/control_policy.rb @@ -1,4 +1,8 @@ class ControlPolicy < ApplicationPolicy class Scope < ApplicationPolicy::Scope end + + def options? + standard_auth(:options) + end end diff --git a/app/serializers/application_serializer.rb b/app/serializers/application_serializer.rb index 79d4a0a..189f590 100644 --- a/app/serializers/application_serializer.rb +++ b/app/serializers/application_serializer.rb @@ -6,4 +6,11 @@ class ApplicationSerializer < Oj::Serializer def currency_for(obj) obj.cost&.amount&.to_f end + + def self.timestamps + attributes( + :updated_at, + :created_at, + ) + end end diff --git a/app/serializers/commands/edit_serializer.rb b/app/serializers/commands/edit_serializer.rb index 9cbd9c5..5ba4d2f 100644 --- a/app/serializers/commands/edit_serializer.rb +++ b/app/serializers/commands/edit_serializer.rb @@ -2,7 +2,7 @@ class Commands::EditSerializer < CommandSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/commands/index_serializer.rb b/app/serializers/commands/index_serializer.rb index 3d89b51..59f2e00 100644 --- a/app/serializers/commands/index_serializer.rb +++ b/app/serializers/commands/index_serializer.rb @@ -2,7 +2,7 @@ class Commands::IndexSerializer < CommandSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/commands/protocol_serializer.rb b/app/serializers/commands/protocol_serializer.rb index 3b8d239..87ed06e 100644 --- a/app/serializers/commands/protocol_serializer.rb +++ b/app/serializers/commands/protocol_serializer.rb @@ -2,10 +2,10 @@ class Commands::ProtocolSerializer < CommandSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + self.timestamps + belongs_to :server, serializer: Servers::ReferenceSerializer has_many :command_values, serializer: CommandValueSerializer end diff --git a/app/serializers/commands/show_serializer.rb b/app/serializers/commands/show_serializer.rb index be56dbd..a198e65 100644 --- a/app/serializers/commands/show_serializer.rb +++ b/app/serializers/commands/show_serializer.rb @@ -2,10 +2,10 @@ class Commands::ShowSerializer < CommandSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + self.timestamps + belongs_to :server, serializer: Servers::ReferenceSerializer has_many :protocols, serializer: Protocols::OptionsSerializer end diff --git a/app/serializers/control_serializer.rb b/app/serializers/control_serializer.rb index fd090fd..e083aab 100644 --- a/app/serializers/control_serializer.rb +++ b/app/serializers/control_serializer.rb @@ -41,7 +41,7 @@ class ControlSerializer < ApplicationSerializer :screen_id, :protocol_id, :command_id, - control_type: { type: :string }, + control_type: { type: Control.control_types.keys.map { |k| "\"#{k}\"" }.join(" | ") }, ) belongs_to :protocol, serializer: ProtocolSerializer diff --git a/app/serializers/controls/edit_serializer.rb b/app/serializers/controls/edit_serializer.rb index 5f973a2..1859db9 100644 --- a/app/serializers/controls/edit_serializer.rb +++ b/app/serializers/controls/edit_serializer.rb @@ -2,9 +2,9 @@ class Controls::EditSerializer < ControlSerializer attributes( :id, - :updated_at, - :created_at, ) + self.timestamps + belongs_to :protocol, serializer: Protocols::EditSerializer end diff --git a/app/serializers/controls/form_data_serializer.rb b/app/serializers/controls/form_data_serializer.rb index b71f103..0566741 100644 --- a/app/serializers/controls/form_data_serializer.rb +++ b/app/serializers/controls/form_data_serializer.rb @@ -1,4 +1,9 @@ class Controls::FormDataSerializer < ControlSerializer + attributes( + order: { optional: true }, + title: { optional: true }, + ) + belongs_to :protocol, serializer: Protocols::FormDataSerializer, optional: true belongs_to :command, serializer: Commands::FormDataSerializer, optional: true end diff --git a/app/serializers/controls/index_serializer.rb b/app/serializers/controls/index_serializer.rb index 0179a30..ce8672c 100644 --- a/app/serializers/controls/index_serializer.rb +++ b/app/serializers/controls/index_serializer.rb @@ -1,7 +1,7 @@ class Controls::IndexSerializer < ControlSerializer attributes( :id, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/controls/show_serializer.rb b/app/serializers/controls/show_serializer.rb index 05c3c9c..230586a 100644 --- a/app/serializers/controls/show_serializer.rb +++ b/app/serializers/controls/show_serializer.rb @@ -1,10 +1,10 @@ class Controls::ShowSerializer < ControlSerializer attributes( :id, - :updated_at, - :created_at, ) - belongs_to :protocol, serializer: Protocols::ShowSerializer - belongs_to :command, serializer: Commands::ShowSerializer + self.timestamps + + belongs_to :protocol, serializer: ProtocolSerializer, optional: true + belongs_to :command, serializer: CommandSerializer, optional: true end diff --git a/app/serializers/protocols/edit_serializer.rb b/app/serializers/protocols/edit_serializer.rb index 13e18b5..5526779 100644 --- a/app/serializers/protocols/edit_serializer.rb +++ b/app/serializers/protocols/edit_serializer.rb @@ -4,6 +4,8 @@ class Protocols::EditSerializer < Protocols::FormDataSerializer :slug, ) + self.timestamps + has_many :commands, serializer: Commands::FormDataSerializer # has_many :commands, serializer: Protocols::CommandsSerializer end diff --git a/app/serializers/protocols/index_serializer.rb b/app/serializers/protocols/index_serializer.rb index 872c896..90fb4bf 100644 --- a/app/serializers/protocols/index_serializer.rb +++ b/app/serializers/protocols/index_serializer.rb @@ -2,9 +2,9 @@ class Protocols::IndexSerializer < ProtocolSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + self.timestamps + has_many :commands, serializer: Commands::ProtocolSerializer end diff --git a/app/serializers/protocols/show_serializer.rb b/app/serializers/protocols/show_serializer.rb index 47a4938..2431d84 100644 --- a/app/serializers/protocols/show_serializer.rb +++ b/app/serializers/protocols/show_serializer.rb @@ -4,5 +4,7 @@ class Protocols::ShowSerializer < ProtocolSerializer :slug, ) + self.timestamps + has_many :commands, serializer: Protocols::CommandsSerializer end diff --git a/app/serializers/protocols_commands/edit_serializer.rb b/app/serializers/protocols_commands/edit_serializer.rb index c01c1af..395faa0 100644 --- a/app/serializers/protocols_commands/edit_serializer.rb +++ b/app/serializers/protocols_commands/edit_serializer.rb @@ -2,7 +2,7 @@ class ProtocolsCommands::EditSerializer < ProtocolsCommandSerializer attributes( :id, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/protocols_commands/index_serializer.rb b/app/serializers/protocols_commands/index_serializer.rb index 3ecd2c6..18db8cc 100644 --- a/app/serializers/protocols_commands/index_serializer.rb +++ b/app/serializers/protocols_commands/index_serializer.rb @@ -1,7 +1,7 @@ class ProtocolsCommands::IndexSerializer < ProtocolsCommandSerializer attributes( :id, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/protocols_commands/show_serializer.rb b/app/serializers/protocols_commands/show_serializer.rb index 61e7e64..d790f90 100644 --- a/app/serializers/protocols_commands/show_serializer.rb +++ b/app/serializers/protocols_commands/show_serializer.rb @@ -1,7 +1,7 @@ class ProtocolsCommands::ShowSerializer < ProtocolsCommandSerializer attributes( :id, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/screens/edit_serializer.rb b/app/serializers/screens/edit_serializer.rb index 9199897..80b23d6 100644 --- a/app/serializers/screens/edit_serializer.rb +++ b/app/serializers/screens/edit_serializer.rb @@ -2,9 +2,9 @@ class Screens::EditSerializer < ScreenSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + self.timestamps + has_many :controls, serializer: Controls::EditSerializer end diff --git a/app/serializers/screens/index_serializer.rb b/app/serializers/screens/index_serializer.rb index 3f6dd33..b903a55 100644 --- a/app/serializers/screens/index_serializer.rb +++ b/app/serializers/screens/index_serializer.rb @@ -2,7 +2,7 @@ class Screens::IndexSerializer < ScreenSerializer attributes( :slug, :id, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/screens/show_serializer.rb b/app/serializers/screens/show_serializer.rb index f660aa1..f7ccf30 100644 --- a/app/serializers/screens/show_serializer.rb +++ b/app/serializers/screens/show_serializer.rb @@ -2,9 +2,9 @@ class Screens::ShowSerializer < ScreenSerializer attributes( :slug, :id, - :updated_at, - :created_at, ) + self.timestamps + has_many :controls, serializer: Controls::ShowSerializer end diff --git a/app/serializers/server_serializer.rb b/app/serializers/server_serializer.rb index 27af59b..36557c7 100644 --- a/app/serializers/server_serializer.rb +++ b/app/serializers/server_serializer.rb @@ -4,7 +4,7 @@ # # id :bigint not null, primary key # description :text -# hostname :string +# hostname :string not null # port :integer # slug :string not null # title :string not null diff --git a/app/serializers/servers/edit_serializer.rb b/app/serializers/servers/edit_serializer.rb index 9e5e4a8..535ffb7 100644 --- a/app/serializers/servers/edit_serializer.rb +++ b/app/serializers/servers/edit_serializer.rb @@ -2,7 +2,7 @@ class Servers::EditSerializer < ServerSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/servers/index_serializer.rb b/app/serializers/servers/index_serializer.rb index aa2bda9..6827581 100644 --- a/app/serializers/servers/index_serializer.rb +++ b/app/serializers/servers/index_serializer.rb @@ -2,7 +2,7 @@ class Servers::IndexSerializer < ServerSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/servers/reference_serializer.rb b/app/serializers/servers/reference_serializer.rb index f04b356..56bee72 100644 --- a/app/serializers/servers/reference_serializer.rb +++ b/app/serializers/servers/reference_serializer.rb @@ -2,7 +2,7 @@ class Servers::ReferenceSerializer < ServerSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/servers/show_serializer.rb b/app/serializers/servers/show_serializer.rb index cc797ad..16fa982 100644 --- a/app/serializers/servers/show_serializer.rb +++ b/app/serializers/servers/show_serializer.rb @@ -2,7 +2,7 @@ class Servers::ShowSerializer < ServerSerializer attributes( :id, :slug, - :updated_at, - :created_at, ) + + self.timestamps end diff --git a/app/serializers/users/edit_serializer.rb b/app/serializers/users/edit_serializer.rb index ca6c688..39ea658 100644 --- a/app/serializers/users/edit_serializer.rb +++ b/app/serializers/users/edit_serializer.rb @@ -1,10 +1,9 @@ class Users::EditSerializer < UserSerializer - attributes( :id, - :updated_at, - :created_at, ) + self.timestamps + has_many :roles, serializer: RoleSerializer end diff --git a/app/serializers/users/index_serializer.rb b/app/serializers/users/index_serializer.rb index 4dbd170..fcf55af 100644 --- a/app/serializers/users/index_serializer.rb +++ b/app/serializers/users/index_serializer.rb @@ -6,5 +6,7 @@ class Users::IndexSerializer < UserSerializer user_preferences: { type: "IUserPreferences" }, ) + self.timestamps + has_many :roles, serializer: RoleSerializer end diff --git a/app/serializers/users/share_serializer.rb b/app/serializers/users/share_serializer.rb index 47a5f4c..bfa8be0 100644 --- a/app/serializers/users/share_serializer.rb +++ b/app/serializers/users/share_serializer.rb @@ -1,11 +1,11 @@ class Users::ShareSerializer < UserSerializer attributes( :id, - :created_at, - :updated_at, user_preferences: { type: "IUserPreferences" }, table_preferences: { type: "ITablePreferences" }, ) + self.timestamps + has_many :roles, serializer: RoleSerializer end diff --git a/app/serializers/users/show_serializer.rb b/app/serializers/users/show_serializer.rb index 9313bb8..31b62b6 100644 --- a/app/serializers/users/show_serializer.rb +++ b/app/serializers/users/show_serializer.rb @@ -1,10 +1,10 @@ class Users::ShowSerializer < UserSerializer attributes( :id, - :updated_at, - :created_at, user_preferences: { type: "IUserPreferences" }, ) + self.timestamps + has_many :roles, serializer: RoleSerializer end diff --git a/config/environments/test.rb b/config/environments/test.rb index 171f0fb..f61f93a 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -28,7 +28,7 @@ config.cache_store = :null_store # Raise exceptions instead of rendering exception templates. - config.action_dispatch.show_exceptions = false + config.action_dispatch.show_exceptions = :none # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false diff --git a/db/migrate/20240229063401_create_servers.rb b/db/migrate/20240229063401_create_servers.rb index 83fffa6..3dc966b 100644 --- a/db/migrate/20240229063401_create_servers.rb +++ b/db/migrate/20240229063401_create_servers.rb @@ -4,7 +4,7 @@ def change t.string :title, null: false t.string :slug, null: false t.index :slug, unique: true - t.string :hostname + t.string :hostname, null: false t.integer :port t.text :description diff --git a/db/schema.rb b/db/schema.rb index d9e9b9c..3a886a1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -130,7 +130,7 @@ create_table "servers", force: :cascade do |t| t.string "title", null: false t.string "slug", null: false - t.string "hostname" + t.string "hostname", null: false t.integer "port" t.text "description" t.datetime "created_at", null: false diff --git a/db/seeds.rb b/db/seeds.rb index 9a7f50f..55276be 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,4 +1,3 @@ Dir[Rails.root.join("db/seeds/**/*.rb").to_s].each do |seed| - ap "Seeding Data" load seed end diff --git a/db/seeds/01_required.rb b/db/seeds/01_required.rb index 9045720..ef89d61 100644 --- a/db/seeds/01_required.rb +++ b/db/seeds/01_required.rb @@ -1,3 +1,7 @@ -if Screen.count === 0 - Screen.create title: "Main" +# rubocop:disable Style/SoleNestedConditional +if !Rails.env.test? + if Screen.count == 0 + Screen.create title: "Main" + end end +# rubocop:enable Style/SoleNestedConditional diff --git a/eslint.config.mjs b/eslint.config.mjs index 4e69b24..46b46a7 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,10 +2,10 @@ import { fixupPluginRules } from '@eslint/compat' import stylistic from '@stylistic/eslint-plugin' import reactHooksPlugin from 'eslint-plugin-react-hooks' import jsxA11yPlugin from 'eslint-plugin-jsx-a11y' -import jsoncPlugin from 'eslint-plugin-jsonc' import tsParser from '@typescript-eslint/parser' +import jsoncPlugin from 'eslint-plugin-jsonc' import jsoncParser from 'jsonc-eslint-parser' -// import stylelint from 'eslint-plugin-stylelint' +import json from "@eslint/json"; const ignores = [ 'app/javascript/**/*', @@ -51,7 +51,6 @@ export default [ 'react-hooks': fixupPluginRules(reactHooksPlugin), 'jsx-a11y': jsxA11yPlugin, '@stylistic': stylistic, - // stylelint: fixupPluginRules(stylelint), }, rules: { '@stylistic/indent': ['error', 'tab', { @@ -124,9 +123,12 @@ export default [ 'eqeqeq': 'error', 'no-console': 'warn', 'eol-last': ['error', 'always'], - // 'stylelint/no-invalid': 'error', - // ...stylelint.rules, + 'semi': ['error', 'never'], ...reactHooksPlugin.configs.recommended.rules, + '@stylistic/quotes': ['error', 'double', { + avoidEscape: true, + allowTemplateLiterals: true + }], }, }, // Typescript declaration files @@ -141,15 +143,18 @@ export default [ }, // Json files { - files: ['**/*.json', '**/*.jsonc'], + files: ['**/*.json', '**/*.jsonc', '**/*.json5'], + language: "json/json", ignores, plugins: { jsonc: jsoncPlugin, + json, }, languageOptions: { parser: jsoncParser, }, rules: { + "json/no-duplicate-keys": "error", 'jsonc/indent': ['error', 2, { ignoredNodes: ['Property'] }], '@stylistic/no-multi-spaces': 'off', }, diff --git a/package.json b/package.json index 33f281a..03dc5bb 100644 --- a/package.json +++ b/package.json @@ -10,118 +10,119 @@ "type": "module", "private": true, "scripts": { - "start": "RACK_ENV=production RAILS_ENV=production PORT=80 NODE_ENV=production foreman start -f Procfile", - "dev": "RAILS_ENV=development PORT=3000 NODE_ENV=development foreman start -f Procfile.dev", + "start": "RACK_ENV=production RAILS_ENV=production PORT=80 NODE_ENV=production overmind start -f Procfile", + "dev": "RAILS_ENV=development PORT=3000 NODE_ENV=development overmind start -f Procfile.dev", "build": "NODE_ENV=production yarn vite build", "test": "vitest", "coverage": "vitest run --coverage" }, "dependencies": { - "@dnd-kit/core": "^6.1.0", - "@dnd-kit/modifiers": "^7.0.0", - "@dnd-kit/sortable": "^8.0.0", - "@inertiajs/core": "^1.2.0", - "@inertiajs/react": "^1.2.0", + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/modifiers": "^9.0.0", + "@dnd-kit/sortable": "^10.0.0", + "@inertiajs/core": "^2.0.3", + "@inertiajs/react": "^2.0.3", "@linaria/core": "^6.2.0", - "@mantine/code-highlight": "^7.13.0", - "@mantine/core": "^7.13.0", - "@mantine/dates": "^7.13.0", - "@mantine/dropzone": "^7.13.0", - "@mantine/form": "^7.13.0", - "@mantine/hooks": "^7.13.0", - "@mantine/modals": "^7.13.0", - "@mantine/notifications": "^7.13.0", - "@mantine/tiptap": "^7.13.0", - "@mantine/vanilla-extract": "^7.13.0", - "@tabler/icons-react": "^3.18.0", - "@tanstack/react-query": "^5.56.2", - "@tiptap/core": "^2.7.4", - "@tiptap/extension-code-block": "^2.7.4", - "@tiptap/extension-dropcursor": "^2.7.4", - "@tiptap/extension-gapcursor": "^2.7.4", - "@tiptap/extension-highlight": "^2.7.4", - "@tiptap/extension-history": "^2.7.4", - "@tiptap/extension-horizontal-rule": "^2.7.4", - "@tiptap/extension-link": "^2.7.4", - "@tiptap/extension-subscript": "^2.7.4", - "@tiptap/extension-superscript": "^2.7.4", - "@tiptap/extension-text-align": "^2.7.4", - "@tiptap/extension-underline": "^2.7.4", - "@tiptap/pm": "^2.7.4", - "@tiptap/react": "^2.7.4", - "@tiptap/starter-kit": "^2.7.4", - "@xstate/react": "^4.1.3", + "@mantine/code-highlight": "^7.16.2", + "@mantine/core": "^7.16.2", + "@mantine/dates": "^7.16.2", + "@mantine/dropzone": "^7.16.2", + "@mantine/form": "^7.16.2", + "@mantine/hooks": "^7.16.2", + "@mantine/modals": "^7.16.2", + "@mantine/notifications": "^7.16.2", + "@mantine/tiptap": "^7.16.2", + "@mantine/vanilla-extract": "^7.16.2", + "@tabler/icons-react": "^3.29.0", + "@tanstack/react-query": "^5.66.0", + "@tiptap/core": "^2.11.5", + "@tiptap/extension-code-block": "^2.11.5", + "@tiptap/extension-dropcursor": "^2.11.5", + "@tiptap/extension-gapcursor": "^2.11.5", + "@tiptap/extension-highlight": "^2.11.5", + "@tiptap/extension-history": "^2.11.5", + "@tiptap/extension-horizontal-rule": "^2.11.5", + "@tiptap/extension-link": "^2.11.5", + "@tiptap/extension-subscript": "^2.11.5", + "@tiptap/extension-superscript": "^2.11.5", + "@tiptap/extension-text-align": "^2.11.5", + "@tiptap/extension-underline": "^2.11.5", + "@tiptap/pm": "^2.11.5", + "@tiptap/react": "^2.11.5", + "@tiptap/starter-kit": "^2.11.5", + "@xstate/react": "^5.0.2", "classnames": "^2.5.1", "dayjs": "^1.11.13", "dinero.js": "^1.9.1", - "google-libphonenumber": "^3.2.38", + "google-libphonenumber": "^3.2.40", "humanize-duration": "^3.32.1", "lodash": "^4.17.21", "normalize-url": "^8.0.1", - "postcss": "^8.4.47", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-error-boundary": "^4.0.13", + "postcss": "^8.5.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-error-boundary": "^5.0.0", "react-html-props": "^2.0.9", - "react-icons": "^5.3.0", + "react-icons": "^5.4.0", "react-use-url": "^1.0.5", - "use-inertia-form": "^4.3.1", - "xstate": "^5.18.2", - "zustand": "^5.0.0-rc.2" + "use-inertia-form": "^4.5.0", + "xstate": "^5.19.2", + "zustand": "^5.0.3" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/preset-react": "^7.24.7", - "@babel/preset-typescript": "^7.24.7", - "@commitlint/cli": "^19.5.0", - "@commitlint/config-conventional": "^19.5.0", - "@eslint/compat": "^1.1.1", - "@stylistic/eslint-plugin": "^2.8.0", - "@tanstack/eslint-plugin-query": "^5.58.1", - "@tanstack/react-query-devtools": "^5.58.0", + "@babel/core": "^7.26.7", + "@babel/preset-react": "^7.26.3", + "@babel/preset-typescript": "^7.26.0", + "@commitlint/cli": "^19.6.1", + "@commitlint/config-conventional": "^19.6.0", + "@eslint/compat": "^1.2.6", + "@eslint/json": "^0.10.0", + "@stylistic/eslint-plugin": "^3.0.1", + "@tanstack/eslint-plugin-query": "^5.66.0", + "@tanstack/react-query-devtools": "^5.66.0", "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.5.0", - "@testing-library/react": "^16.0.1", - "@testing-library/user-event": "^14.5.2", - "@types/jest": "^29.5.13", - "@types/lodash": "^4.17.9", - "@types/node": "^22.7.4", - "@types/react": "^18.3.10", - "@types/react-dom": "^18.3.0", - "@typescript-eslint/eslint-plugin": "^8.7.0", - "@typescript-eslint/parser": "^8.8.0", - "@vitejs/plugin-react": "^4.3.1", - "@wyw-in-js/vite": "^0.5.4", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^14.6.1", + "@types/jest": "^29.5.14", + "@types/lodash": "^4.17.15", + "@types/node": "^22.13.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "@typescript-eslint/eslint-plugin": "^8.22.0", + "@typescript-eslint/parser": "^8.22.0", + "@vitejs/plugin-react": "^4.3.4", + "@wyw-in-js/vite": "^0.5.5", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "babel-plugin-macros": "^3.1.0", "commitizen": "^4.3.1", - "eslint": "^9.11.1", - "eslint-import-resolver-typescript": "^3.6.3", - "eslint-plugin-import": "^2.30.0", - "eslint-plugin-jsonc": "^2.16.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-storybook": "^0.9.0", + "eslint": "^9.19.0", + "eslint-import-resolver-typescript": "^3.7.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsonc": "^2.19.1", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-storybook": "^0.11.2", "git-cz": "^4.9.0", - "husky": "^9.1.6", + "husky": "^9.1.7", "jest": "^29.7.0", - "jsdom": "^25.0.1", + "jsdom": "^26.0.0", "jsonc-eslint-parser": "^2.4.0", - "lint-staged": "^15.2.10", + "lint-staged": "^15.4.3", "postcss-preset-mantine": "^1.17.0", "postcss-simple-vars": "^7.0.1", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typescript": "^5.6.2", - "vite": "^5.4.8", + "typescript": "^5.7.3", + "vite": "^6.0.11", "vite-plugin-dynamic-import": "^1.6.0", "vite-plugin-full-reload": "^1.2.0", - "vite-plugin-ruby": "^5.1.0", - "vite-tsconfig-paths": "^5.0.1", - "vitest": "^2.1.1", - "webpack": "^5.95.0" + "vite-plugin-ruby": "^5.1.1", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.0.4", + "webpack": "^5.97.1" }, "browserslist": [ "defaults" diff --git a/public/404.html b/public/404.html index 2be3af2..41cef8a 100644 --- a/public/404.html +++ b/public/404.html @@ -1,5 +1,5 @@ - + The page you were looking for doesn't exist (404) diff --git a/public/422.html b/public/422.html index c08eac0..c2cfde0 100644 --- a/public/422.html +++ b/public/422.html @@ -1,5 +1,5 @@ - + The change you wanted was rejected (422) diff --git a/public/500.html b/public/500.html index 78a030a..9a07c7b 100644 --- a/public/500.html +++ b/public/500.html @@ -1,5 +1,5 @@ - + We're sorry, but something went wrong (500) diff --git a/spec/factories/commands.rb b/spec/factories/commands.rb index a2f3480..014e24c 100644 --- a/spec/factories/commands.rb +++ b/spec/factories/commands.rb @@ -26,8 +26,31 @@ factory :command do title { "OSC Message" } address { "/test/endpoint" } - payload_type { 0 } + payload_type { :integer } + allow_custom_value { false } server + + trait :with_values do + after(:create) do |command| + create_list(:command_value, 2, command: command) + end + end + + transient do + protocol { nil } + delay { nil } + end + + after(:create) do |command, evaluator| + if evaluator.protocol + create( + :protocols_command, + command: command, + protocol: evaluator.protocol, + delay: evaluator.delay, + ) + end + end end end diff --git a/spec/factories/controls.rb b/spec/factories/controls.rb index cc0557c..121d2f3 100644 --- a/spec/factories/controls.rb +++ b/spec/factories/controls.rb @@ -30,13 +30,17 @@ # FactoryBot.define do factory :control do - title { "MyString" } - type { 1 } - screen { nil } - position { "" } - min_value { "9.99" } - max_value { "9.99" } - value { "9.99" } - protocol { nil } + title { Faker::Company.buzzword } + control_type { :button } + order { nil } # Will be set by callback + screen + + trait :with_protocol do + protocol + end + + trait :with_command do + command + end end end diff --git a/spec/factories/protocols.rb b/spec/factories/protocols.rb index 8524a6e..ba8b822 100644 --- a/spec/factories/protocols.rb +++ b/spec/factories/protocols.rb @@ -15,6 +15,6 @@ # FactoryBot.define do factory :protocol do - title { "MyString" } + title { Faker::Verb.base + " " + Faker::Appliance.equipment } end end diff --git a/spec/factories/protocols_commands.rb b/spec/factories/protocols_commands.rb index c8664a1..2b004e8 100644 --- a/spec/factories/protocols_commands.rb +++ b/spec/factories/protocols_commands.rb @@ -28,6 +28,6 @@ factory :protocols_command do protocol { nil } command { nil } - delay { 1 } + delay { nil } end end diff --git a/spec/factories/roles.rb b/spec/factories/roles.rb deleted file mode 100644 index 8023fbd..0000000 --- a/spec/factories/roles.rb +++ /dev/null @@ -1,21 +0,0 @@ -# == Schema Information -# -# Table name: roles -# -# id :bigint not null, primary key -# name :string -# resource_type :string -# created_at :datetime not null -# updated_at :datetime not null -# resource_id :bigint -# -# Indexes -# -# index_roles_on_name_and_resource_type_and_resource_id (name,resource_type,resource_id) -# index_roles_on_resource (resource_type,resource_id) -# -FactoryBot.define do - factory :role do - - end -end diff --git a/spec/factories/screens.rb b/spec/factories/screens.rb index e95fa6d..3c8b96d 100644 --- a/spec/factories/screens.rb +++ b/spec/factories/screens.rb @@ -15,7 +15,7 @@ # FactoryBot.define do factory :screen do - title { "MyString" } - order { 1 } + title { Faker::Company.bs.split.first } + order { nil } end end diff --git a/spec/factories/servers.rb b/spec/factories/servers.rb index f99b382..1f16825 100644 --- a/spec/factories/servers.rb +++ b/spec/factories/servers.rb @@ -4,7 +4,7 @@ # # id :bigint not null, primary key # description :text -# hostname :string +# hostname :string not null # port :integer # slug :string not null # title :string not null diff --git a/spec/factories/users.rb b/spec/factories/users.rb index bcf578c..351f126 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -48,6 +48,9 @@ # FactoryBot.define do factory :user do - + email { Faker::Internet.email } + password { Faker::Internet.password(min_length: 8, mix_case: true, special_characters: true) } + confirmed_at { Time.current } + active { true } end end diff --git a/spec/jobs/send_osc_command_job_spec.rb b/spec/jobs/send_osc_command_job_spec.rb deleted file mode 100644 index 791e2ad..0000000 --- a/spec/jobs/send_osc_command_job_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'rails_helper' - -RSpec.describe SendOscCommandJob, type: :job do - let(:command) { build_stubbed(:command) } - - describe 'perform' do - it 'works' do - mock_socket = instance_double(UDPSocket) - - allow(UDPSocket).to receive(:new).and_return(mock_socket) - allow(mock_socket).to receive(:bind) - allow(mock_socket).to receive(:connect) - allow(mock_socket).to receive(:recv) - - message = OscService::Message.new(command.address) - - expect(mock_socket).to receive(:send).with(message.encode, 2) # rubocop:disable RSpec/MessageSpies - - udp_receiver = UDPSocket.new - udp_receiver.bind(command.server.hostname, command.server.port) - - SendOscProtocolJob.perform_later(command) - end - end -end diff --git a/spec/jobs/send_osc_commands_job_spec.rb b/spec/jobs/send_osc_commands_job_spec.rb new file mode 100644 index 0000000..c108b0d --- /dev/null +++ b/spec/jobs/send_osc_commands_job_spec.rb @@ -0,0 +1,26 @@ +require "rails_helper" + +RSpec.describe SendOscCommandsJob, type: :job do + describe "perform" do + it "sends an OSC command over the network" do + command = create(:command, server: create(:server)) + + message = OscService::Message.new(command.address, 0) + + mock_socket = instance_double(UDPSocket) + + allow(UDPSocket).to receive(:new).and_return(mock_socket) + allow(mock_socket).to receive(:bind) + allow(mock_socket).to receive(:connect) + allow(mock_socket).to receive(:recv) + allow(mock_socket).to receive(:send).with(message.encode, 2) + + udp_receiver = UDPSocket.new + udp_receiver.bind(command.server.hostname, command.server.port) + + described_class.perform_now(command) + + expect(mock_socket).to have_received(:send).with(message.encode, 2) + end + end +end diff --git a/spec/jobs/send_osc_protocol_job_spec.rb b/spec/jobs/send_osc_protocol_job_spec.rb index 00ee805..638f2e3 100644 --- a/spec/jobs/send_osc_protocol_job_spec.rb +++ b/spec/jobs/send_osc_protocol_job_spec.rb @@ -1,5 +1,67 @@ -require 'rails_helper' +require "rails_helper" RSpec.describe SendOscProtocolJob, type: :job do - pending "add some examples to (or delete) #{__FILE__}" + let(:protocol) { create(:protocol) } + let(:server) { create(:server) } + + describe "#perform" do + context "with commands having different delays" do + it "groups and schedules commands correctly" do + create(:command, protocol: protocol, server: server, delay: 0) + create(:command, protocol: protocol, server: server, delay: 1000) + create(:command, protocol: protocol, server: server, delay: 3000) + + allow(SendOscCommandsJob).to receive(:perform_later) + allow(SendOscCommandsJob).to receive(:set) + .with(wait: 0) + .and_return(SendOscCommandsJob) + allow(SendOscCommandsJob).to receive(:set) + .with(wait: 1) + .and_return(SendOscCommandsJob) + allow(SendOscCommandsJob).to receive(:set) + .with(wait: 4) + .and_return(SendOscCommandsJob) + + described_class.perform_now(protocol) + + expect(SendOscCommandsJob).to have_received(:perform_later) + .exactly(3).times + end + end + + context "with commands for different servers" do + it "groups commands by server" do + server2 = create(:server) + create(:command, protocol: protocol, server: server, delay: 0) + create(:command, protocol: protocol, server: server2, delay: 0) + + allow(SendOscCommandsJob).to receive(:perform_later) + allow(SendOscCommandsJob).to receive(:set) + .with(wait: 0) + .and_return(SendOscCommandsJob) + + described_class.perform_now(protocol) + + expect(SendOscCommandsJob).to have_received(:perform_later) + .twice + end + end + + context "with consecutive commands without delay" do + it "groups commands together" do + create(:command, protocol: protocol, server: server, delay: 0) + create(:command, protocol: protocol, server: server, delay: 0) + + allow(SendOscCommandsJob).to receive(:perform_later) + allow(SendOscCommandsJob).to receive(:set) + .with(wait: 0) + .and_return(SendOscCommandsJob) + + described_class.perform_now(protocol) + + expect(SendOscCommandsJob).to have_received(:perform_later) + .once + end + end + end end diff --git a/spec/models/command_spec.rb b/spec/models/command_spec.rb index d17373a..8202e6a 100644 --- a/spec/models/command_spec.rb +++ b/spec/models/command_spec.rb @@ -25,5 +25,69 @@ require 'rails_helper' RSpec.describe Command, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + expect(build(:command)).to be_valid + end + + it "is invalid with missing attributes" do + %i(title).each do |attr| + expect(build(:command, attr => nil)).not_to be_valid + end + end + end + + describe 'associations' do + it { is_expected.to have_many(:protocols_commands).dependent(:destroy) } + it { is_expected.to have_many(:protocols).through(:protocols_commands) } + it { is_expected.to have_many(:command_values).dependent(:destroy) } + it { is_expected.to belong_to(:server) } + end + + describe 'nested attributes' do + it { is_expected.to accept_nested_attributes_for(:command_values).allow_destroy(true) } + end + + describe 'slug generation' do + it 'generates a slug from the title' do + command = create(:command, title: 'Test Command') + expect(command.slug).to eq('test-command') + end + + it 'ensures slug uniqueness' do + command1 = create(:command, title: 'Test Command') + command2 = create(:command, title: 'Test Command') + + expect(command1.slug).to eq('test-command') + expect(command2.slug).to eq('test-command-1') + end + end + + describe 'command values' do + let(:command) { create(:command) } + + it 'can have multiple command values' do + command.command_values.create([ + { value: '1', label: 'One' }, + { value: '2', label: 'Two' } + ]) + + expect(command.command_values.count).to eq(2) + end + end + + describe 'protocols association' do + let(:command) { create(:command) } + let(:protocol) { create(:protocol) } + + it 'can be associated with multiple protocols' do + command.protocols << protocol + expect(command.protocols).to include(protocol) + end + + it 'creates protocols_command with correct order' do + command.protocols << protocol + expect(command.protocols_commands.first.order).to eq(1) + end + end end diff --git a/spec/models/command_value_spec.rb b/spec/models/command_value_spec.rb index 1f91fd0..f2be7f0 100644 --- a/spec/models/command_value_spec.rb +++ b/spec/models/command_value_spec.rb @@ -20,5 +20,53 @@ require 'rails_helper' RSpec.describe CommandValue, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + command = build_stubbed(:command) + expect(build(:command_value, command: command)).to be_valid + end + + it "is invalid with missing attributes" do + command = build_stubbed(:command) + %i(value).each do |attr| + expect(build(:command_value, attr => nil, command: command)).not_to be_valid + end + end + end + + describe 'associations' do + it { is_expected.to belong_to(:command) } + end + + describe 'command values' do + it 'can be created with a value' do + command = create(:command) + command_value = command.command_values.create(value: 'test_value') + + expect(command_value).to be_persisted + expect(command_value.value).to eq('test_value') + end + + it 'can be created with a label' do + command = create(:command) + command_value = command.command_values.create(value: 'test_value', label: 'Test Label') + + expect(command_value.label).to eq('Test Label') + end + end + + describe 'protocols association' do + it 'can be referenced by protocols_commands' do + command = create(:command) + command_value = create(:command_value, command: command) + protocol = create(:protocol) + + protocols_command = create(:protocols_command, + protocol: protocol, + command: command, + command_value: command_value,) + + expect(protocols_command.command_value).to eq(command_value) + end + end end diff --git a/spec/models/control_spec.rb b/spec/models/control_spec.rb index 1dc32bb..90ba8df 100644 --- a/spec/models/control_spec.rb +++ b/spec/models/control_spec.rb @@ -31,5 +31,96 @@ require 'rails_helper' RSpec.describe Control, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + screen = build_stubbed(:screen) + command = build_stubbed(:command) + expect(build(:control, screen: screen, command: command)).to be_valid + end + + it "is invalid with missing attributes" do + screen = build_stubbed(:screen) + command = build_stubbed(:command) + %i(control_type title).each do |attr| + expect(build(:control, attr => nil, screen: screen, command: command)).not_to be_valid + end + end + end + + describe 'associations' do + it { is_expected.to belong_to(:screen) } + it { is_expected.to belong_to(:protocol).optional } + it { is_expected.to belong_to(:command).optional } + end + + describe 'enums' do + it { is_expected.to define_enum_for(:control_type).with_values(button: 0, slider: 1, spacer: 2) } + end + + describe 'callbacks' do + describe '#set_unique_order' do + it 'sets order to 1 for first control in screen' do + screen = create(:screen) + control = create(:control, :with_command, screen: screen) + expect(control.order).to eq(1) + end + + it 'increments order for subsequent controls' do + screen = create(:screen) + create(:control, :with_command, screen: screen, order: 1) + control = create(:control, :with_command, screen: screen) + expect(control.order).to eq(2) + end + end + + describe '#set_spacer_title' do + it 'sets title for spacer controls' do + screen = create(:screen) + control = create(:control, :with_command, screen: screen, control_type: :spacer) + expect(control.title).to eq("spacer_#{control.order}") + end + + it 'does not modify title for non-spacer controls' do + screen = create(:screen) + control = create(:control, :with_command, screen: screen, control_type: :button, title: 'Test Button') + expect(control.title).to eq('Test Button') + end + end + end + + describe '#protocol_xor_command' do + it 'allows control with protocol but no command' do + protocol = create(:protocol) + control = build(:control, protocol: protocol, command: nil) + control.valid? + expect(control.errors[:protocol_xor_command]).to be_empty + end + + it 'allows control with command but no protocol' do + command = create(:command) + control = build(:control, command: command, protocol: nil) + control.valid? + expect(control.errors[:protocol_xor_command]).to be_empty + end + + it 'does not allow control with both protocol and command' do + protocol = create(:protocol) + command = create(:command) + control = build(:control, protocol: protocol, command: command) + control.valid? + expect(control.errors[:protocol_xor_command]).to include('A control must reference either a protocol or a command') + end + + it 'does not allow control with neither protocol nor command' do + control = build(:control, protocol: nil, command: nil) + control.valid? + expect(control.errors[:protocol_xor_command]).to include('A control must reference either a protocol or a command') + end + + it 'skips validation for spacer controls' do + control = build(:control, control_type: :spacer, protocol: nil, command: nil) + control.valid? + expect(control.errors[:protocol_xor_command]).to be_empty + end + end end diff --git a/spec/models/protocol_spec.rb b/spec/models/protocol_spec.rb index 12abff2..3c4ad40 100644 --- a/spec/models/protocol_spec.rb +++ b/spec/models/protocol_spec.rb @@ -16,5 +16,94 @@ require 'rails_helper' RSpec.describe Protocol, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + expect(build(:protocol)).to be_valid + end + + it "is invalid with missing attributes" do + %i(title).each do |attr| + expect(build(:protocol, attr => nil)).not_to be_valid + end + end + end + + describe 'associations' do + it 'has many protocols_commands' do + protocol = create(:protocol) + command = create(:command) + protocols_command = create(:protocols_command, protocol: protocol, command: command) + + expect(protocol.protocols_commands).to include(protocols_command) + end + + it 'has many commands through protocols_commands' do + protocol = create(:protocol) + command = create(:command) + create(:protocols_command, protocol: protocol, command: command) + + expect(protocol.commands).to include(command) + end + + it 'destroys dependent protocols_commands when deleted' do + protocol = create(:protocol) + command = create(:command) + create(:protocols_command, protocol: protocol, command: command) + + expect { protocol.destroy }.to change(ProtocolsCommand, :count).by(-1) + end + + it 'nullifies associated commands when deleted' do + protocol = create(:protocol) + command = create(:command) + create(:protocols_command, protocol: protocol, command: command) + + protocol.destroy + command.reload + + expect(command.persisted?).to be true + end + end + + describe 'nested attributes' do + it 'accepts nested attributes for protocols_commands' do + protocol = create(:protocol) + command = create(:command) + + protocol.update(protocols_commands_attributes: [{ + command_id: command.id, + value: "test_value" + }]) + + expect(protocol.protocols_commands.first.value).to eq("test_value") + end + + it 'allows destroying protocols_commands through nested attributes' do + protocol = create(:protocol) + command = create(:command) + protocols_command = create(:protocols_command, protocol: protocol, command: command) + + expect { + protocol.update(protocols_commands_attributes: [{ + id: protocols_command.id, + _destroy: '1' + }]) + }.to change(ProtocolsCommand, :count).by(-1) + end + end + + describe 'slug generation' do + it 'generates a slug from the title' do + protocol = create(:protocol, title: 'Test Protocol') + expect(protocol.slug).to eq('test-protocol') + end + + it 'ensures slug uniqueness' do + protocol1 = create(:protocol, title: 'Test Protocol') + protocol2 = create(:protocol, title: 'Test Protocol') + + expect(protocol1.slug).to eq('test-protocol') + expect(protocol2.slug).to eq('test-protocol-1') + end + end end diff --git a/spec/models/protocols_command_spec.rb b/spec/models/protocols_command_spec.rb index 958705d..b799d0f 100644 --- a/spec/models/protocols_command_spec.rb +++ b/spec/models/protocols_command_spec.rb @@ -24,8 +24,105 @@ # fk_rails_... (command_value_id => command_values.id) # fk_rails_... (protocol_id => protocols.id) # -require 'rails_helper' +require "rails_helper" RSpec.describe ProtocolsCommand, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + protocol = build(:protocol) + command = build(:command) + expect(build(:protocols_command, protocol: protocol, command: command)).to be_valid + end + + it "is invalid with missing attributes" do + protocol = build(:protocol) + command = build(:command) + %i(protocol_id command_id).each do |attr| + expect(build(:protocols_command, protocol: protocol, command: command, attr => nil)).not_to be_valid + end + end + end + + describe "associations" do + it { is_expected.to belong_to(:protocol) } + it { is_expected.to belong_to(:command) } + it { is_expected.to belong_to(:command_value).optional } + end + + describe "callbacks" do + describe "#set_command_order" do + it "sets order to 1 for first command in protocol" do + protocol = create(:protocol) + protocols_command = create(:protocols_command, protocol: protocol, command: create(:command)) + expect(protocols_command.order).to eq(1) + end + + it "increments order for subsequent commands" do + protocol = create(:protocol) + command1 = create(:command) + command2 = create(:command) + + first_protocols_command = create(:protocols_command, protocol: protocol, command: command1) + second_protocols_command = create(:protocols_command, protocol: protocol, command: command2) + + expect(first_protocols_command.order).to eq(1) + expect(second_protocols_command.order).to eq(2) + end + + it "maintains existing order if specified" do + protocol = create(:protocol) + protocols_command = create(:protocols_command, protocol: protocol, command: create(:command), order: 5) + expect(protocols_command.order).to eq(5) + end + end + end + + describe "scoping" do + it "orders by order attribute by default" do + protocol = create(:protocol) + command3 = create(:protocols_command, protocol: protocol, command: create(:command), order: 3) + command1 = create(:protocols_command, protocol: protocol, command: create(:command), order: 1) + command2 = create(:protocols_command, protocol: protocol, command: create(:command), order: 2) + + expect(protocol.protocols_commands.to_a).to eq([command1, command2, command3]) + end + end + + describe "command values" do + it "can store a custom value string" do + protocols_command = create(:protocols_command, + protocol: create(:protocol), + command: create(:command), + value: "custom_value",) + expect(protocols_command.value).to eq("custom_value") + end + + it "can reference a command value" do + command = create(:command) + command_value = create(:command_value, command: command) + protocols_command = create(:protocols_command, + protocol: create(:protocol), + command: command, + command_value: command_value,) + expect(protocols_command.command_value).to eq(command_value) + end + end + + describe "delay handling" do + it "allows nil delay" do + protocols_command = create(:protocols_command, + protocol: create(:protocol), + command: create(:command), + delay: nil,) + expect(protocols_command.delay).to be_nil + end + + it "stores integer delay values" do + protocols_command = create(:protocols_command, + protocol: create(:protocol), + command: create(:command), + delay: 1000,) + expect(protocols_command.delay).to eq(1000) + end + end end diff --git a/spec/models/role_spec.rb b/spec/models/role_spec.rb deleted file mode 100644 index f79c122..0000000 --- a/spec/models/role_spec.rb +++ /dev/null @@ -1,21 +0,0 @@ -# == Schema Information -# -# Table name: roles -# -# id :bigint not null, primary key -# name :string -# resource_type :string -# created_at :datetime not null -# updated_at :datetime not null -# resource_id :bigint -# -# Indexes -# -# index_roles_on_name_and_resource_type_and_resource_id (name,resource_type,resource_id) -# index_roles_on_resource (resource_type,resource_id) -# -require 'rails_helper' - -RSpec.describe Role, type: :model do - pending "add some examples to (or delete) #{__FILE__}" -end diff --git a/spec/models/screen_spec.rb b/spec/models/screen_spec.rb index 18ae670..3e14f2d 100644 --- a/spec/models/screen_spec.rb +++ b/spec/models/screen_spec.rb @@ -13,8 +13,71 @@ # # index_screens_on_slug (slug) UNIQUE # -require 'rails_helper' +require "rails_helper" RSpec.describe Screen, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + screen = build(:screen) + expect(screen).to be_valid + end + + it "is invalid with missing attributes" do + %i(title).each do |attr| + expect(build(:protocol, attr => nil)).not_to be_valid + end + end + end + + describe "Associations" do + it { is_expected.to have_many(:controls) } + + it "has many controls" do + screen = create(:screen) + control1 = create(:control, :with_command, screen: screen) + control2 = create(:control, :with_command, screen: screen) + screen.reload + + expect(screen.controls).to include(control1, control2) + end + + it "destroys associated controls when destroyed" do + screen = create(:screen) + control = create(:control, :with_command, screen: screen) + + screen.destroy + + expect(Control.exists?(control.id)).to be false + end + end + + describe "Callbacks" do + describe "#set_screen_order" do + it "sets order to 1 for first screen" do + screen = create(:screen) + expect(screen.order).to eq(1) + end + + it "increments order for subsequent screens" do + first_screen = create(:screen) + second_screen = create(:screen) + expect(second_screen.order).to eq(first_screen.order + 1) + end + + it "doesn't change existing order" do + screen = create(:screen, order: 5) + expect(screen.order).to eq(5) + end + end + end + + describe "Scopes" do + it "orders by order attribute by default" do + screen3 = create(:screen, order: 3) + screen1 = create(:screen, order: 1) + screen2 = create(:screen, order: 2) + + expect(described_class.all).to eq([screen1, screen2, screen3]) + end + end end diff --git a/spec/models/server_spec.rb b/spec/models/server_spec.rb index dc51212..9e180ff 100644 --- a/spec/models/server_spec.rb +++ b/spec/models/server_spec.rb @@ -4,7 +4,7 @@ # # id :bigint not null, primary key # description :text -# hostname :string +# hostname :string not null # port :integer # slug :string not null # title :string not null @@ -15,8 +15,24 @@ # # index_servers_on_slug (slug) UNIQUE # -require 'rails_helper' +require "rails_helper" RSpec.describe Server, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "validations" do + it "is valid with valid attributes" do + server = build(:server) + expect(server).to be_valid + end + + it "is invalid with missing attributes" do + %i(title).each do |attr| + expect(build(:server, attr => nil)).not_to be_valid + end + end + end + + describe "associations" do + it { is_expected.to have_many(:commands) } + end + end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 88325d4..47a87a4 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -46,8 +46,48 @@ # index_users_on_unlock_token (unlock_token) UNIQUE # index_users_on_user_preferences (user_preferences) USING gin # -require 'rails_helper' +require "rails_helper" RSpec.describe User, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe "Validations" do + it "is valid with valid attributes" do + expect(build(:user)).to be_valid + end + + it "is invalid with missing attributes" do + %i(email password).each do |attr| + expect(build(:user, attr => nil)).not_to be_valid + end + end + + it "validates email format" do + expect(build(:user, email: "invalid-email")).not_to be_valid + expect(build(:user, email: "valid@example.com")).to be_valid + end + + it "validates email length" do + expect(build(:user, email: "#{('a' * 250)}@example.com")).not_to be_valid + end + + it "validates password complexity" do + invalid_passwords = ["simple", "UPPERCASE", "lowercase", "12345678", "!@#$%^&*"] + invalid_passwords.each do |password| + expect(build(:user, password: password)).not_to be_valid + end + + expect(build(:user, password: "Valid1Password!")).to be_valid + end + end + + describe "#limit" do + it "returns table preferences limit for given model" do + user = build(:user, table_preferences: { "User" => { "limit" => 25 } }) + expect(user.limit("User")).to eq(25) + end + + it "returns nil when no limit is set" do + user = build(:user) + expect(user.limit("User")).to be_nil + end + end end diff --git a/spec/policies/server_policy_spec.rb b/spec/policies/server_policy_spec.rb deleted file mode 100644 index 9e76217..0000000 --- a/spec/policies/server_policy_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'rails_helper' - -RSpec.describe ServerPolicy, type: :policy do - let(:user) { User.new } - - subject { described_class } - - permissions ".scope" do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :show? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :create? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :update? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :destroy? do - pending "add some examples to (or delete) #{__FILE__}" - end -end diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb deleted file mode 100644 index 7b6d62c..0000000 --- a/spec/policies/user_policy_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'spec_helper' - -RSpec.describe UserPolicy, type: :policy do - let(:user) { User.new } - - subject { described_class } - - permissions ".scope" do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :show? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :create? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :update? do - pending "add some examples to (or delete) #{__FILE__}" - end - - permissions :destroy? do - pending "add some examples to (or delete) #{__FILE__}" - end -end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 292b8be..c95701c 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,15 +1,15 @@ -require 'spec_helper' -ENV['RAILS_ENV'] ||= 'test' -require_relative '../config/environment' +require "spec_helper" +ENV["RAILS_ENV"] ||= "test" +require_relative "../config/environment" # Prevent database truncation if the environment is production abort("The Rails environment is running in production mode!") if Rails.env.production? -require 'rspec/rails' +require "rspec/rails" # Add additional requires below this line. Rails is not loaded until this point! -require 'inertia_rails/rspec' -require 'bullet' -require 'database_cleaner/active_record' +require "inertia_rails/rspec" +require "bullet" +require "database_cleaner/active_record" require "pundit/rspec" # Requires supporting ruby files with custom matchers and macros, etc, in @@ -37,7 +37,7 @@ RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{Rails.root.join('spec/fixtures')}" + # config.fixture_paths = ["#{Rails.root.join('spec/fixtures')}"] # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false diff --git a/spec/requests/api/commands_spec.rb b/spec/requests/api/commands_spec.rb index 504a0e5..c55e658 100644 --- a/spec/requests/api/commands_spec.rb +++ b/spec/requests/api/commands_spec.rb @@ -1,6 +1,9 @@ -require 'rails_helper' +require "rails_helper" +require_relative "../../support/devise" RSpec.describe "Api::Commands" do + login_user(:admin) + describe "GET /payload_types" do it "returns a list of payload types" do get api_commands_payload_types_url diff --git a/spec/requests/api/controls_spec.rb b/spec/requests/api/controls_spec.rb index 8e91077..2ceac93 100644 --- a/spec/requests/api/controls_spec.rb +++ b/spec/requests/api/controls_spec.rb @@ -1,7 +1,64 @@ -require 'rails_helper' +require "rails_helper" +require_relative "../../support/devise" RSpec.describe "Api::Controls", type: :request do - describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" + login_user(:admin) + + describe "GET /api/controls/options" do + it "returns a successful response" do + get api_controls_options_url + expect(response).to be_successful + end + end + + describe "POST /api/controls" do + it "creates a new Control with valid parameters" do + screen = create(:screen) + command = create(:command) + + expect { + post api_controls_url, params: { control: attributes_for(:control, :with_command, command_id: command.id, screen_id: screen.id) } + }.to change(Control, :count).by(1) + + expect(response).to have_http_status(:created) + end + + it "fails to create Control with invalid parameters" do + screen = create(:screen) + command = create(:command) + + expect { + post api_controls_url, params: { control: attributes_for(:control, :with_command, title: nil, command_id: command.id, screen_id: screen.id) } + }.not_to change(Control, :count) + + expect(response).to have_http_status(:not_acceptable) + end + end + + describe "PATCH /api/controls/:id" do + it "updates the control with valid parameters" do + screen = create(:screen) + command = create(:command) + control = create(:control, :with_command, command_id: command.id, screen_id: screen.id) + + patch api_control_url(control), params: { control: { title: "New Title" } } + + control.reload + expect(control.title).to eq("New Title") + expect(response).to have_http_status(:created) + end + + it "fails to update control with invalid parameters" do + screen = create(:screen) + command = create(:command) + control = create(:control, :with_command, command_id: command.id, screen_id: screen.id) + original_title = control.title + + patch api_control_url(control), params: { control: { title: nil } } + + control.reload + expect(control.title).to eq(original_title) + expect(response).to have_http_status(:not_acceptable) + end end end diff --git a/spec/requests/api/protocols_spec.rb b/spec/requests/api/protocols_spec.rb index 656c951..4ee5198 100644 --- a/spec/requests/api/protocols_spec.rb +++ b/spec/requests/api/protocols_spec.rb @@ -1,7 +1,132 @@ -require 'rails_helper' +require "rails_helper" +require_relative "../../support/devise" RSpec.describe "Api::Protocols", type: :request do - describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" + login_user(:admin) + + describe "GET /api/protocols/options #options" do + it "returns a successful response" do + get api_protocols_options_url + expect(response).to be_successful + end + + it "returns protocols in options format" do + protocol = create(:protocol) + get api_protocols_options_url + expect(response.parsed_body).to include( + hash_including("id" => protocol.id, "title" => protocol.title), + ) + end + end + + describe "GET /api/protocols/:slug #show" do + it "returns a successful response" do + protocol = create(:protocol) + get api_protocol_url(protocol) + expect(response).to be_successful + end + + it "returns the protocol data" do + protocol = create(:protocol) + get api_protocol_url(protocol) + expect(response.parsed_body).to include( + "id" => protocol.id, + "title" => protocol.title, + ) + end + end + + describe "POST /api/protocols/:slug/execute #execute" do + it "returns accepted status when executing protocol" do + protocol = create(:protocol) + put api_execute_protocol_url(protocol) + + expect(response).to have_http_status(:accepted) + end + + it "creates an activity record" do + protocol = create(:protocol) + + expect { + put api_execute_protocol_url(protocol) + }.to change { + PublicActivity::Activity.where( + trackable: protocol, + key: "protocol.execute", + ).count + }.by(1) + end + + it "enqueues an OSC protocol job" do + protocol = create(:protocol) + expect { + put api_execute_protocol_url(protocol) + }.to have_enqueued_job(SendOscProtocolJob).with(protocol) + end + end + + describe "POST /api/protocols #create" do + it "creates a new Protocol with valid parameters" do + valid_attributes = attributes_for(:protocol) + expect { + post api_protocols_url, params: { protocol: valid_attributes } + }.to change(Protocol, :count).by(1) + end + + it "returns created status with valid parameters" do + valid_attributes = attributes_for(:protocol) + post api_protocols_url, params: { protocol: valid_attributes } + + expect(response).to have_http_status(:created) + end + + it "does not create a new Protocol with invalid parameters" do + invalid_attributes = attributes_for(:protocol, title: nil) + + expect { + post api_protocols_url, params: { protocol: invalid_attributes } + }.not_to change(Protocol, :count) + end + + it "returns not acceptable status with invalid parameters" do + invalid_attributes = attributes_for(:protocol, title: nil) + post api_protocols_url, params: { protocol: invalid_attributes } + + expect(response).to have_http_status(:not_acceptable) + end + end + + describe "PATCH /api/protocols/:slug #update" do + it "updates the requested protocol with valid parameters" do + protocol = create(:protocol) + + patch api_protocol_url(protocol), params: { protocol: { title: "New Title" } } + protocol.reload + expect(protocol.title).to eq("New Title") + end + + it "returns created status with valid parameters" do + protocol = create(:protocol) + + patch api_protocol_url(protocol), params: { protocol: { title: "New Title" } } + expect(response).to have_http_status(:created) + end + + it "does not update the protocol with invalid parameters" do + protocol = create(:protocol) + original_title = protocol.title + + patch api_protocol_url(protocol), params: { protocol: { title: nil } } + protocol.reload + expect(protocol.title).to eq(original_title) + end + + it "returns not acceptable status with invalid parameters" do + protocol = create(:protocol) + invalid_attributes = attributes_for(:protocol, title: nil) + + patch api_protocol_url(protocol), params: { protocol: invalid_attributes } + expect(response).to have_http_status(:not_acceptable) + end end end diff --git a/spec/requests/api/servers_spec.rb b/spec/requests/api/servers_spec.rb index 789afbe..f4b16b0 100644 --- a/spec/requests/api/servers_spec.rb +++ b/spec/requests/api/servers_spec.rb @@ -1,7 +1,21 @@ -require 'rails_helper' +require "rails_helper" +require_relative "../../support/devise" RSpec.describe "Api::Servers", type: :request do + login_user(:admin) + describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" + it "returns a successful response" do + get api_servers_url + expect(response).to be_successful + end + + it "returns a list of servers" do + server = create(:server) + get api_servers_url + expect(response.parsed_body).to include( + hash_including("id" => server.id, "title" => server.title), + ) + end end end diff --git a/spec/requests/commands_spec.rb b/spec/requests/commands_spec.rb index 097510b..e9ce6e5 100644 --- a/spec/requests/commands_spec.rb +++ b/spec/requests/commands_spec.rb @@ -1,33 +1,12 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. +require "rails_helper" +require_relative "../support/devise" RSpec.describe "/commands", type: :request do - - # This should return the minimal set of attributes required to create a valid - # Command. As you add validations to Command, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } - - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } + login_user(:admin) describe "GET /index" do it "renders a successful response" do - Command.create! valid_attributes + create(:command) get commands_url expect(response).to be_successful end @@ -35,7 +14,7 @@ describe "GET /show" do it "renders a successful response" do - command = Command.create! valid_attributes + command = create(:command) get command_url(command) expect(response).to be_successful end @@ -50,7 +29,7 @@ describe "GET /edit" do it "renders a successful response" do - command = Command.create! valid_attributes + command = create(:command) get edit_command_url(command) expect(response).to be_successful end @@ -59,59 +38,67 @@ describe "POST /create" do context "with valid parameters" do it "creates a new Command" do + server = create(:server) expect { - post commands_url, params: { command: valid_attributes } + post commands_url, params: { command: attributes_for(:command, server_id: server.id) } }.to change(Command, :count).by(1) end - it "redirects to the created command" do - post commands_url, params: { command: valid_attributes } - expect(response).to redirect_to(command_url(Command.last)) + it "redirects to the commands index page" do + server = create(:server) + attributes = attributes_for(:command) + attributes[:server_id] = server.id + + post commands_url, params: { command: attributes } + + expect(response).to redirect_to(commands_url) end end context "with invalid parameters" do it "does not create a new Command" do expect { - post commands_url, params: { command: invalid_attributes } + post commands_url, params: { command: attributes_for(:command, title: nil) } }.not_to change(Command, :count) end - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post commands_url, params: { command: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the new command page" do + post commands_url, params: { command: attributes_for(:command, title: nil) } + expect(response).to redirect_to(new_command_url) end - end end describe "PATCH /update" do context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - it "updates the requested command" do - command = Command.create! valid_attributes - patch command_url(command), params: { command: new_attributes } + server = create(:server) + command = create(:command, server_id: server.id) + patch command_url(command), params: { command: attributes_for(:command, title: "New Name") } command.reload - skip("Add assertions for updated state") + + expect(command.title).to eq("New Name") end - it "redirects to the command" do - command = Command.create! valid_attributes - patch command_url(command), params: { command: new_attributes } + it "redirects to the commands index page" do + server = create(:server) + command = create(:command, server_id: server.id) + patch command_url(command), params: { command: attributes_for(:command, title: "New Name") } command.reload - expect(response).to redirect_to(command_url(command)) + + expect(response).to redirect_to(commands_url) end end context "with invalid parameters" do - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - command = Command.create! valid_attributes - patch command_url(command), params: { command: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the edit command page" do + server = create(:server) + command = create(:command, server_id: server.id) + + patch command_url(command), params: { command: attributes_for(:command, title: nil) } + + expect(response).to redirect_to(edit_command_url(command)) end end @@ -119,14 +106,16 @@ describe "DELETE /destroy" do it "destroys the requested command" do - command = Command.create! valid_attributes + server = create(:server) + command = create(:command, server_id: server.id) expect { delete command_url(command) }.to change(Command, :count).by(-1) end it "redirects to the commands list" do - command = Command.create! valid_attributes + server = create(:server) + command = create(:command, server_id: server.id) delete command_url(command) expect(response).to redirect_to(commands_url) end diff --git a/spec/requests/controls_spec.rb b/spec/requests/controls_spec.rb index 9068f9e..307cf6c 100644 --- a/spec/requests/controls_spec.rb +++ b/spec/requests/controls_spec.rb @@ -1,135 +1,91 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. +require "rails_helper" +require_relative "../support/devise" RSpec.describe "/controls", type: :request do - - # This should return the minimal set of attributes required to create a valid - # Control. As you add validations to Control, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } - - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } - - describe "GET /index" do - it "renders a successful response" do - Control.create! valid_attributes - get controls_url - expect(response).to be_successful - end - end - - describe "GET /show" do - it "renders a successful response" do - control = Control.create! valid_attributes - get control_url(control) - expect(response).to be_successful - end - end - - describe "GET /new" do - it "renders a successful response" do - get new_control_url - expect(response).to be_successful - end - end - - describe "GET /edit" do - it "renders a successful response" do - control = Control.create! valid_attributes - get edit_control_url(control) - expect(response).to be_successful - end - end + login_user(:admin) describe "POST /create" do context "with valid parameters" do it "creates a new Control" do + + screen = create(:screen) + command = create(:command) + attributes = attributes_for(:control, screen_id: screen.id) + attributes[:command_id] = command.id + expect { - post controls_url, params: { control: valid_attributes } + post controls_url, params: { control: attributes } }.to change(Control, :count).by(1) + end - it "redirects to the created control" do - post controls_url, params: { control: valid_attributes } - expect(response).to redirect_to(control_url(Control.last)) + it "redirects to the edit screen page" do + screen = create(:screen) + command = create(:command) + attributes = attributes_for(:control, screen_id: screen.id) + attributes[:command_id] = command.id + + post controls_url, params: { control: attributes } + expect(response).to redirect_to(edit_screen_url(screen)) end end context "with invalid parameters" do - it "does not create a new Control" do - expect { - post controls_url, params: { control: invalid_attributes } - }.to change(Control, :count).by(0) + it "redirects back to the edit screen page" do + screen = create(:screen) + command = create(:command) + attributes = attributes_for(:control, title: nil, screen_id: screen.id) + attributes[:command_id] = command.id + + post controls_url, params: { control: attributes } + expect(response).to redirect_to(edit_screen_url(screen)) end - - - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post controls_url, params: { control: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) - end - end end describe "PATCH /update" do context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - it "updates the requested control" do - control = Control.create! valid_attributes - patch control_url(control), params: { control: new_attributes } + screen = create(:screen) + control = create(:control, :with_command, screen_id: screen.id) + patch control_url(control), params: { control: attributes_for(:control, title: "New Title") } control.reload - skip("Add assertions for updated state") + expect(control.title).to eq("New Title") end it "redirects to the control" do - control = Control.create! valid_attributes - patch control_url(control), params: { control: new_attributes } + screen = create(:screen) + control = create(:control, :with_command, screen_id: screen.id) + patch control_url(control), params: { control: attributes_for(:control, title: "New Title") } control.reload - expect(response).to redirect_to(control_url(control)) + expect(response).to redirect_to(edit_screen_url(screen)) end end context "with invalid parameters" do - - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - control = Control.create! valid_attributes - patch control_url(control), params: { control: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the edit screen page" do + screen = create(:screen) + control = create(:control, :with_command, screen_id: screen.id) + patch control_url(control), params: { control: attributes_for(:control, title: nil) } + expect(response).to redirect_to(edit_screen_url(screen)) end - end end describe "DELETE /destroy" do it "destroys the requested control" do - control = Control.create! valid_attributes + screen = create(:screen) + control = create(:control, :with_command, screen_id: screen.id) expect { delete control_url(control) }.to change(Control, :count).by(-1) end it "redirects to the controls list" do - control = Control.create! valid_attributes + screen = create(:screen) + control = create(:control, :with_command, screen_id: screen.id) delete control_url(control) - expect(response).to redirect_to(controls_url) + expect(response).to redirect_to(edit_screen_url(screen)) end end end diff --git a/spec/requests/pages_spec.rb b/spec/requests/pages_spec.rb deleted file mode 100644 index 9ca99f2..0000000 --- a/spec/requests/pages_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'rails_helper' - -RSpec.describe "Pages", type: :request do - describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" - end -end diff --git a/spec/requests/protocols_commands_spec.rb b/spec/requests/protocols_commands_spec.rb deleted file mode 100644 index 7c3b839..0000000 --- a/spec/requests/protocols_commands_spec.rb +++ /dev/null @@ -1,134 +0,0 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. - -RSpec.describe "/protocols_commands", type: :request do - - # This should return the minimal set of attributes required to create a valid - # ProtocolsCommand. As you add validations to ProtocolsCommand, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } - - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } - - describe "GET /index" do - it "renders a successful response" do - ProtocolsCommand.create! valid_attributes - get protocols_commands_url - expect(response).to be_successful - end - end - - describe "GET /show" do - it "renders a successful response" do - protocols_command = ProtocolsCommand.create! valid_attributes - get protocols_command_url(protocols_command) - expect(response).to be_successful - end - end - - describe "GET /new" do - it "renders a successful response" do - get new_protocols_command_url - expect(response).to be_successful - end - end - - describe "GET /edit" do - it "renders a successful response" do - protocols_command = ProtocolsCommand.create! valid_attributes - get edit_protocols_command_url(protocols_command) - expect(response).to be_successful - end - end - - describe "POST /create" do - context "with valid parameters" do - it "creates a new ProtocolsCommand" do - expect { - post protocols_commands_url, params: { protocols_command: valid_attributes } - }.to change(ProtocolsCommand, :count).by(1) - end - - it "redirects to the created protocols_command" do - post protocols_commands_url, params: { protocols_command: valid_attributes } - expect(response).to redirect_to(protocols_command_url(ProtocolsCommand.last)) - end - end - - context "with invalid parameters" do - it "does not create a new ProtocolsCommand" do - expect { - post protocols_commands_url, params: { protocols_command: invalid_attributes } - }.not_to change(ProtocolsCommand, :count) - end - - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post protocols_commands_url, params: { protocols_command: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) - end - - end - end - - describe "PATCH /update" do - context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - - it "updates the requested protocols_command" do - protocols_command = ProtocolsCommand.create! valid_attributes - patch protocols_command_url(protocols_command), params: { protocols_command: new_attributes } - protocols_command.reload - skip("Add assertions for updated state") - end - - it "redirects to the protocols_command" do - protocols_command = ProtocolsCommand.create! valid_attributes - patch protocols_command_url(protocols_command), params: { protocols_command: new_attributes } - protocols_command.reload - expect(response).to redirect_to(protocols_command_url(protocols_command)) - end - end - - context "with invalid parameters" do - - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - protocols_command = ProtocolsCommand.create! valid_attributes - patch protocols_command_url(protocols_command), params: { protocols_command: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) - end - - end - end - - describe "DELETE /destroy" do - it "destroys the requested protocols_command" do - protocols_command = ProtocolsCommand.create! valid_attributes - expect { - delete protocols_command_url(protocols_command) - }.to change(ProtocolsCommand, :count).by(-1) - end - - it "redirects to the protocols_commands list" do - protocols_command = ProtocolsCommand.create! valid_attributes - delete protocols_command_url(protocols_command) - expect(response).to redirect_to(protocols_commands_url) - end - end -end diff --git a/spec/requests/protocols_spec.rb b/spec/requests/protocols_spec.rb index 79bd656..1fbe006 100644 --- a/spec/requests/protocols_spec.rb +++ b/spec/requests/protocols_spec.rb @@ -1,33 +1,12 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. +require "rails_helper" +require_relative "../support/devise" RSpec.describe "/protocols", type: :request do - - # This should return the minimal set of attributes required to create a valid - # Protocol. As you add validations to Protocol, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } - - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } + login_user(:admin) describe "GET /index" do it "renders a successful response" do - Protocol.create! valid_attributes + create(:protocol) get protocols_url expect(response).to be_successful end @@ -35,7 +14,7 @@ describe "GET /show" do it "renders a successful response" do - protocol = Protocol.create! valid_attributes + protocol = create(:protocol) get protocol_url(protocol) expect(response).to be_successful end @@ -50,7 +29,7 @@ describe "GET /edit" do it "renders a successful response" do - protocol = Protocol.create! valid_attributes + protocol = create(:protocol) get edit_protocol_url(protocol) expect(response).to be_successful end @@ -60,12 +39,12 @@ context "with valid parameters" do it "creates a new Protocol" do expect { - post protocols_url, params: { protocol: valid_attributes } + post protocols_url, params: { protocol: attributes_for(:protocol) } }.to change(Protocol, :count).by(1) end it "redirects to the created protocol" do - post protocols_url, params: { protocol: valid_attributes } + post protocols_url, params: { protocol: attributes_for(:protocol) } expect(response).to redirect_to(protocol_url(Protocol.last)) end end @@ -73,13 +52,13 @@ context "with invalid parameters" do it "does not create a new Protocol" do expect { - post protocols_url, params: { protocol: invalid_attributes } + post protocols_url, params: { protocol: attributes_for(:protocol, title: nil) } }.not_to change(Protocol, :count) end - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post protocols_url, params: { protocol: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the new protocol page" do + post protocols_url, params: { protocol: attributes_for(:protocol, title: nil) } + expect(response).to redirect_to(new_protocol_url) end end @@ -87,31 +66,26 @@ describe "PATCH /update" do context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - it "updates the requested protocol" do - protocol = Protocol.create! valid_attributes - patch protocol_url(protocol), params: { protocol: new_attributes } + protocol = create(:protocol) + patch protocol_url(protocol), params: { protocol: attributes_for(:protocol, title: "New Title") } protocol.reload - skip("Add assertions for updated state") + expect(protocol.title).to eq("New Title") end it "redirects to the protocol" do - protocol = Protocol.create! valid_attributes - patch protocol_url(protocol), params: { protocol: new_attributes } + protocol = create(:protocol) + patch protocol_url(protocol), params: { protocol: attributes_for(:protocol, title: "New Title") } protocol.reload expect(response).to redirect_to(protocol_url(protocol)) end end context "with invalid parameters" do - - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - protocol = Protocol.create! valid_attributes - patch protocol_url(protocol), params: { protocol: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the edit protocol page" do + protocol = create(:protocol) + patch protocol_url(protocol), params: { protocol: attributes_for(:protocol, title: nil) } + expect(response).to redirect_to(edit_protocol_url(protocol)) end end @@ -119,14 +93,14 @@ describe "DELETE /destroy" do it "destroys the requested protocol" do - protocol = Protocol.create! valid_attributes + protocol = create(:protocol) expect { delete protocol_url(protocol) }.to change(Protocol, :count).by(-1) end it "redirects to the protocols list" do - protocol = Protocol.create! valid_attributes + protocol = create(:protocol) delete protocol_url(protocol) expect(response).to redirect_to(protocols_url) end diff --git a/spec/requests/screens_spec.rb b/spec/requests/screens_spec.rb index aff32ee..8494361 100644 --- a/spec/requests/screens_spec.rb +++ b/spec/requests/screens_spec.rb @@ -1,41 +1,31 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. +require "rails_helper" +require_relative "../support/devise" RSpec.describe "/screens", type: :request do + login_user(:admin) - # This should return the minimal set of attributes required to create a valid - # Screen. As you add validations to Screen, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } + describe "GET /index" do + context "when screens exist" do + it "redirects to the first ordered screen" do + main_screen = create(:screen, order: 1) + create(:screen, order: 2) - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } + get screens_url + expect(response).to redirect_to(main_screen) + end + end - describe "GET /index" do - it "renders a successful response" do - Screen.create! valid_attributes - get screens_url - expect(response).to be_successful + context "when no screens exist" do + it "redirects to new screen path" do + get screens_url + expect(response).to redirect_to(new_screen_path) + end end end describe "GET /show" do it "renders a successful response" do - screen = Screen.create! valid_attributes + screen = create(:screen) get screen_url(screen) expect(response).to be_successful end @@ -43,7 +33,7 @@ describe "GET /edit" do it "renders a successful response" do - screen = Screen.create! valid_attributes + screen = create(:screen) get edit_screen_url(screen) expect(response).to be_successful end @@ -53,58 +43,54 @@ context "with valid parameters" do it "creates a new Screen" do expect { - post screens_url, params: { screen: valid_attributes } + post screens_url, params: { screen: attributes_for(:screen) } }.to change(Screen, :count).by(1) end - it "redirects to the created screen" do - post screens_url, params: { screen: valid_attributes } - expect(response).to redirect_to(screen_url(Screen.last)) + it "redirects to the edit screen page" do + post screens_url, params: { screen: attributes_for(:screen) } + expect(response).to redirect_to(edit_screen_url(Screen.last)) end end context "with invalid parameters" do it "does not create a new Screen" do expect { - post screens_url, params: { screen: invalid_attributes } + post screens_url, params: { screen: attributes_for(:screen, title: nil) } }.not_to change(Screen, :count) end - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post screens_url, params: { screen: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the new screen page" do + post screens_url, params: { screen: attributes_for(:screen, title: nil) } + expect(response).to redirect_to(new_screen_url) end - end end describe "PATCH /update" do context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - it "updates the requested screen" do - screen = Screen.create! valid_attributes - patch screen_url(screen), params: { screen: new_attributes } + screen = create(:screen) + patch screen_url(screen), params: { screen: { title: "New Title" } } screen.reload - skip("Add assertions for updated state") + + expect(screen.title).to eq("New Title") end it "redirects to the screen" do - screen = Screen.create! valid_attributes - patch screen_url(screen), params: { screen: new_attributes } + screen = create(:screen) + patch screen_url(screen), params: { screen: { title: "New Title" } } screen.reload - expect(response).to redirect_to(screen_url(screen)) + expect(response).to redirect_to(edit_screen_url(screen)) end end context "with invalid parameters" do - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - screen = Screen.create! valid_attributes - patch screen_url(screen), params: { screen: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the edit screen page" do + screen = create(:screen) + patch screen_url(screen), params: { screen: { title: "" } } + expect(response).to redirect_to(edit_screen_url(screen)) end end @@ -112,16 +98,16 @@ describe "DELETE /destroy" do it "destroys the requested screen" do - screen = Screen.create! valid_attributes + screen = create(:screen) expect { delete screen_url(screen) }.to change(Screen, :count).by(-1) end - it "redirects to the screens list" do - screen = Screen.create! valid_attributes + it "redirects to the edit screens page" do + screen = create(:screen) delete screen_url(screen) - expect(response).to redirect_to(screens_url) + expect(response).to redirect_to(edit_screens_url) end end end diff --git a/spec/requests/servers_spec.rb b/spec/requests/servers_spec.rb index c29089b..7c61728 100644 --- a/spec/requests/servers_spec.rb +++ b/spec/requests/servers_spec.rb @@ -1,33 +1,12 @@ -require 'rails_helper' - -# This spec was generated by rspec-rails when you ran the scaffold generator. -# It demonstrates how one might use RSpec to test the controller code that -# was generated by Rails when you ran the scaffold generator. -# -# It assumes that the implementation code is generated by the rails scaffold -# generator. If you are using any extension libraries to generate different -# controller code, this generated spec may or may not pass. -# -# It only uses APIs available in rails and/or rspec-rails. There are a number -# of tools you can use to make these specs even more expressive, but we're -# sticking to rails and rspec-rails APIs to keep things simple and stable. +require "rails_helper" +require_relative "../support/devise" RSpec.describe "/servers", type: :request do - - # This should return the minimal set of attributes required to create a valid - # Server. As you add validations to Server, be sure to - # adjust the attributes here as well. - let(:valid_attributes) { - skip("Add a hash of attributes valid for your model") - } - - let(:invalid_attributes) { - skip("Add a hash of attributes invalid for your model") - } + login_user(:admin) describe "GET /index" do it "renders a successful response" do - Server.create! valid_attributes + create(:server) get servers_url expect(response).to be_successful end @@ -35,7 +14,7 @@ describe "GET /show" do it "renders a successful response" do - server = Server.create! valid_attributes + server = create(:server) get server_url(server) expect(response).to be_successful end @@ -50,7 +29,7 @@ describe "GET /edit" do it "renders a successful response" do - server = Server.create! valid_attributes + server = create(:server) get edit_server_url(server) expect(response).to be_successful end @@ -60,12 +39,12 @@ context "with valid parameters" do it "creates a new Server" do expect { - post servers_url, params: { server: valid_attributes } + post servers_url, params: { server: attributes_for(:server) } }.to change(Server, :count).by(1) end it "redirects to the created server" do - post servers_url, params: { server: valid_attributes } + post servers_url, params: { server: attributes_for(:server) } expect(response).to redirect_to(server_url(Server.last)) end end @@ -73,61 +52,54 @@ context "with invalid parameters" do it "does not create a new Server" do expect { - post servers_url, params: { server: invalid_attributes } - }.to change(Server, :count).by(0) + post servers_url, params: { server: attributes_for(:server, hostname: nil) } + }.not_to change(Server, :count) end - - it "renders a response with 422 status (i.e. to display the 'new' template)" do - post servers_url, params: { server: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the new server page" do + post servers_url, params: { server: attributes_for(:server, hostname: nil) } + expect(response).to redirect_to(new_server_url) end - + end end describe "PATCH /update" do context "with valid parameters" do - let(:new_attributes) { - skip("Add a hash of attributes valid for your model") - } - it "updates the requested server" do - server = Server.create! valid_attributes - patch server_url(server), params: { server: new_attributes } + server = create(:server) + patch server_url(server), params: { server: attributes_for(:server, hostname: "new.example.com") } server.reload - skip("Add assertions for updated state") + expect(server.hostname).to eq("new.example.com") end it "redirects to the server" do - server = Server.create! valid_attributes - patch server_url(server), params: { server: new_attributes } + server = create(:server) + patch server_url(server), params: { server: attributes_for(:server, hostname: "new.example.com") } server.reload expect(response).to redirect_to(server_url(server)) end end context "with invalid parameters" do - - it "renders a response with 422 status (i.e. to display the 'edit' template)" do - server = Server.create! valid_attributes - patch server_url(server), params: { server: invalid_attributes } - expect(response).to have_http_status(:unprocessable_entity) + it "redirects back to the edit server page" do + server = create(:server) + patch server_url(server), params: { server: attributes_for(:server, hostname: nil) } + expect(response).to redirect_to(edit_server_url(server)) end - end end describe "DELETE /destroy" do it "destroys the requested server" do - server = Server.create! valid_attributes + server = create(:server) expect { delete server_url(server) }.to change(Server, :count).by(-1) end it "redirects to the servers list" do - server = Server.create! valid_attributes + server = create(:server) delete server_url(server) expect(response).to redirect_to(servers_url) end diff --git a/spec/services/osc_service_spec.rb b/spec/services/osc_service_spec.rb index fc56b7b..37c1f65 100644 --- a/spec/services/osc_service_spec.rb +++ b/spec/services/osc_service_spec.rb @@ -1,11 +1,11 @@ -require 'rails_helper' -require 'socket' +require "rails_helper" +require "socket" RSpec.describe OscService do let(:command) { build(:command) } - describe '#send' do - it 'sends message via UDP' do + describe "#send" do + it "sends message via UDP" do mock_socket = instance_double(UDPSocket) allow(UDPSocket).to receive(:new).and_return(mock_socket) diff --git a/spec/support/request_macros.rb b/spec/support/request_macros.rb index e80a16a..6b3ef8f 100644 --- a/spec/support/request_macros.rb +++ b/spec/support/request_macros.rb @@ -1,19 +1,8 @@ module RequestMacros - def login_admin + def login_user(role) before do - @admin = FactoryBot.create(:user) - @admin.confirm - @admin.add_role(:super_admin) - @admin.add_role(:admin, Company.first) - sign_in @admin - end - end - - def login_user - before do - @user = FactoryBot.create(:user) - @user.confirm - @user.add_role(:admin, Company.first) + @user = FactoryBot.create(:user, confirmed_at: Time.current) + @user.add_role(role) sign_in @user end end diff --git a/tsconfig.json b/tsconfig.json index 677bf69..0ae316d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,7 @@ /* Language and Environment */ "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "lib": ["esnext", "dom", "dom.iterable"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "jsx": "react", /* Specify what JSX code is generated. */ + "jsx": "react-jsx", /* Specify what JSX code is generated. */ "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ @@ -42,7 +42,6 @@ "./node_modules/@inertiajs/core/types" ], "types": [ /* Specify type package names to be included without being referenced in a source file. */ - "node" ], // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ "resolveJsonModule": true, /* Enable importing .json files */ diff --git a/vite.config.ts b/vite.config.ts index c083f70..f9f5fe5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,49 +1,49 @@ -import { defineConfig } from 'vite' -import RubyPlugin from 'vite-plugin-ruby' -import wyw from '@wyw-in-js/vite' -import tsconfigPaths from 'vite-tsconfig-paths' -import FullReload from 'vite-plugin-full-reload' -import react from '@vitejs/plugin-react' -import path from 'path' +import { defineConfig } from "vite" +import RubyPlugin from "vite-plugin-ruby" +import wyw from "@wyw-in-js/vite" +import tsconfigPaths from "vite-tsconfig-paths" +import FullReload from "vite-plugin-full-reload" +import react from "@vitejs/plugin-react" +import path from "path" const config = defineConfig({ build: { rollupOptions: { external: [ - './app/frontend/Images/*', + "./app/frontend/Images/*", ], }, - outDir: 'public/vite-production', + outDir: "public/vite-production", }, plugins: [ tsconfigPaths(), RubyPlugin(), - FullReload(['config/routes.rb', 'app/views/**/*'], { delay: 200 }), + FullReload(["config/routes.rb", "app/views/**/*"], { delay: 200 }), react({ babel: { - plugins: ['babel-plugin-macros'], + plugins: ["babel-plugin-macros"], }, }), wyw({ - include: ['**/*.{ts,tsx}'], + include: ["**/*.{ts,tsx}"], babelOptions: { - presets: ['@babel/preset-typescript', '@babel/preset-react'], + presets: ["@babel/preset-typescript", "@babel/preset-react"], }, }), ], resolve: { - dedupe: ['axios'], + dedupe: ["axios"], alias: { - '@': path.resolve(__dirname, 'app', 'frontend'), + "@": path.resolve(__dirname, "app", "frontend"), }, }, - base: './', + base: "./", server: { fs: { strict: false, }, }, - mode: process.env.NODE_ENV || 'development', + mode: process.env.NODE_ENV || "development", }) export default config diff --git a/vitest.config.ts b/vitest.config.ts index 842c91c..44cbfeb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,13 +1,13 @@ -import { defineConfig, mergeConfig } from 'vitest/config' -import viteConfig from './vite.config' +import { defineConfig, mergeConfig } from "vitest/config" +import viteConfig from "./vite.config" export default mergeConfig(viteConfig, defineConfig({ test: { globals: true, - environment: 'jsdom', + environment: "jsdom", coverage: { all: true, - include: ['app/frontend/**/*.test.{ts,tsx}'], + include: ["app/frontend/**/*.test.{ts,tsx}"], }, }, })) diff --git a/yarn.lock b/yarn.lock index b6e9e04..6e30030 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,9 +6,9 @@ __metadata: cacheKey: 10 "@adobe/css-tools@npm:^4.4.0": - version: 4.4.0 - resolution: "@adobe/css-tools@npm:4.4.0" - checksum: 10/9c6315fe9efa5075d6ddb6ded7a1424bc9c41a01f2314b6bdcc368723985fe161008d03ddcc2b27b2da50cb9c14190fbce965d15cefe5f9a31bdd43f35b52115 + version: 4.4.1 + resolution: "@adobe/css-tools@npm:4.4.1" + checksum: 10/a0ea05517308593a52728936a833b1075c4cf1a6b68baaea817063f34e75faa1dba1209dd285003c4f8072804227dfa563e7e903f72ae2d39cb520aaee3f4bcc languageName: node linkType: hard @@ -22,513 +22,223 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.2": - version: 7.24.2 - resolution: "@babel/code-frame@npm:7.24.2" +"@asamuzakjp/css-color@npm:^2.8.2": + version: 2.8.3 + resolution: "@asamuzakjp/css-color@npm:2.8.3" dependencies: - "@babel/highlight": "npm:^7.24.2" - picocolors: "npm:^1.0.0" - checksum: 10/7db8f5b36ffa3f47a37f58f61e3d130b9ecad21961f3eede7e2a4ac2c7e4a5efb6e9d03a810c669bc986096831b6c0dfc2c3082673d93351b82359c1b03e0590 + "@csstools/css-calc": "npm:^2.1.1" + "@csstools/css-color-parser": "npm:^3.0.7" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + lru-cache: "npm:^10.4.3" + checksum: 10/3fbd6b975cfca220a0620843776e7d266b880293a9e3364a48de11ca3eb54af8209343d01842a7c98d2737e457294a7621a5f6671aaf5f12e1634d10808f2508 languageName: node linkType: hard -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.23.5": - version: 7.24.4 - resolution: "@babel/compat-data@npm:7.24.4" - checksum: 10/e51faec0ac8259f03cc5029d2b4a944b4fee44cb5188c11530769d5beb81f384d031dba951febc3e33dbb48ceb8045b1184f5c1ac4c5f86ab1f5e951e9aaf7af - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: 10/d37a8936cc355a9ca3050102e03d179bdae26bd2e5c99a977637376c192b23637a039795f153c849437a086727628c9860e2c6af92d7151396e2362c09176337 + checksum: 10/db2c2122af79d31ca916755331bb4bac96feb2b334cdaca5097a6b467fdd41963b89b14b6836a14f083de7ff887fc78fa1b3c10b14e743d33e12dbfe5ee3d223 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/core@npm:7.24.5" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.2" - "@babel/generator": "npm:^7.24.5" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.24.5" - "@babel/helpers": "npm:^7.24.5" - "@babel/parser": "npm:^7.24.5" - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.5" - "@babel/types": "npm:^7.24.5" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/b0d02c51f39cc4c6f8fcaab7052d17dea63aab36d7e2567bfbad074e5a027df737ebcaf3029c3a659bc719bbac806311c2e8786be1d686abd093c48a6068395c +"@babel/compat-data@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/compat-data@npm:7.26.5" + checksum: 10/afe35751f27bda80390fa221d5e37be55b7fc42cec80de9896086e20394f2306936c4296fcb4d62b683e3b49ba2934661ea7e06196ca2dacdc2e779fbea4a1a9 languageName: node linkType: hard -"@babel/core@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9, @babel/core@npm:^7.26.0, @babel/core@npm:^7.26.7": + version: 7.26.7 + resolution: "@babel/core@npm:7.26.7" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.5" + "@babel/helper-compilation-targets": "npm:^7.26.5" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.7" + "@babel/parser": "npm:^7.26.7" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.7" + "@babel/types": "npm:^7.26.7" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/0d6ec10ff430df66f654c089d6f7ef1d9bed0c318ac257ad5f0dfa0caa45666011828ae75f998bcdb279763e892b091b2925d0bc483299e61649d2c7a2245e33 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.23.5, @babel/generator@npm:^7.24.5, @babel/generator@npm:^7.7.2": - version: 7.24.5 - resolution: "@babel/generator@npm:7.24.5" - dependencies: - "@babel/types": "npm:^7.24.5" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/7a3782f1d2f824025a538444a0fce44f5b30a7b013984279561bcb3450eec91a41526533fd0b25b1a6fde627bebd0e645c0ea2aa907cc15c7f3da2d9eb71f069 + checksum: 10/1ca1c9b1366a1ee77ade9c72302f288b2b148e4190e0f36bc032d09c686b2c7973d3309e4eec2c57243508c16cf907c17dec4e34ba95e7a18badd57c61bbcb7c languageName: node linkType: hard -"@babel/generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/generator@npm:7.24.7" +"@babel/generator@npm:^7.23.5, @babel/generator@npm:^7.26.5, @babel/generator@npm:^7.7.2": + version: 7.26.5 + resolution: "@babel/generator@npm:7.26.5" dependencies: - "@babel/types": "npm:^7.24.7" + "@babel/parser": "npm:^7.26.5" + "@babel/types": "npm:^7.26.5" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/c71d24a4b41b19c10d2f2eb819f27d4cf94220e2322f7c8fed8bfbbb115b2bebbdd6dc1f27dac78a175e90604def58d763af87e0fa81ce4ab1582858162cf768 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/generator@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/541e4fbb6ea7806f44232d70f25bf09dee9a57fe43d559e375536870ca5261ebb4647fec3af40dcbb3325ea2a49aff040e12a4e6f88609eaa88f10c4e27e31f8 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/a9017bfc1c4e9f2225b967fbf818004703de7cf29686468b54002ffe8d6b56e0808afa20d636819fcf3a34b89ba72f52c11bdf1d69f303928ee10d92752cad95 + jsesc: "npm:^3.0.2" + checksum: 10/aa5f176155431d1fb541ca11a7deddec0fc021f20992ced17dc2f688a0a9584e4ff4280f92e8a39302627345cd325762f70f032764806c579c6fd69432542bcb languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-compilation-targets@npm:7.23.6" +"@babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-validator-option": "npm:^7.23.5" - browserslist: "npm:^4.22.2" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/05595cd73087ddcd81b82d2f3297aac0c0422858dfdded43d304786cf680ec33e846e2317e6992d2c964ee61d93945cbf1fa8ec80b55aee5bfb159227fb02cb9 + "@babel/types": "npm:^7.25.9" + checksum: 10/41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.26.5": + version: 7.26.5 + resolution: "@babel/helper-compilation-targets@npm:7.26.5" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.26.5" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10/eccb2d75923d2d4d596f9ff64716e8664047c4192f1b44c7d5c07701d4a3498ac2587a72ddae1046e65a501bc630eb7df4557958b08ec2dcf5b4a264a052f111 + checksum: 10/f3b5f0bfcd7b6adf03be1a494b269782531c6e415afab2b958c077d570371cf1bfe001c442508092c50ed3711475f244c05b8f04457d8dea9c34df2b741522bf languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" +"@babel/helper-create-class-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-function-name": "npm:^7.24.7" - "@babel/helper-member-expression-to-functions": "npm:^7.24.7" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/helper-split-export-declaration": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/8ecb1c2acc808e1e0c21dccc7ea6899de9a140cb1856946800176b4784de6fccd575661fbff7744bb895d01aa6956ce963446b8577c4c2334293ba5579d5cdb9 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: 10/d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-environment-visitor@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/079d86e65701b29ebc10baf6ed548d17c19b808a07aa6885cc141b690a78581b180ee92b580d755361dc3b16adf975b2d2058b8ce6c86675fcaf43cf22f2f7c6 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.23.0" - checksum: 10/7b2ae024cd7a09f19817daf99e0153b3bf2bc4ab344e197e8d13623d5e36117ed0b110914bc248faa64e8ccd3e97971ec7b41cc6fd6163a2b980220c58dcdf6d - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-function-name@npm:7.24.7" - dependencies: - "@babel/template": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/2ceb3d9b2b35a0fc4100fc06ed7be3bc38f03ff0bf128ff0edbc0cc7dd842967b1496fc70b5c616c747d7711c2b87e7d025c8888f48740631d6148a9d3614f85 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 10/394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-hoist-variables@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/d990752aaff311aba0ca61539e1776c5ba2818836403f9bafac849deb4cd24c082cbde5f23e490b7f3614c95ff67f8d75fa5e2f14cb00586a72c96c158e1127b - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3": - version: 7.24.3 - resolution: "@babel/helper-module-imports@npm:7.24.3" - dependencies: - "@babel/types": "npm:^7.24.0" - checksum: 10/42fe124130b78eeb4bb6af8c094aa749712be0f4606f46716ce74bc18a5ea91c918c547c8bb2307a2e4b33f163e4ad2cb6a7b45f80448e624eae45b597ea3499 + checksum: 10/d1d47a7b5fd317c6cb1446b0e4f4892c19ddaa69ea0229f04ba8bea5f273fc8168441e7114ad36ff919f2d310f97310cec51adc79002e22039a7e1640ccaf248 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/df8bfb2bb18413aa151ecd63b7d5deb0eec102f924f9de6bc08022ced7ed8ca7fed914562d2f6fa5b59b74a5d6e255dc35612b2bc3b8abf361e13f61b3704770 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/ef8cc1c1e600b012b312315f843226545a1a89f25d2f474ce2503fd939ca3f8585180f291a3a13efc56cf13eddc1d41a3a040eae9a521838fd59a6d04cc82490 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.23.3, @babel/helper-module-transforms@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-module-transforms@npm:7.24.5" +"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.24.3" - "@babel/helper-simple-access": "npm:^7.24.5" - "@babel/helper-split-export-declaration": "npm:^7.24.5" - "@babel/helper-validator-identifier": "npm:^7.24.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/1a91e8abc2f427f8273ce3b99ef7b9c013eb3628221428553e0d4bc9c6db2e73bc4fc1b8535bd258544936accab9380e0d095f2449f913cad650ddee744b2124 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-transforms@npm:7.24.7" +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-split-export-declaration": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/4f2b232bf6d1be8d3a72b084a2a7ac1b0b93ea85717411a11ae1fb6375d4392019e781d8cc155789e649a2caa7eec378dd1404210603d6d4230f042c5feacffb + checksum: 10/9841d2a62f61ad52b66a72d08264f23052d533afc4ce07aec2a6202adac0bfe43014c312f94feacb3291f4c5aafe681955610041ece2c276271adce3f570f2f5 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/a3bcf7815f3e9d8b205e0af4a8d92603d685868e45d119b621357e274996bf916216bb95ab5c6a60fde3775b91941555bf129d608e3d025b04f8aac84589f300 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/da7a7f2d1bb1be4cffd5fa820bd605bc075c7dd014e0458f608bb6f34f450fe9412c8cea93e788227ab396e0e02c162d7b1db3fbcb755a6360e354c485d61df0 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.24.5 - resolution: "@babel/helper-plugin-utils@npm:7.24.5" - checksum: 10/6e11ca5da73e6bd366848236568c311ac10e433fc2034a6fe6243af28419b07c93b4386f87bbc940aa058b7c83f370ef58f3b0fd598106be040d21a3d1c14276 + "@babel/types": "npm:^7.25.9" + checksum: 10/f09d0ad60c0715b9a60c31841b3246b47d67650c512ce85bbe24a3124f1a4d66377df793af393273bc6e1015b0a9c799626c48e53747581c1582b99167cc65dc languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-plugin-utils@npm:7.24.7" - checksum: 10/dad51622f0123fdba4e2d40a81a6b7d6ef4b1491b2f92fd9749447a36bde809106cf117358705057a2adc8fd73d5dc090222e0561b1213dae8601c8367f5aac8 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.26.5 + resolution: "@babel/helper-plugin-utils@npm:7.26.5" + checksum: 10/1cc0fd8514da3bb249bed6c27227696ab5e84289749d7258098701cffc0c599b7f61ec40dd332f8613030564b79899d9826813c96f966330bcfc7145a8377857 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-replace-supers@npm:7.24.7" +"@babel/helper-replace-supers@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/helper-replace-supers@npm:7.26.5" dependencies: - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-member-expression-to-functions": "npm:^7.24.7" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/18b7c3709819d008a14953e885748f3e197537f131d8f7ae095fec245506d854ff40b236edb1754afb6467f795aa90ae42a1d961a89557702249bacfc3fdad19 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5, @babel/helper-simple-access@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-simple-access@npm:7.24.5" - dependencies: - "@babel/types": "npm:^7.24.5" - checksum: 10/db8768a16592faa1bde9061cac3d903bdbb2ddb2a7e9fb73c5904daee1f1b1dc69ba4d249dc22c45885c0d4b54fd0356ee78e6d67a9a90330c7dd37e6cd3acff - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/5083e190186028e48fc358a192e4b93ab320bd016103caffcfda81302a13300ccce46c9cd255ae520c25d2a6a9b47671f93e5fe5678954a2329dc0a685465c49 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/784a6fdd251a9a7e42ccd04aca087ecdab83eddc60fda76a2950e00eb239cc937d3c914266f0cc476298b52ac3f44ffd04c358e808bd17552a7e008d75494a77 + checksum: 10/cfb911d001a8c3d2675077dbb74ee8d7d5533b22d74f8d775cefabf19c604f6cbc22cfeb94544fe8efa626710d920f04acb22923017e68f46f5fdb1cb08b32ad languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-split-export-declaration@npm:7.24.5" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.24.5" - checksum: 10/84777b6304ef0fe6501038985b61aaa118082688aa54eca8265f14f3ae2e01adf137e9111f4eb9870e0e9bc23901e0b8859bb2a9e4362ddf89d05e1c409c2422 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-split-export-declaration@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/ff04a3071603c87de0d6ee2540b7291ab36305b329bd047cdbb6cbd7db335a12f9a77af1cf708779f75f13c4d9af46093c00b34432e50b2411872c658d1a2e5e - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/helper-string-parser@npm:7.24.1" - checksum: 10/04c0ede77b908b43e6124753b48bc485528112a9335f0a21a226bff1ace75bb6e64fab24c85cb4b1610ef3494dacd1cb807caeb6b79a7b36c43d48c289b35949 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-string-parser@npm:7.24.7" - checksum: 10/603d8d962bbe89907aa99a8f19a006759ab7b2464615f20a6a22e3e2e8375af37ddd0e5175c9e622e1c4b2d83607ffb41055a59d0ce34404502af30fde573a5c - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-validator-identifier@npm:7.24.5" - checksum: 10/38aaf6a64a0ea2e84766165b461deda3c24fd2173dff18419a2cc9e1ea1d3e709039aee94db29433a07011492717c80900a5eb564cdca7d137757c3c69e26898 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/fdbb5248932198bc26daa6abf0d2ac42cab9c2dbb75b7e9f40d425c8f28f09620b886d40e7f9e4e08ffc7aaa2cefe6fc2c44be7c20e81f7526634702fb615bdc languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: 10/537cde2330a8aede223552510e8a13e9c1c8798afee3757995a7d4acae564124fe2bf7e7c3d90d62d3657434a74340a274b3b3b1c6f17e9a2be1f48af29cb09e +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10/c28656c52bd48e8c1d9f3e8e68ecafd09d949c57755b0d353739eb4eae7ba4f7e67e92e4036f1cd43378cc1397a2c943ed7bcaf5949b04ab48607def0258b775 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-option@npm:7.24.7" - checksum: 10/9689166bf3f777dd424c026841c8cd651e41b21242dbfd4569a53086179a3e744c8eddd56e9d10b54142270141c91581b53af0d7c00c82d552d2540e2a919f7e +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10/3f9b649be0c2fd457fa1957b694b4e69532a668866b8a0d81eabfa34ba16dbf3107b39e0e7144c55c3c652bf773ec816af8df4a61273a2bb4eb3145ca9cf478e languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10/a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10/9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d languageName: node linkType: hard -"@babel/helpers@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helpers@npm:7.24.5" +"@babel/helpers@npm:^7.26.7": + version: 7.26.7 + resolution: "@babel/helpers@npm:7.26.7" dependencies: - "@babel/template": "npm:^7.24.0" - "@babel/traverse": "npm:^7.24.5" - "@babel/types": "npm:^7.24.5" - checksum: 10/efd74325823c70a32aa9f5e263c8eb0a1f729f5e9ea168e3226fa92a10b1702593b76034812e9f7b560d6447f9cd446bad231d7086af842129c6596306300094 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - checksum: 10/43abc8d017b754619aa189d05e2bdb54aaf44f03ec0439e89b3e7c180d538adb01ce9014a1689f632a7e8b17655c72bfac0a92268476eec708b41d3ba0a65296 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.2": - version: 7.24.5 - resolution: "@babel/highlight@npm:7.24.5" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.5" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/afde0403154ad69ecd58a98903058e776760444bf4d0363fb740a8596bc6278b72c5226637c4f6b3674d70acb1665207fe2fcecfe93a74f2f4ab033e89fd7e8c - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/parser@npm:7.24.5" - bin: - parser: ./bin/babel-parser.js - checksum: 10/f5ed1c5fd4b0045a364fb906f54fd30e2fff93a45069068b6d80d3ab2b64f5569c90fb41d39aff80fb7e925ca4d44917965a76776a3ca11924ec1fae3be5d1ea - languageName: node - linkType: hard - -"@babel/parser@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/parser@npm:7.24.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10/ef9ebce60e13db560ccc7af9235d460f6726bb7e23ae2d675098c1fc43d5249067be60d4118889dad33b1d4f85162cf66baf554719e1669f29bb20e71322568e + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.7" + checksum: 10/97593a0c9b3c5e2e7cf824e549b5f6fa6dc739593ad93d5bb36d06883d8124beac63ee2154c9a514dbee68a169d5683ab463e0ac6713ad92fb4854cea35ed4d4 languageName: node linkType: hard -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.5, @babel/parser@npm:^7.26.7": + version: 7.26.7 + resolution: "@babel/parser@npm:7.26.7" dependencies: - "@babel/types": "npm:^7.25.6" + "@babel/types": "npm:^7.26.7" bin: parser: ./bin/babel-parser.js - checksum: 10/830aab72116aa14eb8d61bfa8f9d69fc8f3a43d909ce993cb4350ae14d3af1a2f740a54410a22d821c48a253263643dfecbc094f9608e6a70ce9ff3c0bbfe91a + checksum: 10/3ccc384366ca9a9b49c54f5b24c9d8cff9a505f2fbdd1cfc04941c8e1897084cc32f100e77900c12bc14a176cf88daa3c155faad680d9a23491b997fd2a59ffc languageName: node linkType: hard @@ -554,7 +264,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -565,7 +275,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/c122aa577166c80ee67f75aebebeef4150a132c4d3109d25d7fc058bf802946f883e330f20b78c1d3e3a5ada631c8780c263d2d01b5dbaecc69efefeedd42916 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -587,29 +319,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/a93516ae5b34868ab892a95315027d4e5e38e8bd1cfca6158f2974b0901cbb32bbe64ea10ad5b25f919ddc40c6d8113c4823372909c9c9922170c12b0b1acecb - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.24.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.1" +"@babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/712f7e7918cb679f106769f57cfab0bc99b311032665c428b98f4c3e2e6d567601d45386a4f246df6a80d741e1f94192b3f008800d66c4f1daae3ad825c243f0 + checksum: 10/bb609d1ffb50b58f0c1bac8810d0e46a4f6c922aa171c458f3a19d66ee545d36e782d3bffbbc1fed0dc65a558bdce1caf5279316583c0fff5a2c1658982a8563 languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -631,7 +352,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -675,304 +396,210 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.8.3": +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + checksum: 10/b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/2518cc06323f5673c93142935879c112fea0ee836dfa9a9ec744fc972fdeaf22a06fe631c23817562aaaddadf64626a4fbba98c300b3e2c828f48f0f1cca0ce0 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.24.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.24.1" +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/bf4bd70788d5456b5f75572e47a2e31435c7c4e43609bd4dffd2cc0c7a6cf90aabcf6cd389e351854de9a64412a07d30effef5373251fe8f6a4c9db0c0163bda + checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.23.3": - version: 7.24.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.1" +"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helper-plugin-utils": "npm:^7.24.0" - "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/7326a62ed5f766f93ee75684868635b59884e2801533207ea11561c296de53037949fecad4055d828fa7ebeb6cc9e55908aa3e7c13f930ded3e62ad9f24680d7 + checksum: 10/0e9821e8ba7d660c36c919654e4144a70546942ae184e85b8102f2322451eae102cbfadbcadd52ce077a2b44b400ee52394c616feab7b5b9f791b910e933fd33 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7" +"@babel/plugin-transform-modules-commonjs@npm:^7.23.3, @babel/plugin-transform-modules-commonjs@npm:^7.25.9": + version: 7.26.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" dependencies: - "@babel/helper-module-transforms": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9bd10cd03cce138a644f4e671025058348d8ff364253122bed60f9a2a32759445b93e8a6501773491cb19906602b18fd26255df0caac425343a1584599b36b24 + checksum: 10/f817f02fa04d13f1578f3026239b57f1003bebcf9f9b8d854714bed76a0e4986c79bd6d2e0ac14282c5d309454a8dab683c179709ca753b0152a69c69f3a78e3 languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" +"@babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/f5d34903680ca358c5a3ccb83421df259e5142be95dde51dc4a62ec79fd6558599b3b92b4afd37329d2567a4ba4c338f1c817f8ce0c56ddf20cd3d051498649e + checksum: 10/dc7affde0ed98e40f629ee92a2fc44fbd8008aabda1ddb3f5bd2632699d3289b08dff65b26cf3b89dab46397ec440f453d19856bbb3a9a83df5b4ac6157c5c39 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/5a158803ad71ed7c434ad047755eb98feb2c428800163ff0be1351dc06ecdd19ab503cb6a1fda8708b05decde3a9297499eb0954317af79f191b4d45135af2a2 + checksum: 10/537d38369537f1eb56041c4b770bc0733fde1801a7f5ffef40a1217ea448f33ee2fa8e6098a58a82fd00e432c1b9426a66849496da419020c9eca3b1b1a23779 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.24.5": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.7" +"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/56115b4a6c006ce82846f1ab21e5ba713ee8f57a166c96c94fc632cdfbc8b9cebbf20b7cd9b8076439dabecdbf0f8ca4c2cb1bed1bf0b15cb44505a429f6a92f + checksum: 10/41c833cd7f91b1432710f91b1325706e57979b2e8da44e83d86312c78bbe96cd9ef778b4e79e4e17ab25fa32c72b909f2be7f28e876779ede28e27506c41f4ae languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.24.1": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.24.7" +"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/682e2ae15d788453d8ab34cf0dcc29c093faf7c7cf1d60110c43f33e6477f916cf301456b314fc496fadc07123f7978225f41ac286ed0bfbad9c8e76392fdb6d + checksum: 10/a3e0e5672e344e9d01fb20b504fe29a84918eaa70cec512c4d4b1b035f72803261257343d8e93673365b72c371f35cf34bb0d129720bf178a4c87812c8b9c662 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx@npm:7.24.7" +"@babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/422952e034aefdb837ebe6c2f1f5bb1e0dc4d5e515e9cc46fe752785c7039481fc7470af254e26e253f641f055240ac2968f0d25cc30ae6580c977142a7c471c + checksum: 10/eb179ecdf0ae19aed254105cf78fbac35f9983f51ed04b7b67c863a4820a70a879bd5da250ac518321f86df20eac010e53e3411c8750c386d51da30e4814bfb6 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/c5110fa6088be5c4ac6d0f716cd032d30a246f371948b2ef30beb9eac187550ccbf972aa02051e780321917e1d9d85325623f68742c91e0355d238a8f5422179 + checksum: 10/9995c0fc7c25d3aaaa0ce84233de02eab2564ea111d0813ec5baa538eb21520402879cc787ad1ad4c2061b99cebc3beb09910e64c9592e8ccb42ae62d9e4fd9a languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-typescript@npm:7.24.7" +"@babel/plugin-transform-typescript@npm:^7.25.9": + version: 7.26.7 + resolution: "@babel/plugin-transform-typescript@npm:7.26.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-typescript": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/6a4af5a96a90f08ea679829abc558b8478b8b31b40c84b887f2859110b75ab2c8c48a2cf80193621d988a6b064aefef2a74ea3ccc310166219f87959d06a3033 + checksum: 10/dff508b0467b693c2eca816f0a5b872fded69adf72df9a0bbd83078aa5228072378c37a039a4bdd0d2bc029fc2203a7a14406bd09392b546f9c31bcee9790c95 languageName: node linkType: hard -"@babel/preset-react@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/preset-react@npm:7.24.7" +"@babel/preset-react@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/preset-react@npm:7.26.3" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-transform-react-display-name": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx-development": "npm:^7.24.7" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/e861e6b923e8eacb01c2e931310b4a5b2ae2514a089a37390051700d1103ab87003f2abc0b389a12db7be24971dd8eaabee794b799d3e854cb0c22ba07a33100 + checksum: 10/88cb78c402b79f32389ee06451da51698d5b1da7641d9a47482883f537fe5441a138bd4c077d8533fd6d557406b08911c47b94402cea843db598e020bdd9a373 languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/preset-typescript@npm:7.24.7" +"@babel/preset-typescript@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/preset-typescript@npm:7.26.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7" - "@babel/plugin-transform-typescript": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/995e9783f8e474581e7533d6b10ec1fbea69528cc939ad8582b5937e13548e5215d25a8e2c845e7b351fdaa13139896b5e42ab3bde83918ea4e41773f10861ac + checksum: 10/81a60826160163a3daae017709f42147744757b725b50c9024ef3ee5a402ee45fd2e93eaecdaaa22c81be91f7940916249cfb7711366431cfcacc69c95878c03 languageName: node linkType: hard "@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": - version: 7.24.5 - resolution: "@babel/runtime@npm:7.24.5" + version: 7.26.7 + resolution: "@babel/runtime@npm:7.26.7" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/e0f4f4d4503f7338749d1dd92361ad132d683bde64e6b61d6c855e100dcd01592295fcfdcc960c946b85ef7908dc2f501080da58447c05812cf3cd80c599bb62 - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0, @babel/template@npm:^7.3.3": - version: 7.24.0 - resolution: "@babel/template@npm:7.24.0" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/parser": "npm:^7.24.0" - "@babel/types": "npm:^7.24.0" - checksum: 10/8c538338c7de8fac8ada691a5a812bdcbd60bd4a4eb5adae2cc9ee19773e8fb1a724312a00af9e1ce49056ffd3c3475e7287b5668cf6360bfb3f8ac827a06ffe - languageName: node - linkType: hard - -"@babel/template@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/template@npm:7.24.7" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/5975d404ef51cf379515eb0f80b115981d0b9dff5539e53a47516644abb8c83d7559f5b083eb1d4977b20d8359ebb2f911ccd4f729143f8958fdc465f976d843 + checksum: 10/c7a661a6836b332d9d2e047cba77ba1862c1e4f78cec7146db45808182ef7636d8a7170be9797e5d8fd513180bffb9fa16f6ca1c69341891efec56113cf22bfc languageName: node linkType: hard -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10/07ebecf6db8b28244b7397628e09c99e7a317b959b926d90455c7253c88df3677a5a32d1501d9749fe292a263ff51a4b6b5385bcabd5dadd3a48036f4d4949e0 + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e861180881507210150c1335ad94aff80fd9e9be6202e1efa752059c93224e2d5310186ddcdd4c0f0b0fc658ce48cb47823f15142b5c00c8456dde54f5de80b2 languageName: node linkType: hard -"@babel/traverse@npm:^7.23.5, @babel/traverse@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/traverse@npm:7.24.5" +"@babel/traverse@npm:^7.23.5, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.7": + version: 7.26.7 + resolution: "@babel/traverse@npm:7.26.7" dependencies: - "@babel/code-frame": "npm:^7.24.2" - "@babel/generator": "npm:^7.24.5" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.24.5" - "@babel/parser": "npm:^7.24.5" - "@babel/types": "npm:^7.24.5" + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.5" + "@babel/parser": "npm:^7.26.7" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/e237de56e0c30795293fdb6f2cb09a75e6230836e3dc67dc4fa21781eb4d5842996bf3af95bc57ac5c7e6e97d06446f14732d0952eb57d5d9643de7c4f95bee6 + checksum: 10/c821c9682fe0b9edf7f7cbe9cc3e0787ffee3f73b52c13b21b463f8979950a6433f5e7e482a74348d22c0b7a05180e6f72b23eb6732328b49c59fc6388ebf6e5 languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/traverse@npm:7.24.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.5, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.5, @babel/types@npm:^7.26.7, @babel/types@npm:^7.3.3": + version: 7.26.7 + resolution: "@babel/types@npm:7.26.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.24.7" - "@babel/helper-environment-visitor": "npm:^7.24.7" - "@babel/helper-function-name": "npm:^7.24.7" - "@babel/helper-hoist-variables": "npm:^7.24.7" - "@babel/helper-split-export-declaration": "npm:^7.24.7" - "@babel/parser": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/785cf26383a992740e492efba7016de964cd06c05c9d7146fa1b5ead409e054c444f50b36dc37856884a56e32cf9d3105ddf1543486b6df68300bffb117a245a - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.2": - version: 7.25.6 - resolution: "@babel/traverse@npm:7.25.6" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.6" - "@babel/parser": "npm:^7.25.6" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/de75a918299bc27a44ec973e3f2fa8c7902bbd67bd5d39a0be656f3c1127f33ebc79c12696fbc8170a0b0e1072a966d4a2126578d7ea2e241b0aeb5d16edc738 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.5, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": - version: 7.24.5 - resolution: "@babel/types@npm:7.24.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.1" - "@babel/helper-validator-identifier": "npm:^7.24.5" - to-fast-properties: "npm:^2.0.0" - checksum: 10/259e7512476ae64830e73f2addf143159232bcbf0eba6a6a27cab25a960cd353a11c826eb54185fdf7d8d9865922cbcd6522149e9ec55b967131193f9c9111a1 - languageName: node - linkType: hard - -"@babel/types@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/types@npm:7.24.7" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/ad3c8c0d6fb4acb0bb74bb5b4bb849b181bf6185677ef9c59c18856c81e43628d0858253cf232f0eca806f02e08eff85a1d3e636a3e94daea737597796b0b430 - languageName: node - linkType: hard - -"@babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/types@npm:7.25.6" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562 + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10/2264efd02cc261ca5d1c5bc94497c8995238f28afd2b7483b24ea64dd694cf46b00d51815bf0c87f0d0061ea221569c77893aeecb0d4b4bb254e9c2f938d7669 languageName: node linkType: hard @@ -983,40 +610,30 @@ __metadata: languageName: node linkType: hard -"@commitlint/cli@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/cli@npm:19.5.0" +"@commitlint/cli@npm:^19.6.1": + version: 19.6.1 + resolution: "@commitlint/cli@npm:19.6.1" dependencies: "@commitlint/format": "npm:^19.5.0" - "@commitlint/lint": "npm:^19.5.0" - "@commitlint/load": "npm:^19.5.0" + "@commitlint/lint": "npm:^19.6.0" + "@commitlint/load": "npm:^19.6.1" "@commitlint/read": "npm:^19.5.0" "@commitlint/types": "npm:^19.5.0" tinyexec: "npm:^0.3.0" yargs: "npm:^17.0.0" bin: commitlint: cli.js - checksum: 10/1d3384cc9823462da3a35308a145dc4fcf92025f7af976e1ceb9cbe9cbd7b7b83703fe0e9ca12fc7f4903ea2fe68c8c1492c18409ba301894c01cb2264a00795 + checksum: 10/b63b8a716d943419a0bb0542e752d380d62f2715266ae0bb53911f3fe749ae9c3bf0fd591abd87be6b863e522ca183c7bac6a82ef73255a5c5bbeceb620ecbb1 languageName: node linkType: hard -"@commitlint/config-conventional@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/config-conventional@npm:19.5.0" +"@commitlint/config-conventional@npm:^19.6.0": + version: 19.6.0 + resolution: "@commitlint/config-conventional@npm:19.6.0" dependencies: "@commitlint/types": "npm:^19.5.0" conventional-changelog-conventionalcommits: "npm:^7.0.2" - checksum: 10/5844fb51347677dd28f970a50528fbc44b9b415a8a5fd6fea6c7f6a2a11357956748eda9d1d6ae499430659b0aa78bfa7dcf8abf599951e7f34a581e60bf57da - languageName: node - linkType: hard - -"@commitlint/config-validator@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/config-validator@npm:19.0.3" - dependencies: - "@commitlint/types": "npm:^19.0.3" - ajv: "npm:^8.11.0" - checksum: 10/a1a9678e0994d87fa98f0aee1a877dfaf60640b657589260ec958898d51affabba73d6684edafa1cc979e4e94b51f14fbd9b605eae77c2838ee52bcbcc110bef + checksum: 10/f96f6706502edad60d275f62a4aac06993a5fd47c343ad6286d48f173941e4e0848dab6642559099cc6714b513197338ac24da4b07debead5371326eef87bcb8 languageName: node linkType: hard @@ -1044,13 +661,6 @@ __metadata: languageName: node linkType: hard -"@commitlint/execute-rule@npm:^19.0.0": - version: 19.0.0 - resolution: "@commitlint/execute-rule@npm:19.0.0" - checksum: 10/4c5cbf9ab0e2b85b00ceea84e5598b1b3cceaa20a655ee954c45259cca9efc80cf5cf7d9eec04715a100c2da282cbcf6aba960ad53a47178090c0513426ac236 - languageName: node - linkType: hard - "@commitlint/execute-rule@npm:^19.5.0": version: 19.5.0 resolution: "@commitlint/execute-rule@npm:19.5.0" @@ -1068,49 +678,31 @@ __metadata: languageName: node linkType: hard -"@commitlint/is-ignored@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/is-ignored@npm:19.5.0" +"@commitlint/is-ignored@npm:^19.6.0": + version: 19.6.0 + resolution: "@commitlint/is-ignored@npm:19.6.0" dependencies: "@commitlint/types": "npm:^19.5.0" semver: "npm:^7.6.0" - checksum: 10/1c7ee34686fd098587f9717763473477d49e847f470a317903f922d13091271d013a046f61b43b31b34eba4e4b0f76369b7427588269bbdc4c5f622d3ace2c95 + checksum: 10/07b41573c9247522eb96af118be97ae015f5d0a141ecf5e3c0f67372b0fb7ba57c98adc462c722b7a7f0dd18ddcbacd92b42228e0e62370d3db110b0a35f6120 languageName: node linkType: hard -"@commitlint/lint@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/lint@npm:19.5.0" +"@commitlint/lint@npm:^19.6.0": + version: 19.6.0 + resolution: "@commitlint/lint@npm:19.6.0" dependencies: - "@commitlint/is-ignored": "npm:^19.5.0" + "@commitlint/is-ignored": "npm:^19.6.0" "@commitlint/parse": "npm:^19.5.0" - "@commitlint/rules": "npm:^19.5.0" + "@commitlint/rules": "npm:^19.6.0" "@commitlint/types": "npm:^19.5.0" - checksum: 10/bba8cd17a90876b6b2cd2f869ee4d08cd3e5ad8a10f2c273d379d3b6602da30c46c2d9d0925710d7b9ebf180b3d1f02409adfc0f1a888cc566d88c9ee5862bdd + checksum: 10/f50721d8b02cea8cda9e67a57fb2c03377ae94ab708d47395a4e86f6f327d11db9dc84a1ecbcc3fae086f1e100400356826497a69a9d0caee6859238b32260dc languageName: node linkType: hard -"@commitlint/load@npm:>6.1.1": - version: 19.2.0 - resolution: "@commitlint/load@npm:19.2.0" - dependencies: - "@commitlint/config-validator": "npm:^19.0.3" - "@commitlint/execute-rule": "npm:^19.0.0" - "@commitlint/resolve-extends": "npm:^19.1.0" - "@commitlint/types": "npm:^19.0.3" - chalk: "npm:^5.3.0" - cosmiconfig: "npm:^9.0.0" - cosmiconfig-typescript-loader: "npm:^5.0.0" - lodash.isplainobject: "npm:^4.0.6" - lodash.merge: "npm:^4.6.2" - lodash.uniq: "npm:^4.5.0" - checksum: 10/5cd35a0a60064c70c06ab6bd8b1ae02cf6ecc1d0520b76c68cdc7c12094338f04c19e2df5d7ae30d681e858871c4f1963ae39e4969ed61139959cf4b300030fc - languageName: node - linkType: hard - -"@commitlint/load@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/load@npm:19.5.0" +"@commitlint/load@npm:>6.1.1, @commitlint/load@npm:^19.6.1": + version: 19.6.1 + resolution: "@commitlint/load@npm:19.6.1" dependencies: "@commitlint/config-validator": "npm:^19.5.0" "@commitlint/execute-rule": "npm:^19.5.0" @@ -1118,11 +710,11 @@ __metadata: "@commitlint/types": "npm:^19.5.0" chalk: "npm:^5.3.0" cosmiconfig: "npm:^9.0.0" - cosmiconfig-typescript-loader: "npm:^5.0.0" + cosmiconfig-typescript-loader: "npm:^6.1.0" lodash.isplainobject: "npm:^4.0.6" lodash.merge: "npm:^4.6.2" lodash.uniq: "npm:^4.5.0" - checksum: 10/87a9450c768632c09e9d98993752a5622aee698642eee5a9b31c3c48625455e043406b7ea6e02a8f41d86c524c9ecbdb9b823caf67da3048f0d96531177fda28 + checksum: 10/f340060751016de8e06f67137373f9ec51aff85ceb7ac8d5eec1bfb3693df38f7ad2c231fd1dd61acf58affb2f514761c12281328aacceaacef455d25d58c2ce languageName: node linkType: hard @@ -1157,20 +749,6 @@ __metadata: languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^19.1.0": - version: 19.1.0 - resolution: "@commitlint/resolve-extends@npm:19.1.0" - dependencies: - "@commitlint/config-validator": "npm:^19.0.3" - "@commitlint/types": "npm:^19.0.3" - global-directory: "npm:^4.0.1" - import-meta-resolve: "npm:^4.0.0" - lodash.mergewith: "npm:^4.6.2" - resolve-from: "npm:^5.0.0" - checksum: 10/453f8828b091886dc7cb4b13285bf3300be94266c3fc13453ab62fddc524a3969434dcebea3e4c4775621576fa25b41efbc62d773e3c44c1e87d12d7211166de - languageName: node - linkType: hard - "@commitlint/resolve-extends@npm:^19.5.0": version: 19.5.0 resolution: "@commitlint/resolve-extends@npm:19.5.0" @@ -1185,15 +763,15 @@ __metadata: languageName: node linkType: hard -"@commitlint/rules@npm:^19.5.0": - version: 19.5.0 - resolution: "@commitlint/rules@npm:19.5.0" +"@commitlint/rules@npm:^19.6.0": + version: 19.6.0 + resolution: "@commitlint/rules@npm:19.6.0" dependencies: "@commitlint/ensure": "npm:^19.5.0" "@commitlint/message": "npm:^19.5.0" "@commitlint/to-lines": "npm:^19.5.0" "@commitlint/types": "npm:^19.5.0" - checksum: 10/2c879d2cd50a3b4572cea41f044cc3091f0a11ef5ead0bb54bfa564ea637e0d93e08ae322ec4c99bb5b379b82835ace595d1c8dab6e35c1b68b63292160a61b3 + checksum: 10/d9493b5ed450306358197c504ff7bb8ca3ef41ef1067c15497fa30ac4dc3ace9dc8c970cd5d130a7ff0e686a9619a6122ab09b155bc9eacdf8e6a0096748b402 languageName: node linkType: hard @@ -1213,16 +791,6 @@ __metadata: languageName: node linkType: hard -"@commitlint/types@npm:^19.0.3": - version: 19.0.3 - resolution: "@commitlint/types@npm:19.0.3" - dependencies: - "@types/conventional-commits-parser": "npm:^5.0.0" - chalk: "npm:^5.3.0" - checksum: 10/44e67f4861f9b137f43a441f8ab255676b7a276c82ca46ba7846ca1057d170af92a87d3e2a1378713dc4e33a68c8af513683cb96dcd29544e48e2c825109ea6f - languageName: node - linkType: hard - "@commitlint/types@npm:^19.5.0": version: 19.5.0 resolution: "@commitlint/types@npm:19.5.0" @@ -1242,54 +810,100 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/accessibility@npm:^3.1.0": - version: 3.1.0 - resolution: "@dnd-kit/accessibility@npm:3.1.0" +"@csstools/color-helpers@npm:^5.0.1": + version: 5.0.1 + resolution: "@csstools/color-helpers@npm:5.0.1" + checksum: 10/4cb25b34997c9b0e9f401833e27942636494bc3c7fda5c6633026bc3fdfdda1c67be68ea048058bfba449a86ec22332e23b4ec5982452c50b67880c4cb13a660 + languageName: node + linkType: hard + +"@csstools/css-calc@npm:^2.1.1": + version: 2.1.1 + resolution: "@csstools/css-calc@npm:2.1.1" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/60e8808c261eeebb15517c0f368672494095bb10e90177dfc492f956fc432760d84b17dc19db739a2e23cac0013f4bcf37bb93947f9741b95b7227eeaced250b + languageName: node + linkType: hard + +"@csstools/css-color-parser@npm:^3.0.7": + version: 3.0.7 + resolution: "@csstools/css-color-parser@npm:3.0.7" + dependencies: + "@csstools/color-helpers": "npm:^5.0.1" + "@csstools/css-calc": "npm:^2.1.1" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/efceb60608f3fc2b6da44d5be7720a8b302e784f05c1c12f17a1da4b4b9893b2e20d0ea74ac2c2d6d5ca9b64ee046d05f803c7b78581fd5a3f85e78acfc5d98e + languageName: node + linkType: hard + +"@csstools/css-parser-algorithms@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/dfb6926218d9f8ba25d8b43ea46c03863c819481f8c55e4de4925780eaab9e6bcd6bead1d56b4ef82d09fcd9d69a7db2750fa9db08eece9470fd499dc76d0edb + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-tokenizer@npm:3.0.3" + checksum: 10/6baa3160e426e1f177b8f10d54ec7a4a596090f65a05f16d7e9e4da049962a404eabc5f885f4867093702c259cd4080ac92a438326e22dea015201b3e71f5bbb + languageName: node + linkType: hard + +"@dnd-kit/accessibility@npm:^3.1.1": + version: 3.1.1 + resolution: "@dnd-kit/accessibility@npm:3.1.1" dependencies: tslib: "npm:^2.0.0" peerDependencies: react: ">=16.8.0" - checksum: 10/750a0537877d5dde3753e9ef59d19628b553567e90fc3e3b14a79bded08f47f4a7161bc0d003d7cd6b3bd9e10aa233628dca07d2aa5a2120cac84555ba1653d8 + checksum: 10/961000456a36700a9cd13be51147a818bc100f7dfabb332b80438d02e06f3b556aa0ff46ddf13bdff3b70bc8f9b63dd5a392cc285597ab1f7026e672660c54b6 languageName: node linkType: hard -"@dnd-kit/core@npm:^6.1.0": - version: 6.1.0 - resolution: "@dnd-kit/core@npm:6.1.0" +"@dnd-kit/core@npm:^6.3.1": + version: 6.3.1 + resolution: "@dnd-kit/core@npm:6.3.1" dependencies: - "@dnd-kit/accessibility": "npm:^3.1.0" + "@dnd-kit/accessibility": "npm:^3.1.1" "@dnd-kit/utilities": "npm:^3.2.2" tslib: "npm:^2.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10/cf9e99763fbd9220cb6fdde2950c19fdf6248391234f5ee835601814124445fd8a6e4b3f5bc35543c802d359db8cc47f07d87046577adc41952ae981a03fbda0 + checksum: 10/a5ae6fa8404765712aa80e308f58cb79bac9a306c274ec8272c405c2a59dd277d24b966348fe8ca6340bb3f0d75f90b8a021fa781edcf65255114d3cf2bef891 languageName: node linkType: hard -"@dnd-kit/modifiers@npm:^7.0.0": - version: 7.0.0 - resolution: "@dnd-kit/modifiers@npm:7.0.0" +"@dnd-kit/modifiers@npm:^9.0.0": + version: 9.0.0 + resolution: "@dnd-kit/modifiers@npm:9.0.0" dependencies: "@dnd-kit/utilities": "npm:^3.2.2" tslib: "npm:^2.0.0" peerDependencies: - "@dnd-kit/core": ^6.1.0 + "@dnd-kit/core": ^6.3.0 react: ">=16.8.0" - checksum: 10/9ee0b7b86c23c15f6820d76ec398724597abc9d9e31cf58836e7f0b9935e33f9136a60ee9600eb27818447623f07786d4fed3f1d685d9cc6d860d8f6c5354ae3 + checksum: 10/2ae238a1b787029e95d92319d7e4a0e2ffba8fceed56c4b58dfee7ed6890df207bf89ce522d4126411051121954222bd8e1444fae321485b594ae518c7c4397d languageName: node linkType: hard -"@dnd-kit/sortable@npm:^8.0.0": - version: 8.0.0 - resolution: "@dnd-kit/sortable@npm:8.0.0" +"@dnd-kit/sortable@npm:^10.0.0": + version: 10.0.0 + resolution: "@dnd-kit/sortable@npm:10.0.0" dependencies: "@dnd-kit/utilities": "npm:^3.2.2" tslib: "npm:^2.0.0" peerDependencies: - "@dnd-kit/core": ^6.1.0 + "@dnd-kit/core": ^6.3.0 react: ">=16.8.0" - checksum: 10/e2e0d37ace13db2e6aceb65a803195ef29e1a33a37e7722a988d7a9c1aacce77472a93b2adcd8e6780ac98b3d5640c5481892f530177c2eb966df235726942ad + checksum: 10/bc61c25e76905204a53f91294b8116bf106fa27247eebca2c66478450b2051d7177115a384054e7e5639e6c4430083ade63056f79ee45f549da537cf05bc5288 languageName: node linkType: hard @@ -1304,381 +918,234 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/aix-ppc64@npm:0.20.2" +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-arm64@npm:0.20.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-arm@npm:0.20.2" +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-x64@npm:0.20.2" +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/darwin-arm64@npm:0.20.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/darwin-x64@npm:0.20.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/freebsd-arm64@npm:0.20.2" +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/freebsd-x64@npm:0.20.2" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-arm64@npm:0.20.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-arm@npm:0.20.2" +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-ia32@npm:0.20.2" +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-loong64@npm:0.20.2" +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-mips64el@npm:0.20.2" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-ppc64@npm:0.20.2" +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-riscv64@npm:0.20.2" +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-s390x@npm:0.20.2" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-x64@npm:0.20.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/netbsd-x64@npm:0.20.2" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/openbsd-x64@npm:0.20.2" - conditions: os=openbsd & cpu=x64 +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" + conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" - conditions: os=openbsd & cpu=x64 +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/sunos-x64@npm:0.20.2" - conditions: os=sunos & cpu=x64 +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" - conditions: os=sunos & cpu=x64 +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-arm64@npm:0.20.2" - conditions: os=win32 & cpu=arm64 +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" - conditions: os=win32 & cpu=arm64 +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-ia32@npm:0.20.2" - conditions: os=win32 & cpu=ia32 +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" - conditions: os=win32 & cpu=ia32 +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-x64@npm:0.20.2" - conditions: os=win32 & cpu=x64 +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" dependencies: - eslint-visitor-keys: "npm:^3.3.0" + eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/8d70bcdcd8cd279049183aca747d6c2ed7092a5cf0cf5916faac1ef37ffa74f0c245c2a3a3d3b9979d9dfdd4ca59257b4c5621db699d637b847a2c5e02f491c2 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.10.0": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 10/8c36169c815fc5d726078e8c71a5b592957ee60d08c6470f9ce0187c8046af1a00afbda0a065cc40ff18d5d83f82aed9793c6818f7304a74a7488dc9f3ecbd42 + checksum: 10/ae92a11412674329b4bd38422518601ec9ceae28e251104d1cad83715da9d38e321f68c817c39b64e66d0af7d98df6f9a10ad2dc638911254b47fb8932df00ef languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.11.0": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc languageName: node linkType: hard -"@eslint/compat@npm:^1.1.1": - version: 1.1.1 - resolution: "@eslint/compat@npm:1.1.1" - checksum: 10/9004697701e9e9a7749d9e37452ee965af3620af46796ac0ee196478bbda490c780d17686c2888353c2a12d764837fa71c027c3ca18b1c3af6136105caa93642 +"@eslint/compat@npm:^1.2.6": + version: 1.2.6 + resolution: "@eslint/compat@npm:1.2.6" + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10/0991007b3de0736e3c1a9af8fe8716e77663e2ea2e8fc495afca9a75d8fe1623f53555f9db653aed6f0ced0164a3cb5df88681a02f1234f7e0740d61c7cb13d6 languageName: node linkType: hard -"@eslint/config-array@npm:^0.18.0": - version: 0.18.0 - resolution: "@eslint/config-array@npm:0.18.0" +"@eslint/config-array@npm:^0.19.0": + version: 0.19.2 + resolution: "@eslint/config-array@npm:0.19.2" dependencies: - "@eslint/object-schema": "npm:^2.1.4" + "@eslint/object-schema": "npm:^2.1.6" debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" - checksum: 10/60ccad1eb4806710b085cd739568ec7afd289ee5af6ca0383f0876f9fe375559ef525f7b3f86bdb3f961493de952f2cf3ab4aa4a6ccaef0ae3cd688267cabcb3 + checksum: 10/a6809720908f7dd8536e1a73b2369adf802fe61335536ed0592bca9543c476956e0c0a20fef8001885da8026e2445dc9bf3e471bb80d32c3be7bcdabb7628fd1 languageName: node linkType: hard -"@eslint/core@npm:^0.6.0": - version: 0.6.0 - resolution: "@eslint/core@npm:0.6.0" - checksum: 10/ec5cce168c8773fbd60c5a505563c6cf24398b3e1fa352929878d63129e0dd5b134d3232be2f2c49e8124a965d03359b38962aa0dcf7dfaf50746059d2a2f798 +"@eslint/core@npm:^0.10.0": + version: 0.10.0 + resolution: "@eslint/core@npm:0.10.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/de41d7fa5dc468b70fb15c72829096939fc0217c41b8519af4620bc1089cb42539a15325c4c3ee3832facac1836c8c944c4a0c4d0cc8b33ffd8e95962278ae14 languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.1.0": - version: 3.1.0 - resolution: "@eslint/eslintrc@npm:3.1.0" +"@eslint/eslintrc@npm:^3.2.0": + version: 3.2.0 + resolution: "@eslint/eslintrc@npm:3.2.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -1689,82 +1156,112 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10/02bf892d1397e1029209dea685e9f4f87baf643315df2a632b5f121ec7e8548a3b34f428a007234fa82772218fa8a3ac2d10328637b9ce63b7f8344035b74db3 + checksum: 10/b32dd90ce7da68e89b88cd729db46b27aac79a2e6cb1fa75d25a6b766d586b443bfbf59622489efbd3c6f696f147b51111e81ec7cd23d70f215c5d474cad0261 languageName: node linkType: hard -"@eslint/js@npm:9.11.1": - version: 9.11.1 - resolution: "@eslint/js@npm:9.11.1" - checksum: 10/77b9c744bdf24e2ca1f99f671139767d6c31cb10d732cf22a85ef28f1f95f2a621cf204f572fd9fee67da6193ff2597a5d236cef3b557b07624230b622612339 +"@eslint/js@npm:9.19.0": + version: 9.19.0 + resolution: "@eslint/js@npm:9.19.0" + checksum: 10/d8133a83330676d5f0827713af2e9bbf35530631a93520fb59ead6b827a325c54fdd7ad99f2158f895fb393c47bbc55dfdaa945998a647f3b9230f1d5324a626 languageName: node linkType: hard -"@eslint/object-schema@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/object-schema@npm:2.1.4" - checksum: 10/221e8d9f281c605948cd6e030874aacce83fe097f8f9c1964787037bccf08e82b7aa9eff1850a30fffac43f1d76555727ec22a2af479d91e268e89d1e035131e +"@eslint/json@npm:^0.10.0": + version: 0.10.0 + resolution: "@eslint/json@npm:0.10.0" + dependencies: + "@eslint/core": "npm:^0.10.0" + "@eslint/plugin-kit": "npm:^0.2.5" + "@humanwhocodes/momoa": "npm:^3.3.4" + natural-compare: "npm:^1.4.0" + checksum: 10/663db57753902dde9a8aa6b167b33a2103fe582ae85c577dadf9734417f608ef520633263160189a7b8117ed4fb019671de20725d91d7e3c1d1e0fcc23a80975 languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.2.0": - version: 0.2.0 - resolution: "@eslint/plugin-kit@npm:0.2.0" +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10/266085c8d3fa6cd99457fb6350dffb8ee39db9c6baf28dc2b86576657373c92a568aec4bae7d142978e798b74c271696672e103202d47a0c148da39154351ed6 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.5": + version: 0.2.5 + resolution: "@eslint/plugin-kit@npm:0.2.5" dependencies: + "@eslint/core": "npm:^0.10.0" levn: "npm:^0.4.1" - checksum: 10/ebb363174397341dea47dc35fc206e24328083e4f0fa1c539687dbb7f94bef77e43faa12867d032e6eea5ac980ea8fbb6b1d844186e422d327c04088041b99f3 + checksum: 10/82d0142bc7054587bde4f75c2c517f477df7c320e4bdb47a4d5f766899a313ce65e9ce5d59428178d0be473a95292065053f69637042546b811ad89079781cbc languageName: node linkType: hard -"@floating-ui/core@npm:^1.0.0": - version: 1.6.1 - resolution: "@floating-ui/core@npm:1.6.1" +"@floating-ui/core@npm:^1.6.0": + version: 1.6.9 + resolution: "@floating-ui/core@npm:1.6.9" dependencies: - "@floating-ui/utils": "npm:^0.2.0" - checksum: 10/5d3cbd9963f74dc74e0b78896314850b552b48dc58b0f36ee752d603643615851c437cb25919aa7bdbcfaab563337037282d4b3006ae02f23d7c3f684309e00d + "@floating-ui/utils": "npm:^0.2.9" + checksum: 10/656fcd383da17fffca2efa0635cbe3c0b835c3312949e30bd19d05bf42479f2ac22aaf336a6a31cb160621fc6f35cfc9e115e76c5cf48ba96e33474d123ced22 languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.0": - version: 1.6.5 - resolution: "@floating-ui/dom@npm:1.6.5" + version: 1.6.13 + resolution: "@floating-ui/dom@npm:1.6.13" dependencies: - "@floating-ui/core": "npm:^1.0.0" - "@floating-ui/utils": "npm:^0.2.0" - checksum: 10/d421e7f239e9af5a2a4c7a560c29b8ce1f29398c411c8e3bd0c33a2ce800e13a378749a1606e4f6b460830f4007c459792534821013262d24d1385476b1ba48d + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.9" + checksum: 10/4bb732baf3270007741bcdc91be1de767b2bb5d8b891eb838e5f1e7c4cccad998643dbdd4e8b8cec4c5d12c9898f80febc68e9793dd6e26a445283c4fb1b6a78 languageName: node linkType: hard -"@floating-ui/react-dom@npm:^2.0.0": - version: 2.0.9 - resolution: "@floating-ui/react-dom@npm:2.0.9" +"@floating-ui/react-dom@npm:^2.1.2": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" dependencies: "@floating-ui/dom": "npm:^1.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10/c38982f2c904fd321d049bb64e0a3d52b2be5307ae11b18845457d1ac1a775657d16e14e83866ad244a2011876b3190cf4a96972c9bbd0be1e47f9830c2cd7a4 + checksum: 10/2a67dc8499674e42ff32c7246bded185bb0fdd492150067caf9568569557ac4756a67787421d8604b0f241e5337de10762aee270d9aeef106d078a0ff13596c4 languageName: node linkType: hard -"@floating-ui/react@npm:^0.26.9": - version: 0.26.13 - resolution: "@floating-ui/react@npm:0.26.13" +"@floating-ui/react@npm:^0.26.28": + version: 0.26.28 + resolution: "@floating-ui/react@npm:0.26.28" dependencies: - "@floating-ui/react-dom": "npm:^2.0.0" - "@floating-ui/utils": "npm:^0.2.0" + "@floating-ui/react-dom": "npm:^2.1.2" + "@floating-ui/utils": "npm:^0.2.8" tabbable: "npm:^6.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10/f3314c3efd73d42e6a749f31f3d8deffc9b3738c5ea516cc215c0d77ead32b52bfddcc47f17703acad9794bfec090e5d65154111735fcb45c27ec6aca0b5e119 + checksum: 10/7f8e6b27db48b68ca94756687af21857be04e7360ac922d7c8e22411f2895df6384af7bd40f4b48663d3cc5809bb5c6574cd9c9ea15543ec747b9a8e1c8c3008 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.8, @floating-ui/utils@npm:^0.2.9": + version: 0.2.9 + resolution: "@floating-ui/utils@npm:0.2.9" + checksum: 10/0ca786347db3dd8d9034b86d1449fabb96642788e5900cc5f2aee433cd7b243efbcd7a165bead50b004ee3f20a90ddebb6a35296fc41d43cfd361b6f01b69ffb languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.0": - version: 0.2.2 - resolution: "@floating-ui/utils@npm:0.2.2" - checksum: 10/28d900d2f0876b40c7090f55724700eeac608862e59110b7b14731223218cf7ce125b2091f34103edf4b0f779166151bbca21256b856236235a2be996548ed38 +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/6d43c6727463772d05610aa05c83dab2bfbe78291022ee7a92cb50999910b8c720c76cc312822e2dea2b497aa1b3fef5fe9f68803fc45c9d4ed105874a65e339 languageName: node linkType: hard @@ -1775,58 +1272,47 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/momoa@npm:^3.3.4": + version: 3.3.6 + resolution: "@humanwhocodes/momoa@npm:3.3.6" + checksum: 10/6135f839f6647888fa1c7b8d18f85abd050e260c12af84541da41ff75e43b1781027e84e9f99f3f50293e1d7420ff78437d85620a35b5c31424faba20366c223 + languageName: node + linkType: hard + "@humanwhocodes/retry@npm:^0.3.0": - version: 0.3.0 - resolution: "@humanwhocodes/retry@npm:0.3.0" - checksum: 10/e574bab58680867414e225c9002e9a97eb396f85871c180fbb1a9bcdf9ded4b4de0b327f7d0c43b775873362b7c92956d4b322e8bc4b90be56077524341f04b2 + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f languageName: node linkType: hard -"@inertiajs/core@npm:1.0.16": - version: 1.0.16 - resolution: "@inertiajs/core@npm:1.0.16" - dependencies: - axios: "npm:^1.6.0" - deepmerge: "npm:^4.0.0" - nprogress: "npm:^0.2.0" - qs: "npm:^6.9.0" - checksum: 10/bd96ef2e8bcf507250a85341fbb3a7de7cb72157ccc44c146ab7cbcef587d3ca83bfc6819028bd5223d1fb51f43f80e98cd11aff60ffd20db91a79bd6f40416b +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: 10/39fafc7319e88f61befebd5e1b4f0136534ea6a9bd10d74366698187bd63544210ec5d79a87ed4d91297f1cc64c4c53d45fb0077a2abfdce212cf0d3862d5f04 languageName: node linkType: hard -"@inertiajs/core@npm:1.2.0, @inertiajs/core@npm:^1.2.0": - version: 1.2.0 - resolution: "@inertiajs/core@npm:1.2.0" +"@inertiajs/core@npm:2.0.3, @inertiajs/core@npm:^2.0.3": + version: 2.0.3 + resolution: "@inertiajs/core@npm:2.0.3" dependencies: axios: "npm:^1.6.0" deepmerge: "npm:^4.0.0" - nprogress: "npm:^0.2.0" qs: "npm:^6.9.0" - checksum: 10/9c11e7a9ccf625be6123fb61c506e8601bf7964ce4dd1119cf043cead4846f69b1872a68914a2a806850658c2aa1631a79463d914c5384722126262ef2e78818 - languageName: node - linkType: hard - -"@inertiajs/react@npm:^1.0.16": - version: 1.0.16 - resolution: "@inertiajs/react@npm:1.0.16" - dependencies: - "@inertiajs/core": "npm:1.0.16" - lodash.isequal: "npm:^4.5.0" - peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - checksum: 10/3a3d5b6a03452ba6ddd82d055aa6932dcbd76507b99d0b63907538b0262429fba67b5a7e27cb37205f06315eec65840d9ebe374e791fb2388dcab43012063966 + checksum: 10/5d6b1d97ac4d478e6f5487d987736ab8a958e1125974db05a289c1c7920a07eae4f20a42e0122a47fd413364054b6c3c3f09bc63bc48086b2a2646d66cbf0d2a languageName: node linkType: hard -"@inertiajs/react@npm:^1.2.0": - version: 1.2.0 - resolution: "@inertiajs/react@npm:1.2.0" +"@inertiajs/react@npm:^2.0.3": + version: 2.0.3 + resolution: "@inertiajs/react@npm:2.0.3" dependencies: - "@inertiajs/core": "npm:1.2.0" + "@inertiajs/core": "npm:2.0.3" lodash.isequal: "npm:^4.5.0" peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - checksum: 10/6ac6a96df302d0bb7866d988fa1d8c55e94e1c3ecd9cd7c44f307d4d9f3474af5a5452151582dc1806befb0c23498e5e35a74d211a7cab7b4ceeb4a60b4384a7 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/72b16730cbe5bf5dceaeee0cb90a8eaee0226e1eb74c44728e9e24ea01cbd4484f898a0e244c353dc594ca39ec0ee2c6c0aa348056e8602490857d5154395943 languageName: node linkType: hard @@ -1844,6 +1330,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10/4412e9e6713c89c1e66d80bb0bb5a2a93192f10477623a27d08f228ba0316bb880affabc5bfe7f838f58a34d26c2c190da726e576cdfc18c49a72e89adabdcf5 + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -2095,13 +1590,13 @@ __metadata: linkType: hard "@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: "@jridgewell/set-array": "npm:^1.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/81587b3c4dd8e6c60252122937cea0c637486311f4ed208b52b62aae2e7a87598f63ec330e6cd0984af494bfb16d3f0d60d3b21d7e5b4aedd2602ff3fe9d32e2 + checksum: 10/9d3a56ab3612ab9b85d38b2a93b87f3324f11c5130859957f6500e4ac8ce35f299d5ccc3ecd1ae87597601ecf83cee29e9afd04c18777c24011073992ff946df languageName: node linkType: hard @@ -2129,14 +1624,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd @@ -2153,7 +1641,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2172,145 +1660,145 @@ __metadata: languageName: node linkType: hard -"@mantine/code-highlight@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/code-highlight@npm:7.13.0" +"@mantine/code-highlight@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/code-highlight@npm:7.16.2" dependencies: clsx: "npm:^2.1.1" - highlight.js: "npm:^11.9.0" + highlight.js: "npm:^11.10.0" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/9030d43c2ec953d794c42d8cd764bae97afa1cd542f0f1d862d0b2e043f20f8e4b67484888d30bd2999afc9e2891fc33cc230d684a736bd42649a116b2803f76 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/696cef64fe1fcd149dac785647d5199946acbfda254491f76f448ce76c38520645af81b432687994d14d4baecab2d4ece6e06bd2276bb4b34c95ce9aa3182485 languageName: node linkType: hard -"@mantine/core@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/core@npm:7.13.0" +"@mantine/core@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/core@npm:7.16.2" dependencies: - "@floating-ui/react": "npm:^0.26.9" + "@floating-ui/react": "npm:^0.26.28" clsx: "npm:^2.1.1" - react-number-format: "npm:^5.3.1" - react-remove-scroll: "npm:^2.5.7" - react-textarea-autosize: "npm:8.5.3" - type-fest: "npm:^4.12.0" + react-number-format: "npm:^5.4.3" + react-remove-scroll: "npm:^2.6.2" + react-textarea-autosize: "npm:8.5.6" + type-fest: "npm:^4.27.0" peerDependencies: - "@mantine/hooks": 7.13.0 - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/e46d3631321a40996849a08300413d14567cbfb28a398d9fd27894a9d252cc3ea2d551061a53cdc71018d5e1f8708278a953bc5918796f5a1df5a4878fee028c + "@mantine/hooks": 7.16.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/9a1a42d1e912963f1820e41dd541058fb1daf63a4c016ab9693c99e4fdf17f5196ab036e59b92d6fa8dee836a2725bf24e946547efc0363a521b1c2616617aed languageName: node linkType: hard -"@mantine/dates@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/dates@npm:7.13.0" +"@mantine/dates@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/dates@npm:7.16.2" dependencies: clsx: "npm:^2.1.1" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 dayjs: ">=1.0.0" - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/abb7397557cd13096a14c23da0c74246854a417a50bc8c8a3991b948e2b65b9c9b73ee09134c72f02caf969997872073c44734ea990d410265aa516d2a94f188 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/ca527483f23979c4b73f51f65876c8782323f3de42f59e03102409c7d45ad863f22506d08ab3473e5e0a7ab6f7a3fac6bbaef6bc63ea2cdfa8869ddabecc7dee languageName: node linkType: hard -"@mantine/dropzone@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/dropzone@npm:7.13.0" +"@mantine/dropzone@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/dropzone@npm:7.16.2" dependencies: - react-dropzone-esm: "npm:15.0.1" + react-dropzone-esm: "npm:15.2.0" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/cc187325deb9775142fcab9908557dd52409c0097ec83ec60d5674f93284e2520227ad5f0ecc15f7303dd19ad497f1c3bb94cf972c400642578b508f6f32dec7 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/a0b294fecfb007f453b7811b14cded2070bb0a299d0ccec73b6247e2f8c0f1f9c9a7c7847b0b194b7b0551e206df72675ee59618d0852081b3bf2ae0cfa39c21 languageName: node linkType: hard -"@mantine/form@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/form@npm:7.13.0" +"@mantine/form@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/form@npm:7.16.2" dependencies: fast-deep-equal: "npm:^3.1.3" klona: "npm:^2.0.6" peerDependencies: - react: ^18.2.0 - checksum: 10/c69c00a5ab18997bd66b12e80a36ea76c26a00f72e7ff9d4754513e3c5965b67d5b08d8fa4638c222efa78921c76e9882b6424b1b28c632a3ffef1bb11969251 + react: ^18.x || ^19.x + checksum: 10/92d809f727e497434bc0df9364fd6b864c68729d4f123aff4d748c2c464504e3c622ea18091b4b424966512dd36feab7e11462db53d49919511a5a3158dd2ef2 languageName: node linkType: hard -"@mantine/hooks@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/hooks@npm:7.13.0" +"@mantine/hooks@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/hooks@npm:7.16.2" peerDependencies: - react: ^18.2.0 - checksum: 10/d7fff628c6ed4dd3a69f0acd3b592496d56c788120d907534c90e009032d54667d19703e0d955437c83b0910ae33376f460beb6b2130fa82aefaa6a1b289f41a + react: ^18.x || ^19.x + checksum: 10/6dd902ebf6e7ff387fdab29972ce943920aa0536bb1d85c66600789944d5407094efca5a33fb984878fd4f9240ddc64c6a2aa99f915b2fa958ed9c75c732cbde languageName: node linkType: hard -"@mantine/modals@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/modals@npm:7.13.0" +"@mantine/modals@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/modals@npm:7.16.2" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/162e5528f0c2b8dd0cb79116f50c8c536017c6a6254fac5c9986c1a7d31243c83139c83a5c80062b3d354ff9af955f1baf4107d25bcfa5d0b170f73b0acdab86 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/0bb48fc5a569dfdbf7d86667920e8341268f0757da405703ea1d98e1bcc7361fb02e054fb00645eeab83b59b8d2e32b944db1568ad98df0cb8949152e6c04a06 languageName: node linkType: hard -"@mantine/notifications@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/notifications@npm:7.13.0" +"@mantine/notifications@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/notifications@npm:7.16.2" dependencies: - "@mantine/store": "npm:7.13.0" + "@mantine/store": "npm:7.16.2" react-transition-group: "npm:4.4.5" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/afecdc0f78bdf99e29b6a5d7548d5a127b5288df97b89d9f9629dec267c7d645ecc24b87525362b58bfdd2ef4645ab23cd5dd00aaf5a87e2653b669a37cff778 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/8731222a0d61e79d2e84b30ee78c66fd6749c0abca397fd2b87088e466524b7f59d93faa092674760bb3135f855e7ea65d6815b0a95a15ffc4d87b4f9aed3d86 languageName: node linkType: hard -"@mantine/store@npm:7.13.0": - version: 7.13.0 - resolution: "@mantine/store@npm:7.13.0" +"@mantine/store@npm:7.16.2": + version: 7.16.2 + resolution: "@mantine/store@npm:7.16.2" peerDependencies: - react: ^18.2.0 - checksum: 10/edc6693b3899c5bfee652517b945326c3694eba20fc8cb1ccfb4c6d75365fe6fa38e4d667054dbda375d9a2b6f863bf47090a1147fc962534423f3539de41738 + react: ^18.x || ^19.x + checksum: 10/96dee6b28a69d0fabe0ac03dac41c1f69a498910efcc3988e3b8b700c59af497538088ed6f9292b56a2118a41853f080e9bbd6e46de90d6fde5dec9f2d6fc4eb languageName: node linkType: hard -"@mantine/tiptap@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/tiptap@npm:7.13.0" +"@mantine/tiptap@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/tiptap@npm:7.16.2" peerDependencies: - "@mantine/core": 7.13.0 - "@mantine/hooks": 7.13.0 + "@mantine/core": 7.16.2 + "@mantine/hooks": 7.16.2 "@tiptap/extension-link": ">=2.1.12" "@tiptap/react": ">=2.1.12" - react: ^18.2.0 - react-dom: ^18.2.0 - checksum: 10/8e3ffc5e23c19ae82e77c94b05cf62e57a813ab7fe5a87a848172ed5cec1b309c80c740e2d8e865cb1d4c97d33a09c14986b04e78d006610190dd6e76d3b0eaf + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + checksum: 10/ecfcee112bffa07cfc5ae78ac4b4c88f19301c74baa43ea05bc7e6958af303ed447a7ce729c723459e1d67f7bbe33fce5d84cc266ce2773d73aa6b68bf057f0a languageName: node linkType: hard -"@mantine/vanilla-extract@npm:^7.13.0": - version: 7.13.0 - resolution: "@mantine/vanilla-extract@npm:7.13.0" +"@mantine/vanilla-extract@npm:^7.16.2": + version: 7.16.2 + resolution: "@mantine/vanilla-extract@npm:7.16.2" peerDependencies: - "@mantine/core": 7.13.0 - checksum: 10/522b5fa707c7d5518f0cb8fcde62a7b9832b873848cb7fb324325a805723e278356533ba9e4e3d1aac8d317f00b61ad731e390a0e67d65fcf229992563d27b5c + "@mantine/core": 7.16.2 + checksum: 10/cbbe672b3b746e6bc8005de958eefa9e0b3b32fab468c11206644871be54fb06eca56ed2a725c343a9fa4f54bef4f89263f59783d93c3275817ba4a32d5f4d43 languageName: node linkType: hard @@ -2331,7 +1819,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -2348,25 +1836,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" socks-proxy-agent: "npm:^8.0.3" - checksum: 10/96fc0036b101bae5032dc2a4cd832efb815ce9b33f9ee2f29909ee49d96a0026b3565f73c507a69eb8603f5cb32e0ae45a70cab1e2655990a4e06ae99f7f572a + checksum: 10/775c9a7eb1f88c195dfb3bce70c31d0fe2a12b28b754e25c08a3edb4bc4816bfedb7ac64ef1e730579d078ca19dacf11630e99f8f3c3e0fd7b23caa5fd6d30a6 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: 10/f3a7ab3a31de65e42aeb6ed03ed035ef123d2de7af4deb9d4a003d27acc8618b57d9fb9d259fe6c28ca538032a028f37337264388ba27d26d37fff7dde22476e + checksum: 10/405c4490e1ff11cf299775449a3c254a366a4b1ffc79d87159b0ee7d5558ac9f6a2f8c0735fd6ff3873cef014cb1a44a5f9127cb6a1b2dbc408718cca9365b5a languageName: node linkType: hard @@ -2391,226 +1879,135 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.17.2" +"@rollup/rollup-android-arm-eabi@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.32.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-android-arm64@npm:4.17.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-android-arm64@npm:4.22.5" +"@rollup/rollup-android-arm64@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-android-arm64@npm:4.32.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-darwin-arm64@npm:4.17.2" +"@rollup/rollup-darwin-arm64@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.32.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-x64@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-darwin-x64@npm:4.17.2" +"@rollup/rollup-darwin-x64@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.32.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.5" - conditions: os=darwin & cpu=x64 +"@rollup/rollup-freebsd-arm64@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.32.1" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.17.2" - conditions: os=linux & cpu=arm & libc=glibc +"@rollup/rollup-freebsd-x64@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.32.1" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.32.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.17.2" +"@rollup/rollup-linux-arm-musleabihf@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.32.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.5" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.17.2" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.5" +"@rollup/rollup-linux-arm64-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.32.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.17.2" +"@rollup/rollup-linux-arm64-musl@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.32.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.5" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.17.2" - conditions: os=linux & cpu=ppc64 & libc=glibc +"@rollup/rollup-linux-loongarch64-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.32.1" + conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.32.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.17.2" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.5" +"@rollup/rollup-linux-riscv64-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.32.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.17.2" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-s390x-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.5" +"@rollup/rollup-linux-s390x-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.32.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.17.2" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.5" +"@rollup/rollup-linux-x64-gnu@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.32.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.17.2" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.5" +"@rollup/rollup-linux-x64-musl@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.32.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.17.2" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-arm64-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.5" +"@rollup/rollup-win32-arm64-msvc@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.32.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.17.2" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.5" +"@rollup/rollup-win32-ia32-msvc@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.32.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.17.2": - version: 4.17.2 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.17.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.5" +"@rollup/rollup-win32-x64-msvc@npm:4.32.1": + version: 4.32.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.32.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2647,93 +2044,93 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.0.1": - version: 0.0.1 - resolution: "@storybook/csf@npm:0.0.1" +"@storybook/csf@npm:^0.1.11": + version: 0.1.13 + resolution: "@storybook/csf@npm:0.1.13" dependencies: - lodash: "npm:^4.17.15" - checksum: 10/f6bb019bccd8abc14e45a85258158b7bd8cc525887ac8dc9151ed8c4908be3b5f5523da8a7a9b96ff11b13b6c1744e1a0e070560d63d836b950f595f9a5719d4 + type-fest: "npm:^2.19.0" + checksum: 10/8a590703c44180798869fd12c1f314cb96de18349415a33bcfe30ef6af11fdc1cdb755ea620dedfd5eb7666cf05af5647b77fe28b63000aa52b53b0dc3c77bb5 languageName: node linkType: hard -"@stylistic/eslint-plugin@npm:^2.8.0": - version: 2.8.0 - resolution: "@stylistic/eslint-plugin@npm:2.8.0" +"@stylistic/eslint-plugin@npm:^3.0.1": + version: 3.0.1 + resolution: "@stylistic/eslint-plugin@npm:3.0.1" dependencies: - "@typescript-eslint/utils": "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.0.0" - espree: "npm:^10.1.0" + "@typescript-eslint/utils": "npm:^8.13.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" estraverse: "npm:^5.3.0" picomatch: "npm:^4.0.2" peerDependencies: eslint: ">=8.40.0" - checksum: 10/f28fb30f78fba601ae0a91957ae39b405f56a7d535da9c19a99ac28b80cf9fb915fe0c3cf5dd58e2c4ccae50c264d15459df33aa403891cce73eb609866b97c6 + checksum: 10/83fca65d4f96077e32913cdd0251deb201f34c425d3d63587375bb6551881275aef76f56bb4ab7a67128d12528f308799799995f34eed24e8bac1d03bf54a587 languageName: node linkType: hard -"@tabler/icons-react@npm:^3.18.0": - version: 3.18.0 - resolution: "@tabler/icons-react@npm:3.18.0" +"@tabler/icons-react@npm:^3.29.0": + version: 3.29.0 + resolution: "@tabler/icons-react@npm:3.29.0" dependencies: - "@tabler/icons": "npm:3.18.0" + "@tabler/icons": "npm:3.29.0" peerDependencies: react: ">= 16" - checksum: 10/32aedaaca673851a2fd50ca29188ff7d217fc43fa63fd932bc55abdc0d0768a029c8e45c4f3bd2ea5150f193e66d1a6ac986053e73ed82e1ab1fdd8c6d040b94 + checksum: 10/4c25ba0334812368d3925cd80dc699af1e746f13c80cbb47d0d1a6763b75c025287c6799964f765ba73328a2ff0254a8bebd251bf53b010c6050ca5eb09ad3a9 languageName: node linkType: hard -"@tabler/icons@npm:3.18.0": - version: 3.18.0 - resolution: "@tabler/icons@npm:3.18.0" - checksum: 10/e8306eb52b0c5927eb892d548e47e1176ea980f04c5fa6b26081ab8574a8b4db10ab4d22602e890823008bb3e75d2c79d6377e9909f270facc65a00feb5e9b68 +"@tabler/icons@npm:3.29.0": + version: 3.29.0 + resolution: "@tabler/icons@npm:3.29.0" + checksum: 10/738b532aa7ea0d8ea6b50b3aad33d43edcbc801484f5c5bf23510176f28cb5193a414c1a8979c528531f4076ae5b620b0dcff6a404665b2563c42b7d418aaad0 languageName: node linkType: hard -"@tanstack/eslint-plugin-query@npm:^5.58.1": - version: 5.58.1 - resolution: "@tanstack/eslint-plugin-query@npm:5.58.1" +"@tanstack/eslint-plugin-query@npm:^5.66.0": + version: 5.66.0 + resolution: "@tanstack/eslint-plugin-query@npm:5.66.0" dependencies: - "@typescript-eslint/utils": "npm:^8.3.0" + "@typescript-eslint/utils": "npm:^8.18.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10/5b36fb80c673bf76378773b407f01063f570857e116ca88258b9b837c5b00c5db4c7c926d960939779548dc6d83081a349f39e7ee5a85d0af5d4138a07c49c3b + checksum: 10/2fa4acd1835aab1bbc34901d681a85fb9ada092f19f41809fb07332697aa1be4b33493402ae9bebc5538acda5876bafc6b45ed5bc00b81cf8a3deb2fe4cbaf8c languageName: node linkType: hard -"@tanstack/query-core@npm:5.56.2": - version: 5.56.2 - resolution: "@tanstack/query-core@npm:5.56.2" - checksum: 10/b7600ee71c46c756edbfb0b7733c3df10c16d57b639bf6bd43b81cbdfd7678e01b425b02bd7a08764a2610af10a27f48a4380e3504a29356781bed1d50a38341 +"@tanstack/query-core@npm:5.66.0": + version: 5.66.0 + resolution: "@tanstack/query-core@npm:5.66.0" + checksum: 10/ba8623c0272e36d3ce616afa024d43e07e6b69170219b32eb4f60156fee9ac4ffa74d2fbb999739b6dea757b75966e76129271f4224f06c59deee24a72944da4 languageName: node linkType: hard -"@tanstack/query-devtools@npm:5.58.0": - version: 5.58.0 - resolution: "@tanstack/query-devtools@npm:5.58.0" - checksum: 10/ca16c47c943ea392dfddc301f7e09ecdb0c8b905fb684b8f26b908a244e2e897679efb0ead5fa8e728711017341fdd91d8c51ebb19f746819e26ade5549f539e +"@tanstack/query-devtools@npm:5.65.0": + version: 5.65.0 + resolution: "@tanstack/query-devtools@npm:5.65.0" + checksum: 10/029f4caca347cc9194a594b17084af8448da9a218dbd22340c3a9ae67f1d0deef9e1074864558975c2192afeca3b4a71b6190ee735d05c6fff47014a71560718 languageName: node linkType: hard -"@tanstack/react-query-devtools@npm:^5.58.0": - version: 5.58.0 - resolution: "@tanstack/react-query-devtools@npm:5.58.0" +"@tanstack/react-query-devtools@npm:^5.66.0": + version: 5.66.0 + resolution: "@tanstack/react-query-devtools@npm:5.66.0" dependencies: - "@tanstack/query-devtools": "npm:5.58.0" + "@tanstack/query-devtools": "npm:5.65.0" peerDependencies: - "@tanstack/react-query": ^5.56.2 + "@tanstack/react-query": ^5.66.0 react: ^18 || ^19 - checksum: 10/8337ee516c7ec1c9ef4f25fad98e2a689074ad1151988e8ffa0daff543ecc032577707168624b16a6fe8af4f3bde187c154783b7a3dbb3c8bc4764523a5aa1af + checksum: 10/4a2381a80de448a049e6fceedd1d9e4c810c8f85586cb4e2f9a23dc588697fc7295f106567ae4a5722027cf494593d8ce3fa326821b429c472caa21313c8b8cc languageName: node linkType: hard -"@tanstack/react-query@npm:^5.56.2": - version: 5.56.2 - resolution: "@tanstack/react-query@npm:5.56.2" +"@tanstack/react-query@npm:^5.66.0": + version: 5.66.0 + resolution: "@tanstack/react-query@npm:5.66.0" dependencies: - "@tanstack/query-core": "npm:5.56.2" + "@tanstack/query-core": "npm:5.66.0" peerDependencies: react: ^18 || ^19 - checksum: 10/fddf62e987b4f11a31fa136c5ddc203fdec642e7c35c94e5bd1132eb94c51e7d0d8eeb26f2fec9aa330929e596a4b1e340f539be26435b8858868d12d6b1578a + checksum: 10/482decc02664e756c66c9ff46279b5eb3f0fb29fcdcb51b96319e8487a2b2e8b151319d6a5d9ef1180523a1792d6449cec2e9bfa87f37a4f755fc9d95534585d languageName: node linkType: hard @@ -2753,9 +2150,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.5.0": - version: 6.5.0 - resolution: "@testing-library/jest-dom@npm:6.5.0" +"@testing-library/jest-dom@npm:^6.6.3": + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" dependencies: "@adobe/css-tools": "npm:^4.4.0" aria-query: "npm:^5.0.0" @@ -2764,365 +2161,375 @@ __metadata: dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.21" redent: "npm:^3.0.0" - checksum: 10/3d2080888af5fd7306f57448beb5a23f55d965e265b5e53394fffc112dfb0678d616a5274ff0200c46c7618f293520f86fc8562eecd8bdbc0dbb3294d63ec431 + checksum: 10/1f3427e45870eab9dcc59d6504b780d4a595062fe1687762ae6e67d06a70bf439b40ab64cf58cbace6293a99e3764d4647fdc8300a633b721764f5ce39dade18 languageName: node linkType: hard -"@testing-library/react@npm:^16.0.1": - version: 16.0.1 - resolution: "@testing-library/react@npm:16.0.1" +"@testing-library/react@npm:^16.2.0": + version: 16.2.0 + resolution: "@testing-library/react@npm:16.2.0" dependencies: "@babel/runtime": "npm:^7.12.5" peerDependencies: "@testing-library/dom": ^10.0.0 - "@types/react": ^18.0.0 - "@types/react-dom": ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 + "@types/react": ^18.0.0 || ^19.0.0 + "@types/react-dom": ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true "@types/react-dom": optional: true - checksum: 10/904b48881cf5bd208e25899e168f5c99c78ed6d77389544838d9d861a038d2c5c5385863ee9a367436770cbf7d21c5e05a991b9e24a33806e9ac985df2448185 + checksum: 10/cf10bfa9a363384e6861417696fff4a464a64f98ec6f0bb7f1fa7cbb550d075d23a2f6a943b7df85dded7bde3234f6ea6b6e36f95211f4544b846ea72c288289 languageName: node linkType: hard -"@testing-library/user-event@npm:^14.5.2": - version: 14.5.2 - resolution: "@testing-library/user-event@npm:14.5.2" +"@testing-library/user-event@npm:^14.6.1": + version: 14.6.1 + resolution: "@testing-library/user-event@npm:14.6.1" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 10/49821459d81c6bc435d97128d6386ca24f1e4b3ba8e46cb5a96fe3643efa6e002d88c1b02b7f2ec58da593e805c59b78d7fdf0db565c1f02ba782f63ee984040 + checksum: 10/34b74fff56a0447731a94b40d4cf246deb8dbc1c1e3aec93acd1c3377a760bb062e979f1572bb34ec164ad28ee2a391744b42d0d6d6cc16c4ce527e5e09610e1 languageName: node linkType: hard -"@tiptap/core@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/core@npm:2.7.4" +"@tiptap/core@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/core@npm:2.11.5" peerDependencies: "@tiptap/pm": ^2.7.0 - checksum: 10/81a9cee6daa9e0e9d0e594d583e837ad7764dc0b514e1eabb5559b2c9adb12357dbd56e20aa316884c7c904a418373c332d0e57e3f7ea468d51ec38ec6373434 + checksum: 10/a082fd17458a42b4cf4f584553cd64cfd4bfab61e249ff7061a171d047fcfb2eb746b09c2cb6c823d70d4285457c4c59263d80412de82b993990a4d233fc741e languageName: node linkType: hard -"@tiptap/extension-blockquote@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-blockquote@npm:2.7.4" +"@tiptap/extension-blockquote@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-blockquote@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/8c2087b23502b7b29a85d84d9b3a4e010e2a42cbdf8373b36964dde7eba8e2c116a658866b7a94cde1a6449cb850885cea330ffee678e4613dc21e6c716c50dd + checksum: 10/99effc536e42b751abf6fb2172451ba3f001d58253f8e267d89f97f8157ba2d4a3e2d4ee4611ca535d6d48939c04d690671e769a5a9ef17874ccddd026cf5468 languageName: node linkType: hard -"@tiptap/extension-bold@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-bold@npm:2.7.4" +"@tiptap/extension-bold@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-bold@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/7f04e56f64dfb1df4b2c8f1696f4a2dfa7a68ba5c2a1eac0d6d226937ee2e37ee9ad07dd1bf2858fc9e5a3aa7ac02291ce4b246612a87b92570671da8e338b45 + checksum: 10/ff83f692f0022c9b5d7cc6f3015a3e0ce0978e89021b296c2854b236a01e1879fd653122382177f76e814d3143120b144dec89dd67a1334f6cedbe4838c1fe94 languageName: node linkType: hard -"@tiptap/extension-bubble-menu@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-bubble-menu@npm:2.7.4" +"@tiptap/extension-bubble-menu@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-bubble-menu@npm:2.11.5" dependencies: tippy.js: "npm:^6.3.7" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/64d06cf27655e6bc2564640b5fa0aee9a93271e0abfccdc70ec1d7c0ad7dfdc1405dcbaaa0a7c78b77553c27a9390bec0297193637fb2d5893f28e5ebb33a7eb + checksum: 10/047cb900b8315f863dbe62333318cc3e11e6b2fe86d5973c7d93b98ce5aeba9e34e9d5db1c7de1436c19694a046e419c0971e203b22a4d7bc964642bba38b76c languageName: node linkType: hard -"@tiptap/extension-bullet-list@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-bullet-list@npm:2.7.4" +"@tiptap/extension-bullet-list@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-bullet-list@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/3c888002c737a6d089682c62c65c377117f1ca361d79586a9f4ddf38d5caa2df21da71182662499074dc23cc6cd19d9ca46574e25658f3cfcba2b3eff782a7a7 + checksum: 10/e2950120ec321648209ec0754ebeb50ce59e1087dbe43c016966a3f3bdfff800d1d54c942594dc8e0c7a3df3de9f8e7eb9e0b0cade86d7f0311b17327c698b07 languageName: node linkType: hard -"@tiptap/extension-code-block@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-code-block@npm:2.7.4" +"@tiptap/extension-code-block@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-code-block@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/e189410b854edb51f46b3b0f643472a2979b7dbe56a6a910a53b24f249357918cbd61b1e3b36e45653fa13f1e1045495df5e0b3650d91f6aa3bcd96674d0b0a9 + checksum: 10/208946440f49f6fed7ee52aff61357bbe97bac4f879123da60e2eb99e4a6c3568b8b5f4fb5b29766e883fd32630025c6412b0e969450453e8d8393151278054f languageName: node linkType: hard -"@tiptap/extension-code@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-code@npm:2.7.4" +"@tiptap/extension-code@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-code@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/0756506bbea793374bc548b4caa58e12137119faf428ef6fa18b23c25a4656a0f65c5ac3d8d29eb2729908bf7b3544e6c5913593aff0dc3b538e1c6dc347559e + checksum: 10/997e6ac8951428abe9e973f453d505b114a1e431c1006225660baeb66f987b77a27acbc96d3f78defc4d4c16537cbfe620d7c67195f3bcbea6ef8ae5e1665ea1 languageName: node linkType: hard -"@tiptap/extension-document@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-document@npm:2.7.4" +"@tiptap/extension-document@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-document@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/14becd06090de7b0033a492f3aac44fb2779a331433505e0c7356a87c0bfe645e0d098fe047d86dca8c9c0f81ae7e8d269658885b351b850aafa06d57d78439c + checksum: 10/c1acaee53e49498def41e57f3256332a4ef4057cf5a8847217730b7e3f674fafe59d7cdb52dda1cf9923472789a1d23c94c9d40fc4539f31b4bb351ebf7ab750 languageName: node linkType: hard -"@tiptap/extension-dropcursor@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-dropcursor@npm:2.7.4" +"@tiptap/extension-dropcursor@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-dropcursor@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/7c62463f43820e8fe2d887e1854cefde739a329860fc013520045f86652f2f40172343b63c2737d1b57f0dba3a8019035302a4e984896b2ff1f62006be56bac2 + checksum: 10/234f776bd08915e2e8c0cde69e6a738eb1db50b3ccaddba7158468028b0d6faa1961eaba6123c526343af5070cc793597d0d8e615d43445f4594c446e1c32b02 languageName: node linkType: hard -"@tiptap/extension-floating-menu@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-floating-menu@npm:2.7.4" +"@tiptap/extension-floating-menu@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-floating-menu@npm:2.11.5" dependencies: tippy.js: "npm:^6.3.7" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/42e2e751758f78765b1faec4f398ae652173ee42e2ceed9f2b50601cbca80684192ea1ddcffd144d6d3f637b89e93a0e4da8e716e94658fb74b3eddf79f29e67 + checksum: 10/ee4b437237e3953c35f3c008b37f6f0ca07b47917799e8adcc3de53982ec980890ca4143569e000a63481803d2b6088397089c56db3682d615574ae7b46217db languageName: node linkType: hard -"@tiptap/extension-gapcursor@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-gapcursor@npm:2.7.4" +"@tiptap/extension-gapcursor@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-gapcursor@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/8b70b317ca38c412878eb28c04828644d6b6697a5603fd0e0051f2abcab9e213afeb498d6db045c10a319604a4271adc95cae9bac2af96af1e9bd64bde359964 + checksum: 10/4adecad940f3c0b1fae405b9b14092bff3690e9f3a48c66f6850c124611f3ba7390a9788027520c340913e736bc7385a4bba7d02f131b48ab2257b6d57593bcb languageName: node linkType: hard -"@tiptap/extension-hard-break@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-hard-break@npm:2.7.4" +"@tiptap/extension-hard-break@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-hard-break@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/42a8b0c90f95c5452082e16b31b6e5a159292e860ff240f2abeb46238265da642a359fb67d4865e413ac11d88b795ed61abd35f4e0d7ffef7640dd9fb9ca5761 + checksum: 10/b2e0cde5778646cb02fb0ce4e28408f1958abd337ae33d55f3b7c7fe6b26d838780de0c1d40e5ac30e93fea4cc51a026408f215e17d5c24eb913e972047571f4 languageName: node linkType: hard -"@tiptap/extension-heading@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-heading@npm:2.7.4" +"@tiptap/extension-heading@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-heading@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/28513d0a07892350de166fbc4d0d7dc9d1df97c4458e9b143b5ac7295cd0e40abc0597c5d9fd47151a1ba4238a29b5c3ab4629c565b4b9468d8dc8c48a6e960b + checksum: 10/be0d96c59bf442ec9c6d14d96c7b2578c6a0fc9c0e377e05d43acb61df7b7761240a76b636effd3520ed8f7373030ac84fe4c56cc2650b203b3dbc448c8f2111 languageName: node linkType: hard -"@tiptap/extension-highlight@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-highlight@npm:2.7.4" +"@tiptap/extension-highlight@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-highlight@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/ef29f4422ef18f772d1026775e4a40a944525384f0c84f019dbfa23e7d3fa2e568d180f7e3e40c61cfe19acfc473ee56a8fd01529bee1d7294fb3064dfd9fe02 + checksum: 10/6658023564351c2942f17cc418011db6c442ec8eddb5bf7f536fc1e7ca73a6506c72791169700521f30e9b840a22445338d242f80fcfea44374a3f6fd00c4a0f languageName: node linkType: hard -"@tiptap/extension-history@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-history@npm:2.7.4" +"@tiptap/extension-history@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-history@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/962d05b150ae9576a57010abf234af40a3aee9446360bf65c74b27c1c33ae5563bcc30ae9717fc7d99cd4f0b8fbddb31e81b6462ddf6b3cd1a2f92fa76c3205c + checksum: 10/38a9323c0090f5e58f01ccd676238e2713033e78b49fe5d1cbe296b51d61607c6346408fa457ac80985c4707621039afa6a72337754596be1b8a182270040efc languageName: node linkType: hard -"@tiptap/extension-horizontal-rule@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-horizontal-rule@npm:2.7.4" +"@tiptap/extension-horizontal-rule@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-horizontal-rule@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/40aba2ece352ddf29a19fa0a7e61916b48fb3cf390fb6b93a1ff5976f59ce7973d37563f945f3481997b9c7ef78e906e58e45f18014b44b7e060621e81823eb6 + checksum: 10/4ffb2bcdfced00d37b9dea7db6acb7cc33c548023dd47cfea9cca379329bbab450528f262e0e57baa467dd30bc3da9409959fb60ba8e160708935256283a5b96 languageName: node linkType: hard -"@tiptap/extension-italic@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-italic@npm:2.7.4" +"@tiptap/extension-italic@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-italic@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/86d2ebb9e61cd66a59b8c6ac6a3b5f2c9e766da2a2a967220c5e60436da88721461015505912d95d0c2284a28301571f9452568721bab0196d8168d4b35c3aa7 + checksum: 10/364af18182e90dde70ba94b141baddaac705871a5fae145f9f2a994bf5bbc83b3313ef6501de09181329b1a8a8934d1b6878e2dc12160f218325ad2e91a07fd2 languageName: node linkType: hard -"@tiptap/extension-link@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-link@npm:2.7.4" +"@tiptap/extension-link@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-link@npm:2.11.5" dependencies: - linkifyjs: "npm:^4.1.0" + linkifyjs: "npm:^4.2.0" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - checksum: 10/cffb2c538bb59f9e114d8b8857c9c3f8ff58a8a903f0a2bf3fa4289214a4c9b7fc77b3a660e86c753be5765068c96887ce961fa2e1a4b55599befa1a3dffa5a9 + checksum: 10/893e03e75c334c60d5bd8e06f90c45954acf6fb70b16cbc46bd66608efd3a6ecdf9107d97ddb75fc05dfd32fb66333e3d8b3ae73c400e409d65edb4bfa5fb669 + languageName: node + linkType: hard + +"@tiptap/extension-list-item@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-list-item@npm:2.11.5" + peerDependencies: + "@tiptap/core": ^2.7.0 + checksum: 10/4d59e9d2670439b857d76c2f69e875d43c6c5e9f670c5b5e8a843343cd12cb9bb5bafd26c834ed682caf5b2e5cc2c9009a80007e9c8f6575a1dd0e7e43faa9bd languageName: node linkType: hard -"@tiptap/extension-list-item@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-list-item@npm:2.7.4" +"@tiptap/extension-ordered-list@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-ordered-list@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/95b2f8b39b0932eae89efc7630c392d338442cba680e6845ee6f336dbc3f5cd46da9f0f7d509951dbbe8afbe01edafe391476a21cf6e0ff1e54f6300310fa14f + checksum: 10/3c58719534fe1c0170e87382ee7abd9095ebf48a3bc28dc2730f71ba6f0160d8264171c57a375f518f19b283e92e978a5a94d30d80825a2eed9d37154ccb4497 languageName: node linkType: hard -"@tiptap/extension-ordered-list@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-ordered-list@npm:2.7.4" +"@tiptap/extension-paragraph@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-paragraph@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/31aa03f119e36d9d52b3f549a4db41c80c41263ad7cdd1a1ef392320b3b83ed8f93fa142ec112e3847c8dedc873a909e6e760b3bea41bd8caa0cdbb8c35f4baf + checksum: 10/23e99326e886938b103c2d0ab83829065f5650500e00e359eecd205b33739ae8abaff53ed247125923ad4b217cb11716b09fc9c02edb06ed8a7d13856db05d2f languageName: node linkType: hard -"@tiptap/extension-paragraph@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-paragraph@npm:2.7.4" +"@tiptap/extension-strike@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-strike@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/92d43a94f331f5d7910b14285d6ec744e4692fade2674242009f9ab70f925cf766917cb1a471e2007e090b76fc24cdf0b395d9bba6d55728d2de67f0d112aa2a + checksum: 10/77cd320293301af1e670aef4cdf90e9e0f4aa66db6f750c5253273dcbed38d0b7232819a80ef93f7410c57f018f37ecce176d58aaaac513299c09e0a455cd12d languageName: node linkType: hard -"@tiptap/extension-strike@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-strike@npm:2.7.4" +"@tiptap/extension-subscript@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-subscript@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/213a866d37d3251d7c9972dc1195d810233fe8b91456fe58d0cbcd2a54f593d3bb14045d7a24f8a9dfa8fb6b9cffc1b3a35a172fbd5e2deb7dd71f4ffb59d4ce + checksum: 10/3cb85c8439efa7c1d7267b0b7df347c70dbfb8d62e2f3a7c9ef1143d91cd20de37e28b15c2cff5f56b6d5eadda6a26c0833e9c9171e932194ec9277351cc1b39 languageName: node linkType: hard -"@tiptap/extension-subscript@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-subscript@npm:2.7.4" +"@tiptap/extension-superscript@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-superscript@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/ddfecb84b4f64d3e4effd4c71a2cbc9fe5c2e6a106a3908ddfa6a7aab9277e3650e0b7258d75e4cb18b51c01d4d726dbb19da5de020d86982b548850fb272dd2 + checksum: 10/743c3913e0212df2fb380fbac6bbf30065844f7daa21e6ddc78a30bc8f2b39b3676b39662dd83e6935b1e27043c091c3ad318da804be37cecf42985bf80379f6 languageName: node linkType: hard -"@tiptap/extension-superscript@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-superscript@npm:2.7.4" +"@tiptap/extension-text-align@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-text-align@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/b362080889eb93acd825be77d4f979539a8da7ea0a42f12a7a54f3d7b0f2ee394b844dac3067aee2b310f7038150a2725165a9019abe6e959d0bd2482d44a701 + checksum: 10/8eb62b863f300cdc09cc3f9aff74e4587eee65c8cad0bb641f5d39c2b24a30e988ef2ae998a038eb51d590ae3a697b4f76d32abedd4866f40d78735cfc769acf languageName: node linkType: hard -"@tiptap/extension-text-align@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-text-align@npm:2.7.4" +"@tiptap/extension-text-style@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-text-style@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/1f436e85c7e6124915e2be085667ac24f6dcbd00b88fa7dd4284031f481b81d0aaea68091b632523762fa0dc80655632b9332b3a3a5795201c40aedca663aa6f + checksum: 10/5d951080fd0b85d7739078e57a7dae9a51f9526c28231ff601b653ec75dd8eed7e71bb923ca37319ea26feb06bd4691bd4e10e94c53a67b4e0c2cffa31a6493c languageName: node linkType: hard -"@tiptap/extension-text@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-text@npm:2.7.4" +"@tiptap/extension-text@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-text@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/f918b8423303838912f05a8955c5b12d4ce0c7c9a2808f255012c281fac1747622cf18e84a45b1a4bfa1172474b1c0db946c52efab18e8c13714948d3f241aaf + checksum: 10/da6154d7173ce36f123a97749267007d1eef7f912e10d6fc12f930ccc21b7acd352595fcd064adc686f5b875a824e952a1cc96e771b506399370277546846339 languageName: node linkType: hard -"@tiptap/extension-underline@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/extension-underline@npm:2.7.4" +"@tiptap/extension-underline@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/extension-underline@npm:2.11.5" peerDependencies: "@tiptap/core": ^2.7.0 - checksum: 10/c249c5dfe97612cdf9d9daf8a7f92c64e02b5a22023fffe10144f2e6342829f1feb2d9ad3045f9c1f458e78fd54622d9e2a2f3406499f2667b54f8204345a859 + checksum: 10/d911f1ef69a06f4be4470f5d1cce920515d8c701f64cd0f6554c419b54f37657ae8b272cd5ac76b2e503598d0b11776cded05a0310fa5bf5ff4e33397ccf9df7 languageName: node linkType: hard -"@tiptap/pm@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/pm@npm:2.7.4" +"@tiptap/pm@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/pm@npm:2.11.5" dependencies: prosemirror-changeset: "npm:^2.2.1" prosemirror-collab: "npm:^1.3.1" - prosemirror-commands: "npm:^1.6.0" + prosemirror-commands: "npm:^1.6.2" prosemirror-dropcursor: "npm:^1.8.1" prosemirror-gapcursor: "npm:^1.3.2" prosemirror-history: "npm:^1.4.1" prosemirror-inputrules: "npm:^1.4.0" prosemirror-keymap: "npm:^1.2.2" - prosemirror-markdown: "npm:^1.13.0" + prosemirror-markdown: "npm:^1.13.1" prosemirror-menu: "npm:^1.2.4" - prosemirror-model: "npm:^1.22.3" + prosemirror-model: "npm:^1.23.0" prosemirror-schema-basic: "npm:^1.2.3" prosemirror-schema-list: "npm:^1.4.1" prosemirror-state: "npm:^1.4.3" - prosemirror-tables: "npm:^1.4.0" + prosemirror-tables: "npm:^1.6.3" prosemirror-trailing-node: "npm:^3.0.0" - prosemirror-transform: "npm:^1.10.0" - prosemirror-view: "npm:^1.33.10" - checksum: 10/74eab4b7f02c239a51adeba1b9d5621f78e8276097dd9ef871df783a13d59ec4630cd4d70731f8b36dfd7258583f36ffe40c32f0d6b2b5aa429ca34cdce78069 + prosemirror-transform: "npm:^1.10.2" + prosemirror-view: "npm:^1.37.0" + checksum: 10/72a2d16cc3267893d98783602b1c53a1954c2008d96dbe0f2c8dd2015efc0682e2ba3b033b19bfeec434941df10a40262eb83427777bfb20ec7d54cc8701aa13 languageName: node linkType: hard -"@tiptap/react@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/react@npm:2.7.4" +"@tiptap/react@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/react@npm:2.11.5" dependencies: - "@tiptap/extension-bubble-menu": "npm:^2.7.4" - "@tiptap/extension-floating-menu": "npm:^2.7.4" + "@tiptap/extension-bubble-menu": "npm:^2.11.5" + "@tiptap/extension-floating-menu": "npm:^2.11.5" "@types/use-sync-external-store": "npm:^0.0.6" fast-deep-equal: "npm:^3" - use-sync-external-store: "npm:^1.2.2" + use-sync-external-store: "npm:^1" peerDependencies: "@tiptap/core": ^2.7.0 "@tiptap/pm": ^2.7.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - checksum: 10/446a7eb231ce73c9bf0ef464c0e8dc0ac257055b380f5d1a0fec6c03db2856478b0a9a3a5d95396a096cd055dda94f676254ff39ed71ad84ef76978d03552d73 - languageName: node - linkType: hard - -"@tiptap/starter-kit@npm:^2.7.4": - version: 2.7.4 - resolution: "@tiptap/starter-kit@npm:2.7.4" - dependencies: - "@tiptap/core": "npm:^2.7.4" - "@tiptap/extension-blockquote": "npm:^2.7.4" - "@tiptap/extension-bold": "npm:^2.7.4" - "@tiptap/extension-bullet-list": "npm:^2.7.4" - "@tiptap/extension-code": "npm:^2.7.4" - "@tiptap/extension-code-block": "npm:^2.7.4" - "@tiptap/extension-document": "npm:^2.7.4" - "@tiptap/extension-dropcursor": "npm:^2.7.4" - "@tiptap/extension-gapcursor": "npm:^2.7.4" - "@tiptap/extension-hard-break": "npm:^2.7.4" - "@tiptap/extension-heading": "npm:^2.7.4" - "@tiptap/extension-history": "npm:^2.7.4" - "@tiptap/extension-horizontal-rule": "npm:^2.7.4" - "@tiptap/extension-italic": "npm:^2.7.4" - "@tiptap/extension-list-item": "npm:^2.7.4" - "@tiptap/extension-ordered-list": "npm:^2.7.4" - "@tiptap/extension-paragraph": "npm:^2.7.4" - "@tiptap/extension-strike": "npm:^2.7.4" - "@tiptap/extension-text": "npm:^2.7.4" - "@tiptap/pm": "npm:^2.7.4" - checksum: 10/2190d8fdf73bf7454bc2de7fabf6edcf100d81760c5a1cb0a5721f94a147deb37d585a373406aac315c0f856d3348cce4b7824099e2e0a7785d9d85da3d7c161 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/407aa855978e8fb6051a73bc2052f0ff6521d57d0df5d98765861eceb0bf54bfbcd42557ea06579d45b41ba6d57de2a78273e7b7c898a0dea5ed20c72bd15922 + languageName: node + linkType: hard + +"@tiptap/starter-kit@npm:^2.11.5": + version: 2.11.5 + resolution: "@tiptap/starter-kit@npm:2.11.5" + dependencies: + "@tiptap/core": "npm:^2.11.5" + "@tiptap/extension-blockquote": "npm:^2.11.5" + "@tiptap/extension-bold": "npm:^2.11.5" + "@tiptap/extension-bullet-list": "npm:^2.11.5" + "@tiptap/extension-code": "npm:^2.11.5" + "@tiptap/extension-code-block": "npm:^2.11.5" + "@tiptap/extension-document": "npm:^2.11.5" + "@tiptap/extension-dropcursor": "npm:^2.11.5" + "@tiptap/extension-gapcursor": "npm:^2.11.5" + "@tiptap/extension-hard-break": "npm:^2.11.5" + "@tiptap/extension-heading": "npm:^2.11.5" + "@tiptap/extension-history": "npm:^2.11.5" + "@tiptap/extension-horizontal-rule": "npm:^2.11.5" + "@tiptap/extension-italic": "npm:^2.11.5" + "@tiptap/extension-list-item": "npm:^2.11.5" + "@tiptap/extension-ordered-list": "npm:^2.11.5" + "@tiptap/extension-paragraph": "npm:^2.11.5" + "@tiptap/extension-strike": "npm:^2.11.5" + "@tiptap/extension-text": "npm:^2.11.5" + "@tiptap/extension-text-style": "npm:^2.11.5" + "@tiptap/pm": "npm:^2.11.5" + checksum: 10/80605f7d821c180fa86786563ca8df4b0fa34808d67f48f141568009db3388ca3dd606edf8a3d7df31d735a770067162fa84294b12ebb85600478949ffab9a6e languageName: node linkType: hard @@ -3194,31 +2601,44 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.5 - resolution: "@types/babel__traverse@npm:7.20.5" + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" dependencies: "@babel/types": "npm:^7.20.7" - checksum: 10/f0352d537448e1e37f27e6bb8c962d7893720a92fde9d8601a68a93dbc14e15c088b4c0c8f71021d0966d09fba802ef3de11fdb6766c33993f8cf24f1277c6a9 + checksum: 10/63d13a3789aa1e783b87a8b03d9fb2c2c90078de7782422feff1631b8c2a25db626e63a63ac5a1465d47359201c73069dacb4b52149d17c568187625da3064ae languageName: node linkType: hard "@types/conventional-commits-parser@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/conventional-commits-parser@npm:5.0.0" + version: 5.0.1 + resolution: "@types/conventional-commits-parser@npm:5.0.1" dependencies: "@types/node": "npm:*" - checksum: 10/0992617c7274e9ddcbdb30cc5b735fa067343c40e16f539615b3ad9213cacbe9a32483bc8e0302d297c6de9cc7fd3794549635761a66bd9dc220d609822d86e7 + checksum: 10/ac98a31ed04c7b45029ef8197ff393904346a2431cb13a914991c402d47289bb41b9f219459464668376095d6ca713c948d6b7692375c353f090dc3e230ff77c languageName: node linkType: hard -"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10/719fcd255760168a43d0e306ef87548e1e15bffe361d5f4022b0f266575637acc0ecb85604ac97879ee8ae83c6a6d0613b0ed31d0209ddf22a0fe6d608fc56fe languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d @@ -3259,17 +2679,17 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.13": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" +"@types/jest@npm:^29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: expect: "npm:^29.0.0" pretty-format: "npm:^29.0.0" - checksum: 10/7d6e3e4ef4b1cab0f61270d55764709512fdfbcb1bd47c0ef44117d48490529c1f264dacf3440b9188363e99e290b80b79c529eadc3af2184116a90f6856b192 + checksum: 10/59ec7a9c4688aae8ee529316c43853468b6034f453d08a2e1064b281af9c81234cec986be796288f1bbb29efe943bc950e70c8fa8faae1e460d50e3cf9760f9b languageName: node linkType: hard -"@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -3283,78 +2703,68 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:^4.17.9": - version: 4.17.9 - resolution: "@types/lodash@npm:4.17.9" - checksum: 10/49e35caaf668686be0bad9e9bef88456903a21999d3fd8bf91c302e0d5328398fb59fee793d0afbaf6edeca1b46c3e8109899d85ff3a433075178f1ab693e597 +"@types/linkify-it@npm:^5": + version: 5.0.0 + resolution: "@types/linkify-it@npm:5.0.0" + checksum: 10/c3919044d4876f9d71d037e861745cd2485c95ac8c36a4fa67b132d4e60eb1d067e123cc7965c9cf5110eea351517d767f0d306af5e9147d6d0af87bc374ddcf languageName: node linkType: hard -"@types/node@npm:*": - version: 20.12.8 - resolution: "@types/node@npm:20.12.8" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10/1feab4c8cb08588eea10811ed4d02485a5cde47fdf92e7b3193fc9f8ee39ea556f6e3124dc6d5378354466ed5f7e5fbe5e20f625908de40ea37560368a50f72c +"@types/lodash@npm:^4.17.15": + version: 4.17.15 + resolution: "@types/lodash@npm:4.17.15" + checksum: 10/27b348b5971b9c670215331b52448a13d7d65bf1fbd320a7049c9c153c1186ff5d116ba75f05f07d32d7ece8a992b26a30c7bdc9be22a3d1e4e3e6068aa04603 languageName: node linkType: hard -"@types/node@npm:^22.7.4": - version: 22.7.4 - resolution: "@types/node@npm:22.7.4" +"@types/markdown-it@npm:^14.0.0": + version: 14.1.2 + resolution: "@types/markdown-it@npm:14.1.2" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/19ddab80c4eba2253c855ed67c9bbc47417183049d01e59010a738bd80d47338bab79fd1f44ae51516bd63a1db4bf21ddb38b16bf6401a2e93252068ec52e88b + "@types/linkify-it": "npm:^5" + "@types/mdurl": "npm:^2" + checksum: 10/ca2f239c8d59610b9f936fd40261a6ccf2fa1ae27a21816c031e5712542dcf9ee01e2fe29b31118df90716e11ade54e47d92a498e9b6488800e77ca8827255a2 languageName: node linkType: hard -"@types/parse-json@npm:^4.0.0": - version: 4.0.2 - resolution: "@types/parse-json@npm:4.0.2" - checksum: 10/5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 +"@types/mdurl@npm:^2": + version: 2.0.0 + resolution: "@types/mdurl@npm:2.0.0" + checksum: 10/78746e96c655ceed63db06382da466fd52c7e9dc54d60b12973dfdd110cae06b9439c4b90e17bb8d4461109184b3ea9f3e9f96b3e4bf4aa9fe18b6ac35f283c8 languageName: node linkType: hard -"@types/prop-types@npm:*": - version: 15.7.12 - resolution: "@types/prop-types@npm:15.7.12" - checksum: 10/ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe +"@types/node@npm:*, @types/node@npm:^22.13.0": + version: 22.13.0 + resolution: "@types/node@npm:22.13.0" + dependencies: + undici-types: "npm:~6.20.0" + checksum: 10/a7563e57df48cb7e28f936dbabe228316dcdb4c7c3a88a6c1659fae898ffde2647a7193a9e29e0cbcb7dacc05a91fb3bc30c1a1d6fc9294694a734ff71a5f12e languageName: node linkType: hard -"@types/react-dom@npm:^18.3.0": - version: 18.3.0 - resolution: "@types/react-dom@npm:18.3.0" - dependencies: - "@types/react": "npm:*" - checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10/5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 languageName: node linkType: hard -"@types/react@npm:*": - version: 18.3.1 - resolution: "@types/react@npm:18.3.1" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10/baa6b8a75c471c89ebf3477b4feab57102ced25f0c1e553dd04ef6a1f0def28d5e0172fa626a631f22e223f840b5aaa2403b2d4bb671c83c5a9d6c7ae39c7a05 +"@types/react-dom@npm:^19.0.3": + version: 19.0.3 + resolution: "@types/react-dom@npm:19.0.3" + peerDependencies: + "@types/react": ^19.0.0 + checksum: 10/815907f7adaa078acbf1d1ae7b6bf69cebe86bd301b8b9744e392bc0f16feb31bfb9fe0bfa2681d7d86678c83d52dedba5ed9bc7776736d4050cdd426b8b2d2b languageName: node linkType: hard -"@types/react@npm:^18.3.10": - version: 18.3.10 - resolution: "@types/react@npm:18.3.10" +"@types/react@npm:^19.0.8": + version: 19.0.8 + resolution: "@types/react@npm:19.0.8" dependencies: - "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/cdc946f15fcad62387e6485a2bbef3e45609708fd81e3ce30b03580077bb8a8a1bd0d19858d8602b33c3921bbb8907ddbc9411fd25294a2c2e944907dad8dd67 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 + checksum: 10/1080d5b96ee0b4395f8f167ae6952f570088ee03bdce69f8237aab82c32d9bd2b71106f787bac17ba351acc4aba5e3454bafca51f2eb11d1562073b821e63d15 languageName: node linkType: hard @@ -3380,546 +2790,397 @@ __metadata: linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10/1e2b2673847011ce43607df690d392f137d95a2d6ea85aa319403eadda2ef4277365efd4982354d8843f2611ef3846c88599660aaeb537fa9ccddae83c2a89de + checksum: 10/16f6681bf4d99fb671bf56029141ed01db2862e3db9df7fc92d8bea494359ac96a1b4b1c35a836d1e95e665fb18ad753ab2015fc0db663454e8fd4e5d5e2ef91 languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.7.0" +"@typescript-eslint/eslint-plugin@npm:^8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.22.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.7.0" - "@typescript-eslint/type-utils": "npm:8.7.0" - "@typescript-eslint/utils": "npm:8.7.0" - "@typescript-eslint/visitor-keys": "npm:8.7.0" + "@typescript-eslint/scope-manager": "npm:8.22.0" + "@typescript-eslint/type-utils": "npm:8.22.0" + "@typescript-eslint/utils": "npm:8.22.0" + "@typescript-eslint/visitor-keys": "npm:8.22.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^1.3.0" + ts-api-utils: "npm:^2.0.0" peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/5bc774b1da4e1cd19c5ffd731c655c53035fd81ff06a95c2f2c54ab62c401879f886da3e1a1235505341e8172b2841c6edc78b4565a261105ab32d83bf5b8ab1 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^8.8.0": - version: 8.8.0 - resolution: "@typescript-eslint/parser@npm:8.8.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.8.0" - "@typescript-eslint/types": "npm:8.8.0" - "@typescript-eslint/typescript-estree": "npm:8.8.0" - "@typescript-eslint/visitor-keys": "npm:8.8.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/8d3c3afb508aa7d6c16dd8a786762f05e174ace50213768232405b1c31534ca568d38e1793feb41d53fe1327c901e5f93e70f61222b31848b2a9ae955b14fff2 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 10/e827770baa202223bc0387e2fd24f630690809e460435b7dc9af336c77322290a770d62bd5284260fa881c86074d6a9fd6c97b07382520b115f6786b8ed499da - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/scope-manager@npm:8.7.0" - dependencies: - "@typescript-eslint/types": "npm:8.7.0" - "@typescript-eslint/visitor-keys": "npm:8.7.0" - checksum: 10/6a6aae28437f6cd78f82dd1359658593fcc8f6d0da966b4d128b14db3a307b6094d22515a79c222055a31bf9b73b73799acf18fbf48c0da16e8f408fcc10464c - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.8.0": - version: 8.8.0 - resolution: "@typescript-eslint/scope-manager@npm:8.8.0" - dependencies: - "@typescript-eslint/types": "npm:8.8.0" - "@typescript-eslint/visitor-keys": "npm:8.8.0" - checksum: 10/d1cd97f35bbba85eb25879e9a0acfc4fcd6908bee1f60467d9eb6b6da4732a07f0947b6a97d3f2bc8f03205e530ce49f00d4540b515082e37d1abcd781f7cad0 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/type-utils@npm:8.7.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:8.7.0" - "@typescript-eslint/utils": "npm:8.7.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/dba4520dd3dce35b765640f9633100bd29d2092478cb467e89bde51dc23fb19f7395e87f4486b898315aab081263003cbc78f03f0f40079602713aafc2f2a6a5 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 10/24e8443177be84823242d6729d56af2c4b47bfc664dd411a1d730506abf2150d6c31bdefbbc6d97c8f91043e3a50e0c698239dcb145b79bb6b0c34469aaf6c45 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/types@npm:8.7.0" - checksum: 10/9adbe4efdcb00735af5144a161d6bb2f79a952a9701820920ad33adba02032d65d5b601087e953c2918f7efa548abbcd9289f83ec6299f66941d7c585886792e - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.8.0": - version: 8.8.0 - resolution: "@typescript-eslint/types@npm:8.8.0" - checksum: 10/8f82c7ffd9fb11a4b90ee06b486df71341bc7ca63a6d0e9864120fbad26afe99c69408b0c887e71078b58df47239fae7640d40fcd1373ca6b8970949fb6f688f - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/06c975eb5f44b43bd19fadc2e1023c50cf87038fe4c0dd989d4331c67b3ff509b17fa60a3251896668ab4d7322bdc56162a9926971218d2e1a1874d2bef9a52e - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.7.0" - dependencies: - "@typescript-eslint/types": "npm:8.7.0" - "@typescript-eslint/visitor-keys": "npm:8.7.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/c4f7e3c18c8382b72800681c37c87726b02a96cf6831be37d2d2f9c26267016a9dd7af4e08184b96376a9aebdc5c344c6c378c86821c374fe10a9e45aca1b33d + typescript: ">=4.8.4 <5.8.0" + checksum: 10/7211ad95f20a27182e2b55ef50102dfee4a7084c267c4e24cca24f0a28daa0360074a38bb71e407dad6d99db1165096b324b708cf35904b1d4f62fc9d5fd0f98 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.8.0": - version: 8.8.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.8.0" +"@typescript-eslint/parser@npm:^8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/parser@npm:8.22.0" dependencies: - "@typescript-eslint/types": "npm:8.8.0" - "@typescript-eslint/visitor-keys": "npm:8.8.0" + "@typescript-eslint/scope-manager": "npm:8.22.0" + "@typescript-eslint/types": "npm:8.22.0" + "@typescript-eslint/typescript-estree": "npm:8.22.0" + "@typescript-eslint/visitor-keys": "npm:8.22.0" debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b7cee47db25106c791c816117ea602efe6cf09707bff1fcf8c5f49d3bb1d8104e5f56a407db62a4821fafa6708bb9f4d331e75857272b77e5883c89dd520a946 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.7.0, @typescript-eslint/utils@npm:^8.3.0": - version: 8.7.0 - resolution: "@typescript-eslint/utils@npm:8.7.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.7.0" - "@typescript-eslint/types": "npm:8.7.0" - "@typescript-eslint/typescript-estree": "npm:8.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10/81674503fb5ea32ff5de8f1a29fecbcfa947025e7609e861ac8e32cd13326fc050c4fa5044e1a877f05e7e1264c42b9c72a7fd09c4a41d0ac2cf1c49259abf03 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/6b7fee52345e8a32d8cfea1ac4aeb563cb0c44ba46290686afde1cd541b787fcf61bec0e6960559f544e9ba3b72670a68f8eda860384aebb5744101f0f1a68c9 languageName: node linkType: hard - -"@typescript-eslint/utils@npm:^5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10/15ef13e43998a082b15f85db979f8d3ceb1f9ce4467b8016c267b1738d5e7cdb12aa90faf4b4e6dd6486c236cf9d33c463200465cf25ff997dbc0f12358550a1 + +"@typescript-eslint/scope-manager@npm:8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/scope-manager@npm:8.22.0" + dependencies: + "@typescript-eslint/types": "npm:8.22.0" + "@typescript-eslint/visitor-keys": "npm:8.22.0" + checksum: 10/7fb4bae6d9f8b86a43405b24828cd36ba0751cce4346d86821a4827cded93227f92668044e5e6d802a32096b50cfcaf2ce9ab65322310fa68f5e3819bef70168 languageName: node linkType: hard -"@typescript-eslint/utils@npm:^8.4.0": - version: 8.8.0 - resolution: "@typescript-eslint/utils@npm:8.8.0" +"@typescript-eslint/type-utils@npm:8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/type-utils@npm:8.22.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.8.0" - "@typescript-eslint/types": "npm:8.8.0" - "@typescript-eslint/typescript-estree": "npm:8.8.0" + "@typescript-eslint/typescript-estree": "npm:8.22.0" + "@typescript-eslint/utils": "npm:8.22.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.0.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10/94eed69f1ecc4d1594d3b43d552289bdcc70e074ad03fb360888a934d9a927e8c1c88419cda3797128c9dd49780fa10af0971643f600a1f2748a2e35f95f9306 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/1da2447ce12f09370082daeef88f8922842e39d2a7b0abe3def21442f85bf4250524c60cbb97276d5cd876783b976dcb0ed85aeb8c0b100d83b7f3a59cdfccbf languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@typescript-eslint/types@npm:8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/types@npm:8.22.0" + checksum: 10/b43ea5b05ed0b43dcee8d2fa98b2c3f79c604780cbd56e6ba7f89e3066798b7169848694f59523fd2003e8fa699ddc97f28b0860a4eb04eea26c96d5ac9346bd + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.22.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10/dc613ab7569df9bbe0b2ca677635eb91839dfb2ca2c6fa47870a5da4f160db0b436f7ec0764362e756d4164e9445d49d5eb1ff0b87f4c058946ae9d8c92eb388 + "@typescript-eslint/types": "npm:8.22.0" + "@typescript-eslint/visitor-keys": "npm:8.22.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.0.0" + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10/e3c0b191e2a0f55101c3e3333904f3a255d635e4ea0d026981cc25e83b62660a3a8a7993ac4a3d0c8756afb7dc272099eec48fd93e100a2b8467a5b80ef0026c languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.7.0": - version: 8.7.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.7.0" +"@typescript-eslint/utils@npm:8.22.0, @typescript-eslint/utils@npm:^8.13.0, @typescript-eslint/utils@npm:^8.18.1, @typescript-eslint/utils@npm:^8.8.1": + version: 8.22.0 + resolution: "@typescript-eslint/utils@npm:8.22.0" dependencies: - "@typescript-eslint/types": "npm:8.7.0" - eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/189ea297ff4da53aea92f31de57aed164550c51ac7cf663007c997c4f0f75a82097e35568e3a0fbcced290cb4c12ab7d3afd99e93eb37c930d7f6d6bbfd6ed98 + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.22.0" + "@typescript-eslint/types": "npm:8.22.0" + "@typescript-eslint/typescript-estree": "npm:8.22.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/92a5ae5d79a5988e88fdda8d5e88f73e7b9ce24b339098d72698dba766ded274c24d0e2857bcb799c0aa7a59257e54a273eabdaaab39a5cd20283669201eeb53 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.8.0": - version: 8.8.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.8.0" +"@typescript-eslint/visitor-keys@npm:8.22.0": + version: 8.22.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.22.0" dependencies: - "@typescript-eslint/types": "npm:8.8.0" - eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/325733fce58c8ac917ff8485949fff927794fd842abb4a665549e7a2e63437e6b7b464b60d3c320da1980e43a6bee69b9dd84139b8dc93685b188efbf96fa707 + "@typescript-eslint/types": "npm:8.22.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/1a172620d46e23362c5d1e1e7c8186856dff6b6f1c2697d67f9aac1b3dfd0de96c2c73487e4deed80fad3bfa5cf74cfed3519221657c6ede602b04ac091525a4 languageName: node linkType: hard -"@vitejs/plugin-react@npm:^4.3.1": - version: 4.3.1 - resolution: "@vitejs/plugin-react@npm:4.3.1" +"@vitejs/plugin-react@npm:^4.3.4": + version: 4.3.4 + resolution: "@vitejs/plugin-react@npm:4.3.4" dependencies: - "@babel/core": "npm:^7.24.5" - "@babel/plugin-transform-react-jsx-self": "npm:^7.24.5" - "@babel/plugin-transform-react-jsx-source": "npm:^7.24.1" + "@babel/core": "npm:^7.26.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" "@types/babel__core": "npm:^7.20.5" react-refresh: "npm:^0.14.2" peerDependencies: - vite: ^4.2.0 || ^5.0.0 - checksum: 10/a9d1eb30c968bf719a3277067211493746579aee14a7af8c0edb2cde38e8e5bbd461e62a41c3590e2c6eb04a047114eb3e97dcd591967625fbbc7aead8dfaf90 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + checksum: 10/3b220908ed9b7b96a380a9c53e82fb428ca1f76b798ab59d1c63765bdff24de61b4778dd3655952b7d3d922645aea2d97644503b879aba6e3fcf467605b9913d languageName: node linkType: hard -"@vitest/expect@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/expect@npm:2.1.1" +"@vitest/expect@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/expect@npm:3.0.4" dependencies: - "@vitest/spy": "npm:2.1.1" - "@vitest/utils": "npm:2.1.1" - chai: "npm:^5.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10/ece8d7f9e0c083c5cf30c0df9e052bba4402649736293a18e56a8db4be46a847b18dc7b33cdd1c08bea51bf6f2cb021e40e7227d9cfc24fdba4a955bffe371a2 + "@vitest/spy": "npm:3.0.4" + "@vitest/utils": "npm:3.0.4" + chai: "npm:^5.1.2" + tinyrainbow: "npm:^2.0.0" + checksum: 10/b08ebc90453ed8b36ae3ea7476e63e54c0d14164bfd6f30c76008636bb8a20c84d07d65cb1656b3a6789023d5a14d115ce5fd60c9efdb081ca13bdeffaa548b7 languageName: node linkType: hard -"@vitest/mocker@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/mocker@npm:2.1.1" +"@vitest/mocker@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/mocker@npm:3.0.4" dependencies: - "@vitest/spy": "npm:^2.1.0-beta.1" + "@vitest/spy": "npm:3.0.4" estree-walker: "npm:^3.0.3" - magic-string: "npm:^0.30.11" + magic-string: "npm:^0.30.17" peerDependencies: - "@vitest/spy": 2.1.1 - msw: ^2.3.5 - vite: ^5.0.0 + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10/4fbdaac36e3f603235b131e25d9e561381bd989a34e49522e16652077021532ae6653907b47bbca93c14ae4629e3e6a8f61438e3812620dc5654b61595b45208 + checksum: 10/f6e7a57575271b1f9f4fd8671e0760a035c31620086b694f303815aba353864b2eb3c51f5c4506e5f618ab7584b9260035e0183a4f8d7a9947a30dc7ef91c5b6 languageName: node linkType: hard -"@vitest/pretty-format@npm:2.1.1, @vitest/pretty-format@npm:^2.1.1": - version: 2.1.1 - resolution: "@vitest/pretty-format@npm:2.1.1" +"@vitest/pretty-format@npm:3.0.4, @vitest/pretty-format@npm:^3.0.4": + version: 3.0.4 + resolution: "@vitest/pretty-format@npm:3.0.4" dependencies: - tinyrainbow: "npm:^1.2.0" - checksum: 10/744278a3a91d080e51a94b03eaf7cf43779978d6391060cbfdda6d03194eef744ce8f12a2fe2fa90a9bf9b9f038d4c4c4d88f6192f042c88c5ee4125f38bf892 + tinyrainbow: "npm:^2.0.0" + checksum: 10/8c54fc5df1e73339b5b81ad66d779c98af750a4f1609f47aecabc9af2e11620775d521ab183e9db8acf2cd018d7aa29d5fd9737bf2935369dd6f1306a6487b9f languageName: node linkType: hard -"@vitest/runner@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/runner@npm:2.1.1" +"@vitest/runner@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/runner@npm:3.0.4" dependencies: - "@vitest/utils": "npm:2.1.1" - pathe: "npm:^1.1.2" - checksum: 10/cf13a2f0bebb494484e60614ff0e7cab06f4310b36c96fe311035ab2eec9cbc057fa5702e904d43e8976fb2214fe550286ceb0b3dc1c72081e23eb1b1f8fa193 + "@vitest/utils": "npm:3.0.4" + pathe: "npm:^2.0.2" + checksum: 10/3dd4dff683005d123748ffbe3859d42ca587545a7ab33d01c7ab2bad9f96f9fd4fe9bb85c3d800a808f929133fdf2522cc4e3b48a05518a71e6a0002009b72c9 languageName: node linkType: hard -"@vitest/snapshot@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/snapshot@npm:2.1.1" +"@vitest/snapshot@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/snapshot@npm:3.0.4" dependencies: - "@vitest/pretty-format": "npm:2.1.1" - magic-string: "npm:^0.30.11" - pathe: "npm:^1.1.2" - checksum: 10/820f429d950cf63316464e7f2bc1f0ba4b7d2691c51f6ad03ba1c6edc7dbdc6a86b017c082f2a519b743ae53880b41366bbb596c8b43cf8cd68032f9433ec844 + "@vitest/pretty-format": "npm:3.0.4" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.2" + checksum: 10/81a59dbff7d0b714b16949b02cd643a3f725b5005a70bc973d3e0c44b845e44d1d8698a2bbbedfff02698dfa128f8303420e5d146d5014e3b0ad09b0decdff37 languageName: node linkType: hard -"@vitest/spy@npm:2.1.1, @vitest/spy@npm:^2.1.0-beta.1": - version: 2.1.1 - resolution: "@vitest/spy@npm:2.1.1" +"@vitest/spy@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/spy@npm:3.0.4" dependencies: - tinyspy: "npm:^3.0.0" - checksum: 10/47e83b4a3d091c4fdc2fbf861ccf2df697d3446a6c69d384b168f9c3e0fa1cabec03e52cc8bec1909735969176ac6272cc4dee8dda945ff059183a5c4568a488 + tinyspy: "npm:^3.0.2" + checksum: 10/a2e03516e7f678120b03b1f1e95b587781e6c6c78781a2b37bd5b7706fb57a99f127d46d337db14477673aa811027730fe5fb5af68f03fde7e65050293810e67 languageName: node linkType: hard -"@vitest/utils@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/utils@npm:2.1.1" +"@vitest/utils@npm:3.0.4": + version: 3.0.4 + resolution: "@vitest/utils@npm:3.0.4" dependencies: - "@vitest/pretty-format": "npm:2.1.1" - loupe: "npm:^3.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10/605f1807c343ac01cde053b062bda8f0cc51b321a3cd9c751424a1e24549a35120896bd58612a14f068460242013f69e08fc0a69355387e981a5a50bce9ae04e + "@vitest/pretty-format": "npm:3.0.4" + loupe: "npm:^3.1.2" + tinyrainbow: "npm:^2.0.0" + checksum: 10/68132cc059ac0db29e325b3e8a1ac6e0a99ea8a2d6d214bb4dc6399c3de0ffe78c42b13c733cc775a78d7ee1e7e3dcd67f75b7c35e5c28e3825cabf4ec7c50dc languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: 10/a775b0559437ae122d14fec0cfe59fdcaf5ca2d8ff48254014fd05d6797e20401e0f1518e628f9b06819aa085834a2534234977f9608b3f2e51f94b6e8b0bc43 + "@webassemblyjs/helper-numbers": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + checksum: 10/f83e6abe38057f5d87c1fb356513a371a8b43c9b87657f2790741a66b1ef8ecf958d1391bc42f27c5fb33f58ab8286a38ea849fdd21f433cd4df1307424bab45 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: 10/e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 10/48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: 10/1d8705daa41f4d22ef7c6d422af4c530b84d69d0c253c6db5adec44d511d7caa66837803db5b1addcea611a1498fd5a67d2cf318b057a916283ae41ffb85ba8a +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: 10/9690afeafa5e765a34620aa6216e9d40f9126d4e37e9726a2594bf60cab6b211ef20ab6670fd3c4449dd4a3497e69e49b2b725c8da0fb213208c7f45f15f5d5b languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" - "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" + "@webassemblyjs/helper-api-error": "npm:1.13.2" "@xtuc/long": "npm:4.2.2" - checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 + checksum: 10/e4c7d0b09811e1cda8eec644a022b560b28f4e974f50195375ccd007df5ee48a922a6dcff5ac40b6a8ec850d56d0ea6419318eee49fec7819ede14e90417a6a4 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 10/3edd191fff7296df1ef3b023bdbe6cb5ea668f6386fd197ccfce46015c6f2a8cc9763cfb86503a0b94973ad27996645afff2252ee39a236513833259a47af6ed languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - checksum: 10/e91e6b28114e35321934070a2db8973a08a5cd9c30500b817214c683bbf5269ed4324366dd93ad83bf2fba0d671ac8f39df1c142bf58f70c57a827eeba4a3d2f + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + checksum: 10/6b73874f906532512371181d7088460f767966f26309e836060c5a8e4e4bfe6d523fb5f4c034b34aa22ebb1192815f95f0e264298769485c1f0980fdd63ae0ce languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + checksum: 10/d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d + checksum: 10/3a10542c86807061ec3230bac8ee732289c852b6bceb4b88ebd521a12fbcecec7c432848284b298154f28619e2746efbed19d6904aef06c49ef20a0b85f650cf languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 10/27885e5d19f339501feb210867d69613f281eda695ac508f04d69fa3398133d05b6870969c0242b054dc05420ed1cc49a64dea4fe0588c18d211cddb0117cc54 languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" +"@webassemblyjs/wasm-edit@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/helper-wasm-section": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-opt": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - "@webassemblyjs/wast-printer": "npm:1.12.1" - checksum: 10/5678ae02dbebba2f3a344e25928ea5a26a0df777166c9be77a467bfde7aca7f4b57ef95587e4bd768a402cdf2fddc4c56f0a599d164cdd9fe313520e39e18137 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/helper-wasm-section": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-opt": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + "@webassemblyjs/wast-printer": "npm:1.14.1" + checksum: 10/c62c50eadcf80876713f8c9f24106b18cf208160ab842fcb92060fd78c37bf37e7fcf0b7cbf1afc05d230277c2ce0f3f728432082c472dd1293e184a95f9dbdd languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/ec45bd50e86bc9856f80fe9af4bc1ae5c98fb85f57023d11dff2b670da240c47a7b1b9b6c89755890314212bd167cf3adae7f1157216ddffb739a4ce589fc338 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/6085166b0987d3031355fe17a4f9ef0f412e08098d95454059aced2bd72a4c3df2bc099fa4d32d640551fc3eca1ac1a997b44432e46dc9d84642688e42c17ed4 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - checksum: 10/21f25ae109012c49bb084e09f3b67679510429adc3e2408ad3621b2b505379d9cce337799a7919ef44db64e0d136833216914aea16b0d4856f353b9778e0cdb7 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + checksum: 10/fa5d1ef8d2156e7390927f938f513b7fb4440dd6804b3d6c8622b7b1cf25a3abf1a5809f615896d4918e04b27b52bc3cbcf18faf2d563cb563ae0a9204a492db languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-api-error": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/f7311685b76c3e1def2abea3488be1e77f06ecd8633143a6c5c943ca289660952b73785231bb76a010055ca64645227a4bc79705c26ab7536216891b6bb36320 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/07d9805fda88a893c984ed93d5a772d20d671e9731358ab61c6c1af8e0e58d1c42fc230c18974dfddebc9d2dd7775d514ba4d445e70080b16478b4b16c39c7d9 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/ast": "npm:1.14.1" "@xtuc/long": "npm:4.2.2" - checksum: 10/1a6a4b6bc4234f2b5adbab0cb11a24911b03380eb1cab6fb27a2250174a279fdc6aa2f5a9cf62dd1f6d4eb39f778f488e8ff15b9deb0670dee5c5077d46cf572 - languageName: node - linkType: hard - -"@wyw-in-js/processor-utils@npm:0.5.4": - version: 0.5.4 - resolution: "@wyw-in-js/processor-utils@npm:0.5.4" - dependencies: - "@babel/generator": "npm:^7.23.5" - "@wyw-in-js/shared": "npm:0.5.4" - checksum: 10/e46a5c57c8d597b4780bc34971b02bd2760526c729d6a00c4002f6a60ba7520962a38f699c13ea61b8944c28697753141fe356910cc638268c8d6a69f50f57f8 + checksum: 10/cef09aad2fcd291bfcf9efdae2ea1e961a1ba0f925d1d9dcdd8c746d32fbaf431b6d26a0241699c0e39f82139018aa720b4ceb84ac6f4c78f13072747480db69 languageName: node linkType: hard -"@wyw-in-js/processor-utils@npm:^0.5.3": - version: 0.5.3 - resolution: "@wyw-in-js/processor-utils@npm:0.5.3" +"@wyw-in-js/processor-utils@npm:0.5.5, @wyw-in-js/processor-utils@npm:^0.5.3": + version: 0.5.5 + resolution: "@wyw-in-js/processor-utils@npm:0.5.5" dependencies: "@babel/generator": "npm:^7.23.5" - "@wyw-in-js/shared": "npm:0.5.3" - checksum: 10/a0aadff2105f83a137e2ade6fe34bceb840d98211ca357b185e0aea4ca9db7f2f9dc933d6b795dbec0d56611e2d82cf4666a0a36bac56305793a43004cbcfa8e - languageName: node - linkType: hard - -"@wyw-in-js/shared@npm:0.5.3": - version: 0.5.3 - resolution: "@wyw-in-js/shared@npm:0.5.3" - dependencies: - debug: "npm:^4.3.4" - find-up: "npm:^5.0.0" - minimatch: "npm:^9.0.3" - checksum: 10/3d52c9e632cbca6f74b3b8c708eac85471b43c3a85bf873b9a2eb8990d334ca39ae78e8e2caf7dc7b4b9a03c1fddb629213da1e3309fc29a2cf1ff497cdf9fe4 + "@wyw-in-js/shared": "npm:0.5.5" + checksum: 10/a33f6348d508323443b389dd13a631be41c0139190bf1c06e4d10d89f01bebd4396a02833a07b7d4adba71ce5d0523ddf150312d0e87ff50f6bc10bedab71771 languageName: node linkType: hard -"@wyw-in-js/shared@npm:0.5.4": - version: 0.5.4 - resolution: "@wyw-in-js/shared@npm:0.5.4" +"@wyw-in-js/shared@npm:0.5.5": + version: 0.5.5 + resolution: "@wyw-in-js/shared@npm:0.5.5" dependencies: debug: "npm:^4.3.4" find-up: "npm:^5.0.0" minimatch: "npm:^9.0.3" - checksum: 10/0094fc9d4c20bf38f00d4085c2d6f48edad9efac1e75247e4156518dffff5bc2beec801c3ab9d53e88449533fe8fb09bd08e1327a82a04d796c95b1a4dcc44b6 + checksum: 10/49bae7c11e724c3b7c9ff6138822e38033f382b96ba9bf3fdb739e8ca08e45ae13218661ec8910b559a879edabdf5d2e8c06449ce59def5134d77dfaf3f1be34 languageName: node linkType: hard -"@wyw-in-js/transform@npm:0.5.4": - version: 0.5.4 - resolution: "@wyw-in-js/transform@npm:0.5.4" +"@wyw-in-js/transform@npm:0.5.5": + version: 0.5.5 + resolution: "@wyw-in-js/transform@npm:0.5.5" dependencies: "@babel/core": "npm:^7.23.5" "@babel/generator": "npm:^7.23.5" @@ -3928,43 +3189,43 @@ __metadata: "@babel/template": "npm:^7.22.15" "@babel/traverse": "npm:^7.23.5" "@babel/types": "npm:^7.23.5" - "@wyw-in-js/processor-utils": "npm:0.5.4" - "@wyw-in-js/shared": "npm:0.5.4" + "@wyw-in-js/processor-utils": "npm:0.5.5" + "@wyw-in-js/shared": "npm:0.5.5" babel-merge: "npm:^3.0.0" cosmiconfig: "npm:^8.0.0" - happy-dom: "npm:^12.5.0" + happy-dom: "npm:^15.11.0" source-map: "npm:^0.7.4" stylis: "npm:^4.3.0" ts-invariant: "npm:^0.10.3" - checksum: 10/ef1573dbb0d30f4927abe87f6c6a5120f16b211bc9ef7747658ffd90fdfe8119f5830d764a60399eb350f098c720c9bda9dc27d60fb48306f29c43e1742fbd24 + checksum: 10/4a54e36a1e1c47e01cf9f306fc435e74b12191b1922e76d5d188df9adceafe621bf61f5c52f378f8e7022ff671bea498e417449ac8eb77b651c44ba96d3ff724 languageName: node linkType: hard -"@wyw-in-js/vite@npm:^0.5.4": - version: 0.5.4 - resolution: "@wyw-in-js/vite@npm:0.5.4" +"@wyw-in-js/vite@npm:^0.5.5": + version: 0.5.5 + resolution: "@wyw-in-js/vite@npm:0.5.5" dependencies: - "@wyw-in-js/shared": "npm:0.5.4" - "@wyw-in-js/transform": "npm:0.5.4" + "@wyw-in-js/shared": "npm:0.5.5" + "@wyw-in-js/transform": "npm:0.5.5" peerDependencies: vite: ">=3.2.7" - checksum: 10/9ce583c815cf09a7b24bcf3f66cad4235ad17f91688222dbb2b220b86347384f290762ade9204e079caf9f0f235a196ecd3708ac99414d2d22350fcd92501438 + checksum: 10/829613e29dc0071b5f4de8821a4fb33f1d159089a9750d58418e44ffc5bbb13919cc08bd792168fed47c0006934bb3dfff2c123e2e62a27dae675a5c5d630f5f languageName: node linkType: hard -"@xstate/react@npm:^4.1.3": - version: 4.1.3 - resolution: "@xstate/react@npm:4.1.3" +"@xstate/react@npm:^5.0.2": + version: 5.0.2 + resolution: "@xstate/react@npm:5.0.2" dependencies: use-isomorphic-layout-effect: "npm:^1.1.2" use-sync-external-store: "npm:^1.2.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - xstate: ^5.18.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-0 + xstate: ^5.19.2 peerDependenciesMeta: xstate: optional: true - checksum: 10/4e782b61588c1a3d1bbdf04a4dbf4fbbc5ca75e1a51f489c4bba44057cd07f10a024110db664d361ac8e166b1a0d925bffb0d0910d914d96f0f5b904d3a73894 + checksum: 10/f7842c19299945abbd21bd2cdb892fb94cd7543fb68982e682a0ce31bb37543f81b6355c127873d87a6bc44c5619d4c9eb4675f68bafea9f51fe1d7154b7f3b9 languageName: node linkType: hard @@ -3994,19 +3255,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 - languageName: node - linkType: hard - -"acorn-import-attributes@npm:^1.9.5": - version: 1.9.5 - resolution: "acorn-import-attributes@npm:1.9.5" - peerDependencies: - acorn: ^8 - checksum: 10/8bfbfbb6e2467b9b47abb4d095df717ab64fce2525da65eabee073e85e7975fb3a176b6c8bba17c99a7d8ede283a10a590272304eb54a93c4aa1af9790d47a8b +"abbrev@npm:^3.0.0": + version: 3.0.0 + resolution: "abbrev@npm:3.0.0" + checksum: 10/2ceee14efdeda42ef7355178c1069499f183546ff7112b3efe79c1edef09d20ad9c17939752215fb8f7fcf48d10e6a7c0aa00136dc9cf4d293d963718bb1d200 languageName: node linkType: hard @@ -4020,46 +3272,27 @@ __metadata: linkType: hard "acorn-walk@npm:^8.1.1": - version: 8.3.2 - resolution: "acorn-walk@npm:8.3.2" - checksum: 10/57dbe2fd8cf744f562431775741c5c087196cd7a65ce4ccb3f3981cdfad25cd24ad2bad404997b88464ac01e789a0a61e5e355b2a84876f13deef39fb39686ca - languageName: node - linkType: hard - -"acorn@npm:^8.12.0, acorn@npm:^8.12.1, acorn@npm:^8.5.0, acorn@npm:^8.9.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" - bin: - acorn: bin/acorn - checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10/871386764e1451c637bb8ab9f76f4995d408057e9909be6fb5ad68537ae3375d85e6a6f170b98989f44ab3ff6c74ad120bc2779a3d577606e7a0cd2b4efcaf77 languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" +"acorn@npm:^8.11.0, acorn@npm:^8.12.1, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" bin: acorn: bin/acorn - checksum: 10/b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: "npm:^4.3.4" - checksum: 10/c478fec8f79953f118704d007a38f2a185458853f5c45579b9669372bd0e12602e88dc2ad0233077831504f7cd6fcc8251c383375bba5eaaf563b102938bda26 + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10/3db6d8d4651f2aa1a9e4af35b96ab11a7607af57a24f3bc721a387eaa3b5f674e901f0a648b0caefd48f3fd117c7761b79a3b55854e2aebaa96c3f32cf76af84 languageName: node linkType: hard @@ -4110,14 +3343,14 @@ __metadata: linkType: hard "ajv@npm:^8.0.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": - version: 8.13.0 - resolution: "ajv@npm:8.13.0" + version: 8.17.1 + resolution: "ajv@npm:8.17.1" dependencies: fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.4.1" - checksum: 10/4ada268c9a6e44be87fd295df0f0a91267a7bae8dbc8a67a2d5799c3cb459232839c99d18b035597bb6e3ffe88af6979f7daece854f590a81ebbbc2dfa80002c + checksum: 10/ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33 languageName: node linkType: hard @@ -4147,9 +3380,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10/1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac languageName: node linkType: hard @@ -4218,7 +3451,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.3.0, aria-query@npm:^5.0.0": +"aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -4227,22 +3460,20 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:~5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: "npm:^2.0.5" - checksum: 10/e5da608a7c4954bfece2d879342b6c218b6b207e2d9e5af270b5e38ef8418f02d122afdc948b68e32649b849a38377785252059090d66fa8081da95d1609c0d2 +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10/b2fe9bc98bd401bc322ccb99717c1ae2aaf53ea0d468d6e7aebdc02fac736e4a99b46971ee05b783b08ade23c675b2d8b60e4a1222a95f6e27bc4d2a0bfdcc03 languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.4" - checksum: 10/53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10/0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 languageName: node linkType: hard @@ -4267,13 +3498,6 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10/5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" @@ -4303,26 +3527,26 @@ __metadata: linkType: hard "array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/d9d2f6f27584de92ec7995bc931103e6de722cd2498bdbfc4cba814fc3e52f056050a93be883018811f7c0a35875f5056584a0e940603a5e5934f0279896aebe + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10/f9b992fa0775d8f7c97abc91eb7f7b2f0ed8430dd9aeb9fdc2967ac4760cdd7fc2ef7ead6528fef40c7261e4d790e117808ce0d3e7e89e91514d4963a531cd01 languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/33f20006686e0cbe844fde7fd290971e8366c6c5e3380681c2df15738b1df766dd02c7784034aeeb3b037f65c496ee54de665388288edb323a2008bb550f77ea + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10/473534573aa4b37b1d80705d0ce642f5933cccf5617c9f3e8a56686e9815ba93d469138e86a1f25d2fe8af999c3d24f54d703ec1fc2db2e6778d46d0f4ac951e languageName: node linkType: hard @@ -4339,19 +3563,18 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.3" - es-errors: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.3" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" is-array-buffer: "npm:^3.0.4" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10/0221f16c1e3ec7b67da870ee0e1f12b825b5f9189835392b59a22990f715827561a4f4cd5330dc7507de272d8df821be6cd4b0cb569babf5ea4be70e365a2f3d + checksum: 10/4821ebdfe7d699f910c7f09bc9fa996f09b96b80bccb4f5dd4b59deae582f6ad6e505ecef6376f8beac1eda06df2dbc89b70e82835d104d6fcabd33c1aed1ae9 languageName: node linkType: hard @@ -4369,10 +3592,17 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10/1a09379937d846f0ce7614e75071c12826945d4e417db634156bf0e4673c495989302f52186dfa9767a1d9181794554717badd193ca2bbab046ef1da741d8efd + languageName: node + linkType: hard + "async@npm:^3.2.3": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 10/323c3615c3f0ab1ac25a6f953296bc0ac3213d5e0f1c0debdb12964e55963af288d570293c11e44f7967af58c06d2a88d0ea588c86ec0fbf62fa98037f604a0f + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10/cb6e0561a3c01c4b56a799cc8bab6ea5fef45f069ab32500b6e19508db270ef2dffa55e5aed5865c5526e9907b1f8be61b27530823b411ffafb5e1538c86c368 languageName: node linkType: hard @@ -4418,20 +3648,20 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.10.0 - resolution: "axe-core@npm:4.10.0" - checksum: 10/6158489a7a704edc98bd30ed56243b8280c5203c60e095a2feb5bff95d9bf2ef10becfe359b1cbc8601338418999c26cf4eee704181dedbcb487f4d63a06d8d5 + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 10/a69423b2ff16c15922c4ea7cf9cc5112728a2817bbe0f2cc212248d648885ffd1ba554e3a341dfc289cd9e67fc0d06f333b5c6837c5c38ca6652507381216fc1 languageName: node linkType: hard -"axios@npm:^1.6.0, axios@npm:^1.6.8": - version: 1.6.8 - resolution: "axios@npm:1.6.8" +"axios@npm:^1.6.0": + version: 1.7.9 + resolution: "axios@npm:1.7.9" dependencies: follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10/3f9a79eaf1d159544fca9576261ff867cbbff64ed30017848e4210e49f3b01e97cf416390150e6fdf6633f336cd43dc1151f890bbd09c3c01ad60bb0891eee63 + checksum: 10/b7a5f660ea53ba9c2a745bf5ad77ad8bf4f1338e13ccc3f9f09f810267d6c638c03dac88b55dae8dc98b79c57d2d6835be651d58d2af97c174f43d289a9fd007 languageName: node linkType: hard @@ -4521,24 +3751,27 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" dependencies: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/94561959cb12bfa80867c9eeeace7c3d48d61707d33e55b4c3fdbe82fc745913eb2dbfafca62aef297421b38aadcb58550e5943f50fbcebbeefd70ce2bed4b74 + checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b languageName: node linkType: hard @@ -4598,15 +3831,6 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1 - languageName: node - linkType: hard - "braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -4616,45 +3840,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.10, browserslist@npm:^4.22.2": - version: 4.23.0 - resolution: "browserslist@npm:4.23.0" - dependencies: - caniuse-lite: "npm:^1.0.30001587" - electron-to-chromium: "npm:^1.4.668" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: 10/496c3862df74565dd942b4ae65f502c575cbeba1fa4a3894dad7aa3b16130dc3033bc502d8848147f7b625154a284708253d9598bcdbef5a1e34cf11dc7bad8e - languageName: node - linkType: hard - -"browserslist@npm:^4.23.1": - version: 4.23.2 - resolution: "browserslist@npm:4.23.2" - dependencies: - caniuse-lite: "npm:^1.0.30001640" - electron-to-chromium: "npm:^1.4.820" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.1.0" - bin: - browserslist: cli.js - checksum: 10/326a98b1c39bcc9a99b197f15790dc28e122b1aead3257c837421899377ac96239123f26868698085b3d9be916d72540602738e1f857e86a387e810af3fda6e5 - languageName: node - linkType: hard - -"browserslist@npm:^4.23.3": - version: 4.24.0 - resolution: "browserslist@npm:4.24.0" +"browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" dependencies: - caniuse-lite: "npm:^1.0.30001663" - electron-to-chromium: "npm:^1.5.28" - node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10/26c1b8ba257a0b51b102080ba9d42945af2abaa8c4cf6da21cd47b3f123fc1e81640203b293214356c2c17d9d265bb3a5ed428b6d302f383576dd6ce8fd5036c + checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 languageName: node linkType: hard @@ -4700,11 +3896,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.3 - resolution: "cacache@npm:18.0.3" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": "npm:^3.1.0" + "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -4712,11 +3908,11 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10/d4c161f071524bb636334b8cf94780c014e29c180a886b8184da8f2f44d2aca88d5664797c661e9f74bdbd34697c2f231ed7c24c256cecbb0a0563ad1ada2219 + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10/ea026b27b13656330c2bbaa462a88181dcaa0435c1c2e705db89b31d9bdf7126049d6d0445ba746dca21454a0cfdf1d6f47fd39d34c8c8435296b30bc5738a13 languageName: node linkType: hard @@ -4727,16 +3923,35 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" dependencies: - es-define-property: "npm:^1.0.0" es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" + checksum: 10/6e30c621170e45f1fd6735e84d02ee8e02a3ab95cb109499d5308cbe5d1e84d0cd0e10b48cc43c76aa61450ae1b03a7f89c37c10fc0de8d4998b42aab0f268cc + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 + set-function-length: "npm:^1.2.2" + checksum: 10/659b03c79bbfccf0cde3a79e7d52570724d7290209823e1ca5088f94b52192dc1836b82a324d0144612f816abb2f1734447438e38d9dafe0b3f82c2a1b9e3bce + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + get-intrinsic: "npm:^1.2.6" + checksum: 10/c39a8245f68cdb7c1f5eea7b3b1e3a7a90084ea6efebb78ebc454d698ade2c2bb42ec033abc35f1e596d62496b6100e9f4cdfad1956476c510130e2cda03266d languageName: node linkType: hard @@ -4768,41 +3983,27 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001616 - resolution: "caniuse-lite@npm:1.0.30001616" - checksum: 10/779c126bbe4be99500f52bf4f03df27058a26a4f37a335288bfef8859078edbd42a0fa75acd74464154c5e8c74c62f7248be4af8db3af3ed705bd989fb160569 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001640": - version: 1.0.30001642 - resolution: "caniuse-lite@npm:1.0.30001642" - checksum: 10/8d80ea82be453ae0fdfea8766d82740a4945c1b99189650f29bfc458d4e235d7e99027a8f8bc5a4228d8c4457ba896315284b0703f300353ad5f09d8e693de10 +"caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001696 + resolution: "caniuse-lite@npm:1.0.30001696" + checksum: 10/7230d3258e73daf769d1dcc46546282343970218b357b097a868176306d0ce1dd45f57d3a9ea09817dca0fc70effd3408bf4555d33238c14bb4b54b8e88d213c languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001646, caniuse-lite@npm:^1.0.30001663": - version: 1.0.30001664 - resolution: "caniuse-lite@npm:1.0.30001664" - checksum: 10/ff237f6bbb59564d2a7219fe9a799a59692403115500f7548a77f1f6b82e33fd136375003f80c8df88a64048f699f9f917292ca4cac0dd8a789d2d35fba6269b - languageName: node - linkType: hard - -"chai@npm:^5.1.1": - version: 5.1.1 - resolution: "chai@npm:5.1.1" +"chai@npm:^5.1.2": + version: 5.1.2 + resolution: "chai@npm:5.1.2" dependencies: assertion-error: "npm:^2.0.1" check-error: "npm:^2.1.1" deep-eql: "npm:^5.0.1" loupe: "npm:^3.1.0" pathval: "npm:^2.0.0" - checksum: 10/ee67279a5613bd36dc1dc13660042429ae2f1dc5a9030a6abcf381345866dfb5bce7bc10b9d74c8de86b6f656489f654bbbef3f3361e06925591e6a00c72afff + checksum: 10/e8c2bbc83cb5a2f87130d93056d4cfbbe04106e12aa798b504816dbe3fa538a9f68541b472e56cbf0f54558b501d7e31867d74b8218abcd5a8cc8ba536fba46c languageName: node linkType: hard -"chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.4.1": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -4833,10 +4034,10 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.3.0, chalk@npm:~5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea +"chalk@npm:^5.3.0, chalk@npm:^5.4.1": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10/29df3ffcdf25656fed6e95962e2ef86d14dfe03cd50e7074b06bad9ffbbf6089adbb40f75c00744d843685c8d008adaf3aed31476780312553caf07fa86e5bc7 languageName: node linkType: hard @@ -4861,17 +4062,17 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10/b63cb1f73d171d140a2ed8154ee6566c8ab775d3196b0e03a2a94b5f6a0ce7777ee5685ca56849403c8d17bd457a6540672f9a60696a6137c7a409097495b82c languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: 10/b5fbdae5bf00c96fa3213de919f2b2617a942bfcb891cdf735fbad2a6f4f3c25d42e3f2b1703328619d352c718b46b9e18999fd3af7ef86c26c91db6fae1f0da + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10/1762bed739774903bf5915fe3045c3120fc3c7f7d929d88e566447ea38944937a6370ccb687278318c43c24f837ad22dac780bed67c066336815557b8cf558c6 languageName: node linkType: hard @@ -4883,9 +4084,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.3.1 - resolution: "cjs-module-lexer@npm:1.3.1" - checksum: 10/6629188d5ce74b57e5dce2222db851b5496a8d65b533a05957fb24089a3cec8d769378013c375a954c5a0f7522cde6a36d5a65bfd88f5575cb2de3176046fa8e + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 10/d2b92f919a2dedbfd61d016964fce8da0035f827182ed6839c97cac56e8a8077cfa6a59388adfe2bc588a19cef9bbe830d683a76a6e93c51f65852062cfe2591 languageName: node linkType: hard @@ -4896,13 +4097,6 @@ __metadata: languageName: node linkType: hard -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - "cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" @@ -5032,6 +4226,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^13.1.0": + version: 13.1.0 + resolution: "commander@npm:13.1.0" + checksum: 10/d3b4b79e6be8471ddadacbb8cd441fe82154d7da7393b50e76165a9e29ccdb74fa911a186437b9a211d0fc071db6051915c94fb8ef16d77511d898e9dbabc6af + languageName: node + linkType: hard + "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -5039,40 +4240,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:~12.1.0": - version: 12.1.0 - resolution: "commander@npm:12.1.0" - checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93 - languageName: node - linkType: hard - -"commitizen@npm:^4.0.3": - version: 4.3.0 - resolution: "commitizen@npm:4.3.0" - dependencies: - cachedir: "npm:2.3.0" - cz-conventional-changelog: "npm:3.3.0" - dedent: "npm:0.7.0" - detect-indent: "npm:6.1.0" - find-node-modules: "npm:^2.1.2" - find-root: "npm:1.1.0" - fs-extra: "npm:9.1.0" - glob: "npm:7.2.3" - inquirer: "npm:8.2.5" - is-utf8: "npm:^0.2.1" - lodash: "npm:4.17.21" - minimist: "npm:1.2.7" - strip-bom: "npm:4.0.0" - strip-json-comments: "npm:3.1.1" - bin: - commitizen: bin/commitizen - cz: bin/git-cz - git-cz: bin/git-cz - checksum: 10/45a82b7fdeb901654b39de37567995ef99c6e33e02406b25dd1059a75f880d9cd593fa4d52a32b2e70baef8754bb32c1bf8e5b9d9336f32087bf7f451cb3f72c - languageName: node - linkType: hard - -"commitizen@npm:^4.3.1": +"commitizen@npm:^4.0.3, commitizen@npm:^4.3.1": version: 4.3.1 resolution: "commitizen@npm:4.3.1" dependencies: @@ -5168,16 +4336,16 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^5.0.0": - version: 5.0.0 - resolution: "cosmiconfig-typescript-loader@npm:5.0.0" +"cosmiconfig-typescript-loader@npm:^6.1.0": + version: 6.1.0 + resolution: "cosmiconfig-typescript-loader@npm:6.1.0" dependencies: - jiti: "npm:^1.19.1" + jiti: "npm:^2.4.1" peerDependencies: "@types/node": "*" - cosmiconfig: ">=8.2" - typescript: ">=4" - checksum: 10/ccbb367fe92e623207cb33a85c1fe2e2b592e2af845b38c39c0781e0b05c1a72642eec9bea1ed589d0ac95b47c5d1f232f43cbbe0f68b6218f7d887d9813f850 + cosmiconfig: ">=9" + typescript: ">=5" + checksum: 10/e8b28b08759753c46a991e3d4db675480ea0081da9c098e426a89f4a12395e448c3090536d1ec1cb7adb5d7beb0ea266b7717053e3adbc283806a3b62339b68d languageName: node linkType: hard @@ -5259,14 +4427,14 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce + checksum: 10/0d52657d7ae36eb130999dffff1168ec348687b48dd38e2ff59992ed916c88d328cf1d07ff4a4a10bc78de5e1c23f04b306d569e42f7a2293915c081e4dfee86 languageName: node linkType: hard @@ -5286,12 +4454,13 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^4.1.0": - version: 4.1.0 - resolution: "cssstyle@npm:4.1.0" +"cssstyle@npm:^4.2.1": + version: 4.2.1 + resolution: "cssstyle@npm:4.2.1" dependencies: - rrweb-cssom: "npm:^0.7.1" - checksum: 10/8ca9e2d1f1b24f93bb5f3f20a7a1e271e58060957880e985ee55614e196a798ffab309ec6bac105af8a439a6764546761813835ebb7f929d60823637ee838a8f + "@asamuzakjp/css-color": "npm:^2.8.2" + rrweb-cssom: "npm:^0.8.0" + checksum: 10/e287234f2fd4feb1d79217480f48356f398cc11b9d17d39e6624f7dc1bf4b51d1e2c49f12b1a324834b445c17cbbf83ae5d3ba22c89a6b229f86bcebeda746a8 languageName: node linkType: hard @@ -5344,36 +4513,36 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/5919a39a18ee919573336158fd162fdf8ada1bc23a139f28543fd45fac48e0ea4a3ad3bfde91de124d4106e65c4a7525f6a84c20ba0797ec890a77a96d13a82a + is-data-view: "npm:^1.0.2" + checksum: 10/c10b155a4e93999d3a215d08c23eea95f865e1f510b2e7748fcae1882b776df1afe8c99f483ace7fc0e5a3193ab08da138abebc9829d12003746c5a338c4d644 languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/f33c65e58d8d0432ad79761f2e8a579818d724b5dc6dc4e700489b762d963ab30873c0f1c37d8f2ed12ef51c706d1195f64422856d25f067457aeec50cc40aac + is-data-view: "npm:^1.0.2" + checksum: 10/2a47055fcf1ab3ec41b00b6f738c6461a841391a643c9ed9befec1117c1765b4d492661d97fb7cc899200c328949dca6ff189d2c6537d96d60e8a02dfe3c95f7 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" is-data-view: "npm:^1.0.1" - checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db + checksum: 10/fa3bdfa0968bea6711ee50375094b39f561bce3f15f9e558df59de9c25f0bdd4cddc002d9c1d70ac7772ebd36854a7e22d1761e7302a934e6f1c2263bcf44aa2 languageName: node linkType: hard @@ -5384,15 +4553,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:^4.4.0": + version: 4.4.0 + resolution: "debug@npm:4.4.0" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/0073c3bcbd9cb7d71dd5f6b55be8701af42df3e56e911186dfa46fac3a5b9eb7ce7f377dd1d3be6db8977221f8eb333d945216f645cf56f6b688cd484837d255 + checksum: 10/1847944c2e3c2c732514b93d11886575625686056cd765336212dc15de2d2b29612b6cd80e1afba767bb8e1803b778caf9973e98169ef1a24a7a7009e1820367 languageName: node linkType: hard @@ -5405,34 +4574,10 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5": - version: 4.3.5 - resolution: "debug@npm:4.3.5" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10/cb6eab424c410e07813ca1392888589972ce9a32b8829c6508f5e1f25f3c3e70a76731610ae55b4bbe58d1a2fffa1424b30e97fa8d394e49cd2656a9643aedd2 - languageName: node - linkType: hard - -"debug@npm:^4.3.6, debug@npm:~4.3.6": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a - languageName: node - linkType: hard - "decimal.js@npm:^10.4.3": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 10/de663a7bc4d368e3877db95fcd5c87b965569b58d16cdc4258c063d231ca7118748738df17cd638f7e9dd0be8e34cec08d7234b20f1f2a756a52fc5a38b188d0 + version: 10.5.0 + resolution: "decimal.js@npm:10.5.0" + checksum: 10/714d49cf2f2207b268221795ede330e51452b7c451a0c02a770837d2d4faed47d603a729c2aa1d952eb6c4102d999e91c9b952c1aa016db3c5cba9fc8bf4cda2 languageName: node linkType: hard @@ -5462,32 +4607,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.0.5": - version: 2.2.3 - resolution: "deep-equal@npm:2.2.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.5" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.2" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.13" - checksum: 10/1ce49d0b71d0f14d8ef991a742665eccd488dfc9b3cada069d4d7a86291e591c92d2589c832811dea182b4015736b210acaaebce6184be356c1060d176f5a05f - languageName: node - linkType: hard - "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -5529,7 +4648,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -5603,15 +4722,6 @@ __metadata: languageName: node linkType: hard -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10/fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -5654,6 +4764,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10/5add88a3d68d42d6e6130a0cac450b7c2edbe73364bbd2fc334564418569bea97c6943a8fcd70e27130bf32afc236f30982fc4905039b703f23e9e0433c29934 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -5672,24 +4793,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.668": - version: 1.4.756 - resolution: "electron-to-chromium@npm:1.4.756" - checksum: 10/fb3dfaf729453d01c6de88413fc67fedeaa4b30952b9bf66461d4c6ff017f1414b9f613d8edf65f6c39f68e97143f99d1c56b3fb922b8abe8a75a2f054ede21b - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.820": - version: 1.4.828 - resolution: "electron-to-chromium@npm:1.4.828" - checksum: 10/5962877ab1239f93683729b07403ffa89559aad358b863d11f40edbc073a79414238296a628bc602a07eedcf41e9fa01b4a84d6813237dfeb4183b0e387b6136 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.28": - version: 1.5.29 - resolution: "electron-to-chromium@npm:1.5.29" - checksum: 10/a87354db605ffdb89618c328ecc492846f8685f5ba040b9c8b511ef7a1a8e0c8999eb1ce2ea7bac30624637200f31dd1da5dc0cb3b2841ea828790f894a9ec37 +"electron-to-chromium@npm:^1.5.73": + version: 1.5.90 + resolution: "electron-to-chromium@npm:1.5.90" + checksum: 10/4c04d3735a602913e431ffccfb2a910c21763a4fc64d5a00c95ae17c8869a1ee92d31b58ddfb8a00b47fe7b1061c037ad5526799d5e67883360a12b821eb2a5a languageName: node linkType: hard @@ -5701,9 +4808,9 @@ __metadata: linkType: hard "emoji-regex@npm:^10.3.0": - version: 10.3.0 - resolution: "emoji-regex@npm:10.3.0" - checksum: 10/b9b084ebe904f13bb4b66ee4c29fb41a7a4a1165adcc33c1ce8056c0194b882cc91ebdc782f1a779b5d7ea7375c5064643a7734893d7c657b44c5c6b9d7bf1e7 + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: 10/76bb92c5bcf0b6980d37e535156231e4a9d0aa6ab3b9f5eabf7690231d5aa5d5b8e516f36e6804cbdd0f1c23dfef2a60c40ab7bb8aedd890584281a565b97c50 languageName: node linkType: hard @@ -5731,12 +4838,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.1": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" + version: 5.18.0 + resolution: "enhanced-resolve@npm:5.18.0" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10/e8e03cb7a4bf3c0250a89afbd29e5ec20e90ba5fcd026066232a0754864d7d0a393fa6fc0e5379314a6529165a1834b36731147080714459d98924520410d8f5 + checksum: 10/e88463ef97b68d40d0da0cd0c572e23f43dba0be622d6d44eae5cafed05f0c5dac43e463a83a86c4f70186d029357f82b56d9e1e47e8fc91dce3d6602f8bd6ce languageName: node linkType: hard @@ -5777,150 +4884,132 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" dependencies: - array-buffer-byte-length: "npm:^1.0.1" - arraybuffer.prototype.slice: "npm:^1.0.3" + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - data-view-buffer: "npm:^1.0.1" - data-view-byte-length: "npm:^1.0.1" - data-view-byte-offset: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.4" - get-symbol-description: "npm:^1.0.2" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.0" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - internal-slot: "npm:^1.0.7" - is-array-buffer: "npm:^3.0.4" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.1" - is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.3" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.13" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" + is-data-view: "npm:^1.0.2" + is-regex: "npm:^1.2.1" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" - regexp.prototype.flags: "npm:^1.5.2" - safe-array-concat: "npm:^1.1.2" - safe-regex-test: "npm:^1.0.3" - string.prototype.trim: "npm:^1.2.9" - string.prototype.trimend: "npm:^1.0.8" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.3" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.2" - typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.2" - typed-array-length: "npm:^1.0.6" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10/2da795a6a1ac5fc2c452799a409acc2e3692e06dc6440440b076908617188899caa562154d77263e3053bcd9389a07baa978ab10ac3b46acc399bd0c77be04cb + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10/31a321966d760d88fc2ed984104841b42f4f24fc322b246002b9be0af162e03803ee41fcc3cf8be89e07a27ba3033168f877dd983703cb81422ffe5322a27582 languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10/f8dc9e660d90919f11084db0a893128f3592b781ce967e4fccfb8f3106cb83e400a4032c559184ec52ee1dbd4b01e7776c7cd0b3327b1961b1a4a7008920fe78 languageName: node linkType: hard -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 languageName: node linkType: hard -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 10/bc2194befbe55725f9489098626479deee3c801eda7e83ce0dff2eb266a28dc808edb9b623ff01d31ebc1328f09d661333d86b601036692c2e3c1a6942319433 - languageName: node - linkType: hard - -"es-iterator-helpers@npm:^1.0.19": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" + es-abstract: "npm:^1.23.6" es-errors: "npm:^1.3.0" es-set-tostringtag: "npm:^2.0.3" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.7" - iterator.prototype: "npm:^1.1.2" - safe-array-concat: "npm:^1.1.2" - checksum: 10/980a8081cf6798fe17fcea193b0448d784d72d76aca7240b10813207c67e3dc0d8a23992263870c4fc291da5a946935b0c56dec4fa1a9de8fee0165e4fa1fc58 + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.4" + safe-array-concat: "npm:^1.1.3" + checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1": - version: 1.5.2 - resolution: "es-module-lexer@npm:1.5.2" - checksum: 10/65b437022293fadba1f720edb0d79090e72a20f107407fb79127755f6d659f27100eec1c55c425ed3af34063586848399bb1924fe913680f8ed903f7b6290c1b - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.5.4": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: 10/f29c7c97a58eb17640dcbd71bd6ef754ad4f58f95c3073894573d29dae2cad43ecd2060d97ed5b866dfb7804d5590fb7de1d2c5339a5fceae8bd60b580387fc5 +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.4, es-module-lexer@npm:^1.6.0": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10/807ee7020cc46a9c970c78cad1f2f3fc139877e5ebad7f66dbfbb124d451189ba1c48c1c632bd5f8ce1b8af2caef3fca340ba044a410fa890d17b080a59024bb languageName: node linkType: hard "es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" dependencies: es-errors: "npm:^1.3.0" - checksum: 10/f8910cf477e53c0615f685c5c96210591841850871b81924fcf256bfbaa68c254457d994a4308c60d15b20805e7f61ce6abc669375e01a5349391a8c1767584f + checksum: 10/54fe77de288451dae51c37bfbfe3ec86732dc3778f98f3eb3bdb4bf48063b2c0b8f9c93542656986149d08aa5be3204286e2276053d19582b76753f1a2728867 languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: - get-intrinsic: "npm:^1.2.4" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10/7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + hasown: "npm:^2.0.2" + checksum: 10/86814bf8afbcd8966653f731415888019d4bc4aca6b6c354132a7a75bb87566751e320369654a101d23a91c87a85c79b178bcf40332839bd347aff437c4fb65f languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": +"es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" dependencies: @@ -5929,44 +5018,46 @@ __metadata: languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b - languageName: node - linkType: hard - -"esbuild@npm:^0.20.1": - version: 0.20.2 - resolution: "esbuild@npm:0.20.2" - dependencies: - "@esbuild/aix-ppc64": "npm:0.20.2" - "@esbuild/android-arm": "npm:0.20.2" - "@esbuild/android-arm64": "npm:0.20.2" - "@esbuild/android-x64": "npm:0.20.2" - "@esbuild/darwin-arm64": "npm:0.20.2" - "@esbuild/darwin-x64": "npm:0.20.2" - "@esbuild/freebsd-arm64": "npm:0.20.2" - "@esbuild/freebsd-x64": "npm:0.20.2" - "@esbuild/linux-arm": "npm:0.20.2" - "@esbuild/linux-arm64": "npm:0.20.2" - "@esbuild/linux-ia32": "npm:0.20.2" - "@esbuild/linux-loong64": "npm:0.20.2" - "@esbuild/linux-mips64el": "npm:0.20.2" - "@esbuild/linux-ppc64": "npm:0.20.2" - "@esbuild/linux-riscv64": "npm:0.20.2" - "@esbuild/linux-s390x": "npm:0.20.2" - "@esbuild/linux-x64": "npm:0.20.2" - "@esbuild/netbsd-x64": "npm:0.20.2" - "@esbuild/openbsd-x64": "npm:0.20.2" - "@esbuild/sunos-x64": "npm:0.20.2" - "@esbuild/win32-arm64": "npm:0.20.2" - "@esbuild/win32-ia32": "npm:0.20.2" - "@esbuild/win32-x64": "npm:0.20.2" +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10/17faf35c221aad59a16286cbf58ef6f080bf3c485dff202c490d074d8e74da07884e29b852c245d894eac84f73c58330ec956dfd6d02c0b449d75eb1012a3f9b + languageName: node + linkType: hard + +"esbuild@npm:^0.24.2": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.2" + "@esbuild/android-arm": "npm:0.24.2" + "@esbuild/android-arm64": "npm:0.24.2" + "@esbuild/android-x64": "npm:0.24.2" + "@esbuild/darwin-arm64": "npm:0.24.2" + "@esbuild/darwin-x64": "npm:0.24.2" + "@esbuild/freebsd-arm64": "npm:0.24.2" + "@esbuild/freebsd-x64": "npm:0.24.2" + "@esbuild/linux-arm": "npm:0.24.2" + "@esbuild/linux-arm64": "npm:0.24.2" + "@esbuild/linux-ia32": "npm:0.24.2" + "@esbuild/linux-loong64": "npm:0.24.2" + "@esbuild/linux-mips64el": "npm:0.24.2" + "@esbuild/linux-ppc64": "npm:0.24.2" + "@esbuild/linux-riscv64": "npm:0.24.2" + "@esbuild/linux-s390x": "npm:0.24.2" + "@esbuild/linux-x64": "npm:0.24.2" + "@esbuild/netbsd-arm64": "npm:0.24.2" + "@esbuild/netbsd-x64": "npm:0.24.2" + "@esbuild/openbsd-arm64": "npm:0.24.2" + "@esbuild/openbsd-x64": "npm:0.24.2" + "@esbuild/sunos-x64": "npm:0.24.2" + "@esbuild/win32-arm64": "npm:0.24.2" + "@esbuild/win32-ia32": "npm:0.24.2" + "@esbuild/win32-x64": "npm:0.24.2" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -6002,88 +5093,12 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10/663215ab7e599651e00d61b528a63136e1f1d397db8b9c3712540af928c9476d61da95aefa81b7a8dfc7a9fdd7616fcf08395c27be68be8c99953fb461863ce4 - languageName: node - linkType: hard - -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": + "@esbuild/netbsd-arm64": optional: true "@esbuild/netbsd-x64": optional: true + "@esbuild/openbsd-arm64": + optional: true "@esbuild/openbsd-x64": optional: true "@esbuild/sunos-x64": @@ -6096,14 +5111,14 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10/d2ff2ca84d30cce8e871517374d6c2290835380dc7cd413b2d49189ed170d45e407be14de2cb4794cf76f75cf89955c4714726ebd3de7444b3046f5cab23ab6b + checksum: 10/95425071c9f24ff88bf61e0710b636ec0eb24ddf8bd1f7e1edef3044e1221104bbfa7bbb31c18018c8c36fa7902c5c0b843f829b981ebc89160cf5eebdaa58f4 languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.1.2": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10/a1e07fea2f15663c30e40b9193d658397846ffe28ce0a3e4da0d8e485fedfeca228ab846aee101a05015829adf39f9934ff45b2a3fca47bed37a29646bd05cd3 +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 languageName: node linkType: hard @@ -6128,14 +5143,14 @@ __metadata: languageName: node linkType: hard -"eslint-compat-utils@npm:^0.5.0": - version: 0.5.1 - resolution: "eslint-compat-utils@npm:0.5.1" +"eslint-compat-utils@npm:^0.6.0": + version: 0.6.4 + resolution: "eslint-compat-utils@npm:0.6.4" dependencies: semver: "npm:^7.5.4" peerDependencies: eslint: ">=6.0.0" - checksum: 10/ac65ac1c6107cf19f63f5fc17cea361c9cb1336be7356f23dbb0fac10979974b4622e13e950be43cbf431801f2c07f7dab448573181ccf6edc0b86d5b5304511 + checksum: 10/97f08f4aa8d9a1bc1087aaeceab46a5fa65a6d70703c1a2f2cd533562381208fdd0a293ce0f63ad607f1e697ddb348ef1076b02f5afa83c70f4a07ca0dcec90e languageName: node linkType: hard @@ -6150,18 +5165,18 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-typescript@npm:^3.6.3": - version: 3.6.3 - resolution: "eslint-import-resolver-typescript@npm:3.6.3" +"eslint-import-resolver-typescript@npm:^3.7.0": + version: 3.7.0 + resolution: "eslint-import-resolver-typescript@npm:3.7.0" dependencies: "@nolyfill/is-core-module": "npm:1.0.39" - debug: "npm:^4.3.5" + debug: "npm:^4.3.7" enhanced-resolve: "npm:^5.15.0" - eslint-module-utils: "npm:^2.8.1" fast-glob: "npm:^3.3.2" get-tsconfig: "npm:^4.7.5" is-bun-module: "npm:^1.0.2" is-glob: "npm:^4.0.3" + stable-hash: "npm:^0.0.4" peerDependencies: eslint: "*" eslint-plugin-import: "*" @@ -6171,11 +5186,26 @@ __metadata: optional: true eslint-plugin-import-x: optional: true - checksum: 10/5f9956dbbd0becc3d6c6cb945dad0e5e6f529cfd0f488d5688f3c59840cd7f4a44ab6aee0f54b5c4188134dab9a01cb63c1201767bde7fc330b7c1a14747f8ac + checksum: 10/8158730c11e562c56ed9bf7236dc75bce35b6992dc32c39ac2f4177ab77fca97b95999850204a6458054243607b54aee88c028a61fed4184f24f425fa1afff01 + languageName: node + linkType: hard + +"eslint-json-compat-utils@npm:^0.2.1": + version: 0.2.1 + resolution: "eslint-json-compat-utils@npm:0.2.1" + dependencies: + esquery: "npm:^1.6.0" + peerDependencies: + eslint: "*" + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + "@eslint/json": + optional: true + checksum: 10/083272c0cdbc6acd9fe9bfe939e0c76493a426400141203d7f0e76344d5874c5a88535c59300045e4c6f95baa5084eff512013f82bcd9e7426404c785e2ea55d languageName: node linkType: hard -"eslint-module-utils@npm:^2.8.1, eslint-module-utils@npm:^2.9.0": +"eslint-module-utils@npm:^2.12.0": version: 2.12.0 resolution: "eslint-module-utils@npm:2.12.0" dependencies: @@ -6187,9 +5217,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.30.0": - version: 2.30.0 - resolution: "eslint-plugin-import@npm:2.30.0" +"eslint-plugin-import@npm:^2.31.0": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" dependencies: "@rtsao/scc": "npm:^1.1.0" array-includes: "npm:^3.1.8" @@ -6199,7 +5229,7 @@ __metadata: debug: "npm:^3.2.7" doctrine: "npm:^2.1.0" eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.9.0" + eslint-module-utils: "npm:^2.12.0" hasown: "npm:^2.0.2" is-core-module: "npm:^2.15.1" is-glob: "npm:^4.0.3" @@ -6208,19 +5238,21 @@ __metadata: object.groupby: "npm:^1.0.3" object.values: "npm:^1.2.0" semver: "npm:^6.3.1" + string.prototype.trimend: "npm:^1.0.8" tsconfig-paths: "npm:^3.15.0" peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 10/a5f85dfe76e27286c28a01d137769726ce3f758bcc03aa6b6f9e18700a40a08f57239f82e07efcab763c4b03a02d425edcc29fbecf40aad0124286978c6bc63c + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: 10/6b76bd009ac2db0615d9019699d18e2a51a86cb8c1d0855a35fb1b418be23b40239e6debdc6e8c92c59f1468ed0ea8d7b85c817117a113d5cc225be8a02ad31c languageName: node linkType: hard -"eslint-plugin-jsonc@npm:^2.16.0": - version: 2.16.0 - resolution: "eslint-plugin-jsonc@npm:2.16.0" +"eslint-plugin-jsonc@npm:^2.19.1": + version: 2.19.1 + resolution: "eslint-plugin-jsonc@npm:2.19.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - eslint-compat-utils: "npm:^0.5.0" + eslint-compat-utils: "npm:^0.6.0" + eslint-json-compat-utils: "npm:^0.2.1" espree: "npm:^9.6.1" graphemer: "npm:^1.4.0" jsonc-eslint-parser: "npm:^2.0.4" @@ -6228,15 +5260,15 @@ __metadata: synckit: "npm:^0.6.0" peerDependencies: eslint: ">=6.0.0" - checksum: 10/bec880a4d6f0cd8ba37ae3a6528477d3161b41ca7b885ed43c34bed95d09b30fd1d277bfa9e487164f5a8aad265f3b075a4b479c20811fe0dd18c25b6835cf56 + checksum: 10/ff013d5ff00bf5705405ab8ab04729edb540beaf2e3f434a4f92ca0f99416e6df76abdaceef12e60d1133dc08a746c68291634c9dde9c73230ff794b9313ae26 languageName: node linkType: hard -"eslint-plugin-jsx-a11y@npm:^6.10.0": - version: 6.10.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.0" +"eslint-plugin-jsx-a11y@npm:^6.10.2": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" dependencies: - aria-query: "npm:~5.1.3" + aria-query: "npm:^5.3.2" array-includes: "npm:^3.1.8" array.prototype.flatmap: "npm:^1.3.2" ast-types-flow: "npm:^0.0.8" @@ -6244,72 +5276,70 @@ __metadata: axobject-query: "npm:^4.1.0" damerau-levenshtein: "npm:^1.0.8" emoji-regex: "npm:^9.2.2" - es-iterator-helpers: "npm:^1.0.19" hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^3.3.5" language-tags: "npm:^1.0.9" minimatch: "npm:^3.1.2" object.fromentries: "npm:^2.0.8" safe-regex-test: "npm:^1.0.3" - string.prototype.includes: "npm:^2.0.0" + string.prototype.includes: "npm:^2.0.1" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 10/d66e5e541a5a747d8a7ffd6e45b79c9da416b42be5891c259f3d9af63ed8897b5ff67373b00682ecdfc04fe2a2bc9df9c23b2f1749a228221d2dae0914543303 + checksum: 10/388550798548d911e2286d530a29153ca00434a06fcfc0e31e0dda46a5e7960005e532fb29ce1ccbf1e394a3af3e5cf70c47ca43778861eacc5e3ed799adb79c languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.6.2": - version: 4.6.2 - resolution: "eslint-plugin-react-hooks@npm:4.6.2" +"eslint-plugin-react-hooks@npm:^5.1.0": + version: 5.1.0 + resolution: "eslint-plugin-react-hooks@npm:5.1.0" peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/5a0680941f34e70cf505bcb6082df31a3e445d193ee95a88ff3483041eb944f4cefdaf7e81b0eb1feb4eeceee8c7c6ddb8a2a6e8c4c0388514a42e16ac7b7a69 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 10/b6778fd9e1940b06868921309e8b269426e17eda555816d4b71def4dcf0572de1199fdb627ac09ce42160b9569a93cd9b0fd81b740ab4df98205461c53997a43 languageName: node linkType: hard -"eslint-plugin-react@npm:^7.37.0": - version: 7.37.0 - resolution: "eslint-plugin-react@npm:7.37.0" +"eslint-plugin-react@npm:^7.37.4": + version: 7.37.4 + resolution: "eslint-plugin-react@npm:7.37.4" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" - array.prototype.flatmap: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.3" array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.0.19" + es-iterator-helpers: "npm:^1.2.1" estraverse: "npm:^5.3.0" hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" object.entries: "npm:^1.1.8" object.fromentries: "npm:^2.0.8" - object.values: "npm:^1.2.0" + object.values: "npm:^1.2.1" prop-types: "npm:^15.8.1" resolve: "npm:^2.0.0-next.5" semver: "npm:^6.3.1" - string.prototype.matchall: "npm:^4.0.11" + string.prototype.matchall: "npm:^4.0.12" string.prototype.repeat: "npm:^1.0.0" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10/ae005a5e4bdcbf43cda0e5297f5ee8badbbcc18ce6c3f83ac4141173242b27c8a067372061af745ae490c18eef2c3257985bcd240cee85dec262ca875347e8fc + checksum: 10/c538c10665c87cb90a0bcc4efe53a758570db10997d079d31474a9760116ef5584648fa22403d889ca672df8071bda10b40434ea0499e5ee8360bc5c8aba1679 languageName: node linkType: hard -"eslint-plugin-storybook@npm:^0.9.0": - version: 0.9.0 - resolution: "eslint-plugin-storybook@npm:0.9.0" +"eslint-plugin-storybook@npm:^0.11.2": + version: 0.11.2 + resolution: "eslint-plugin-storybook@npm:0.11.2" dependencies: - "@storybook/csf": "npm:^0.0.1" - "@typescript-eslint/utils": "npm:^5.62.0" - requireindex: "npm:^1.2.0" + "@storybook/csf": "npm:^0.1.11" + "@typescript-eslint/utils": "npm:^8.8.1" ts-dedent: "npm:^2.2.0" peerDependencies: - eslint: ">=6" - checksum: 10/5207e016cca6e095ddce911acfa12e973092fdc1ec716dfb54be70b859ac9be7ebde9ba6baa04a0e2fc4e34c772c4e9261d36a78c2cd5a873eeebf6087073b9f + eslint: ">=8" + checksum: 10/104c2d329f2c2bf1819015adc8d0e67c0216ed5b284b4524f968412424106c97c4056720e3c26a6fc50016f872acb80c156a68009409898fe5ae40909eeafe47 languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -6319,54 +5349,54 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.0.2": - version: 8.1.0 - resolution: "eslint-scope@npm:8.1.0" +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/4c34a12fbeb0677822a9e93e81f2027e39e6f27557c17bc1e5ff76debbd41e748c3673517561792bda9e276245f89fbfd9b0b24fcec3b33a04ee2196729b3489 + checksum: 10/cd9ab60d5a68f3a0fcac04d1cff5a7383d0f331964d5f1c446259123caec5b3ccc542284d07846e4f4d1389da77750821cc9a6e1ce18558c674977351666f9a6 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.0.0, eslint-visitor-keys@npm:^4.1.0": - version: 4.1.0 - resolution: "eslint-visitor-keys@npm:4.1.0" - checksum: 10/3fb5bd1b2f36db89d0ac57ddd66d36ccd3b1e3cddb2a55a0f9f6f1c85268cfcc1cc32e7eda4990e3423107a120dd254fb6cb52d6154cf81d344d8c3fa671f7c2 +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 10/9651b3356b01760e586b4c631c5268c0e1a85236e3292bf754f0472f465bf9a856c0ddc261fceace155334118c0151778effafbab981413dbf9288349343fa25 languageName: node linkType: hard -"eslint@npm:^9.11.1": - version: 9.11.1 - resolution: "eslint@npm:9.11.1" +"eslint@npm:^9.19.0": + version: 9.19.0 + resolution: "eslint@npm:9.19.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.11.0" - "@eslint/config-array": "npm:^0.18.0" - "@eslint/core": "npm:^0.6.0" - "@eslint/eslintrc": "npm:^3.1.0" - "@eslint/js": "npm:9.11.1" - "@eslint/plugin-kit": "npm:^0.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.10.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.19.0" + "@eslint/plugin-kit": "npm:^0.2.5" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.3.0" - "@nodelib/fs.walk": "npm:^1.2.8" + "@humanwhocodes/retry": "npm:^0.4.1" "@types/estree": "npm:^1.0.6" "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.0.2" - eslint-visitor-keys: "npm:^4.0.0" - espree: "npm:^10.1.0" + eslint-scope: "npm:^8.2.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" @@ -6376,14 +5406,11 @@ __metadata: ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" json-stable-stringify-without-jsonify: "npm:^1.0.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" peerDependencies: jiti: "*" peerDependenciesMeta: @@ -6391,18 +5418,18 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10/38de03a51044a5f708c93302cff5e860355447d424f1a21fa67f5b2f0541d092d3f3807c0242820d9795553a3f1165db51769e9a042816334d05c86f015fdfef + checksum: 10/850d19fd6a34702d1e3d9bdad6aef84a20a5c2de006a8fa6380843384b13944b180232ddd74b8725ffcdf8f296399037f0e8eb4783d5f7393f13c059112b843d languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.1.0": - version: 10.2.0 - resolution: "espree@npm:10.2.0" +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" dependencies: - acorn: "npm:^8.12.0" + acorn: "npm:^8.14.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.1.0" - checksum: 10/365076a963ca84244c1e2d36e4f812362d21cfa7e7df10d67f7b82b759467796df81184721d153c4e235d9ef5eb5b4d044167dd66be3be00f53a21a515b1bfb1 + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/3412d44d4204c9e29d6b5dd0277400cfa0cd68495dc09eae1b9ce79d0c8985c1c5cc09cb9ba32a1cd963f48a49b0c46bdb7736afe395a300aa6bb1c0d86837e8 languageName: node linkType: hard @@ -6427,7 +5454,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0": +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -6506,7 +5533,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:~8.0.1": +"execa@npm:^8.0.1": version: 8.0.1 resolution: "execa@npm:8.0.1" dependencies: @@ -6539,6 +5566,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.1.0": + version: 1.1.0 + resolution: "expect-type@npm:1.1.0" + checksum: 10/05fca80ddc7d493a89361f783c6b000750fa04a8226bc24701f3b90adb0efc2fb467f2a0baaed4015a02d8b9034ef5bb87521df9dba980f50b1105bd596ef833 + languageName: node + linkType: hard + "expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -6577,16 +5611,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + micromatch: "npm:^4.0.8" + checksum: 10/dcc6432b269762dd47381d8b8358bf964d8f4f60286ac6aa41c01ade70bda459ff2001b516690b96d5365f68a49242966112b5d5cc9cd82395fa8f9d017c90ad languageName: node linkType: hard @@ -6604,12 +5638,19 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.6 + resolution: "fast-uri@npm:3.0.6" + checksum: 10/43c87cd03926b072a241590e49eca0e2dfe1d347ddffd4b15307613b42b8eacce00a315cf3c7374736b5f343f27e27ec88726260eb03a758336d507d6fbaba0a + languageName: node + linkType: hard + "fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" + version: 1.19.0 + resolution: "fastq@npm:1.19.0" dependencies: reusify: "npm:^1.0.4" - checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69 + checksum: 10/20457acfb15946f8ea80496da296a0d4930919638315627f093269d302f46fa97eaac3ad180746910edcd6f7163b8125620c30a41427267ffacd10ab67b1c806 languageName: node linkType: hard @@ -6649,15 +5690,6 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429 - languageName: node - linkType: hard - "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -6758,49 +5790,49 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: 10/ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 languageName: node linkType: hard "follow-redirects@npm:^1.15.6": - version: 1.15.6 - resolution: "follow-redirects@npm:1.15.6" + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" peerDependenciesMeta: debug: optional: true - checksum: 10/70c7612c4cab18e546e36b991bbf8009a1a41cf85354afe04b113d1117569abf760269409cb3eb842d9f7b03d62826687086b081c566ea7b1e6613cf29030bf7 + checksum: 10/e3ab42d1097e90d28b913903841e6779eb969b62a64706a3eb983e894a5db000fbd89296f45f08885a0e54cd558ef62e81be1165da9be25a6c44920da10f424c languageName: node linkType: hard "for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" + version: 0.3.4 + resolution: "for-each@npm:0.3.4" dependencies: - is-callable: "npm:^1.1.3" - checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 + is-callable: "npm:^1.2.7" + checksum: 10/c3bc4ebe8bd51655919dd9132c7ad0703c267bd0d737093e8424f46feea2eeaa73ecc54237346435258548d07aaeac643deb47de9b872c359e0c37cf0507a7f1 languageName: node linkType: hard "foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" dependencies: cross-spawn: "npm:^7.0.0" signal-exit: "npm:^4.0.1" - checksum: 10/087edd44857d258c4f73ad84cb8df980826569656f2550c341b27adf5335354393eec24ea2fabd43a253233fb27cee177ebe46bd0b7ea129c77e87cb1e9936fb + checksum: 10/e3a60480f3a09b12273ce2c5fcb9514d98dd0e528f58656a1b04680225f918d60a2f81f6a368f2f3b937fcee9cfc0cbf16f1ad9a0bc6a3a6e103a84c9a90087e languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" +"form-data@npm:^4.0.0, form-data@npm:^4.0.1": + version: 4.0.1 + resolution: "form-data@npm:4.0.1" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + checksum: 10/6adb1cff557328bc6eb8a68da205f9ae44ab0e88d4d9237aaf91eed591ffc64f77411efb9016af7d87f23d0a038c45a788aa1c6634e51175c4efa36c2bc53774 languageName: node linkType: hard @@ -6823,15 +5855,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -6874,15 +5897,17 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" functions-have-names: "npm:^1.2.3" - checksum: 10/4d40be44d4609942e4e90c4fff77a811fa936f4985d92d2abfcf44f673ba344e2962bf223a33101f79c1a056465f36f09b072b9c289d7660ca554a12491cd5a2 + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10/25b9e5bea936732a6f0c0c08db58cc0d609ac1ed458c6a07ead46b32e7b9bf3fe5887796c3f83d35994efbc4fdde81c08ac64135b2c399b8f2113968d44082bc languageName: node linkType: hard @@ -6908,29 +5933,27 @@ __metadata: linkType: hard "get-east-asian-width@npm:^1.0.0": - version: 1.2.0 - resolution: "get-east-asian-width@npm:1.2.0" - checksum: 10/c9b280e7c7c67fb89fa17e867c4a9d1c9f1321aba2a9ee27bff37fb6ca9552bccda328c70a80c1f83a0e39ba1b7e3427e60f47823402d19e7a41b83417ec047a - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.1": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 10/8e8e779eb28701db7fdb1c8cab879e39e6ae23f52dadd89c8aed05869671cee611a65d4f8557b83e981428623247d8bc5d0c7a4ef3ea7a41d826e73600112ad8 languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7": + version: 1.2.7 + resolution: "get-intrinsic@npm:1.2.7" dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d + get-proto: "npm:^1.0.0" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10/4f7149c9a826723f94c6d49f70bcb3df1d3f9213994fab3668f12f09fa72074681460fb29ebb6f135556ec6372992d63802386098791a8f09cfa6f27090fa67b languageName: node linkType: hard @@ -6948,6 +5971,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -6962,23 +5995,23 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.5" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - checksum: 10/e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + get-intrinsic: "npm:^1.2.6" + checksum: 10/a353e3a9595a74720b40fb5bae3ba4a4f826e186e83814d93375182384265676f59e49998b9cdfac4a2225ce95a3d32a68f502a2c5619303987f1c183ab80494 languageName: node linkType: hard "get-tsconfig@npm:^4.7.5": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10/3fb5a8ad57b9633eaea085d81661e9e5c9f78b35d8f8689eaf8b8b45a2a3ebf3b3422266d4d7df765e308cc1e6231648d114803ab3d018332e29916f2c1de036 + checksum: 10/5259b5c99a1957114337d9d0603b4a305ec9e29fa6cac7d2fbf634ba6754a0cc88bfd281a02416ce64e604b637d3cb239185381a79a5842b17fb55c097b38c4b languageName: node linkType: hard @@ -7044,18 +6077,19 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.12 - resolution: "glob@npm:10.3.12" +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.3.6" - minimatch: "npm:^9.0.1" - minipass: "npm:^7.0.4" - path-scurry: "npm:^1.10.2" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs - checksum: 10/9e8186abc22dc824b5dd86cefd8e6b5621a72d1be7f68bacc0fd681e8c162ec5546660a6ec0553d6a74757a585e655956c7f8f1a6d24570e8d865c307323d178 + checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac languageName: node linkType: hard @@ -7106,7 +6140,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": +"globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" dependencies: @@ -7116,20 +6150,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10/288e95e310227bbe037076ea81b7c2598ccbc3122d87abc6dab39e1eec309aa14f0e366a98cdc45237ffcfcbad3db597778c0068217dcb1950fef6249104e1b1 - languageName: node - linkType: hard - "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -7137,19 +6157,17 @@ __metadata: languageName: node linkType: hard -"google-libphonenumber@npm:^3.2.38": - version: 3.2.38 - resolution: "google-libphonenumber@npm:3.2.38" - checksum: 10/77dd031f53eb357871fa64b7ec3279f0e4dca03428a947bec804c2ca5d9b556310358e08ea7a5cc2f1bf8ff6e05208926d3ed91d22739fac3e331b11957de666 +"google-libphonenumber@npm:^3.2.40": + version: 3.2.40 + resolution: "google-libphonenumber@npm:3.2.40" + checksum: 10/787627acb2fd3467dcf294e17184ece3b67aa3250e361e12fbbab9c0b6aaf0e5b75e97943ba152f2321581aadceb4180f41299ec56461543fd6f3021f54e6363 languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10/94e296d69f92dc1c0768fcfeecfb3855582ab59a7c75e969d5f96ce50c3d201fd86d5a2857c22565764d5bb8a816c7b1e58f133ec318cd56274da36c5e3fb1a1 languageName: node linkType: hard @@ -7167,24 +6185,21 @@ __metadata: languageName: node linkType: hard -"happy-dom@npm:^12.5.0": - version: 12.10.3 - resolution: "happy-dom@npm:12.10.3" +"happy-dom@npm:^15.11.0": + version: 15.11.7 + resolution: "happy-dom@npm:15.11.7" dependencies: - css.escape: "npm:^1.5.1" entities: "npm:^4.5.0" - iconv-lite: "npm:^0.6.3" webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^2.0.0" whatwg-mimetype: "npm:^3.0.0" - checksum: 10/de82ddd1c981f24a95011c62c2d03e12c4c48f86c0234fa7a1a309d8fa1481885956c783fb3cc56371fa49193d2323822a583196156b10db179e7ac754ef7864 + checksum: 10/82fb8505a940ebc2b732d1c70ae4ba08128cc82f2d469702f73e541d3bf10fc69b726386f8aaf579ccd2697f85e86dee87aa9d4f229b781fb05628d733fc93d7 languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10/90fb1b24d40d2472bcd1c8bd9dd479037ec240215869bdbff97b2be83acef57d28f7e96bdd003a21bed218d058b49097f4acc8821c05b1629cc5d48dd7bfcccd languageName: node linkType: hard @@ -7211,21 +6226,23 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10/7eaed07728eaa28b77fadccabce53f30de467ff186a766872669a833ac2e87d8922b76a22cc58339d7e0277aefe98d6d00762113b27a97cdf65adcf958970935 languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10/959385c98696ebbca51e7534e0dc723ada325efa3475350951363cce216d27373e0259b63edb599f72eb94d6cde8577b4b2375f080b303947e560f85692834fa languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -7234,7 +6251,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0, hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -7243,10 +6260,10 @@ __metadata: languageName: node linkType: hard -"highlight.js@npm:^11.9.0": - version: 11.9.0 - resolution: "highlight.js@npm:11.9.0" - checksum: 10/44b3e42bc096a2e5207e514826a10ff7671de315a7216ebaeba76593d4f16dfe3f7078390cb5c2b08eae657694fef4fb65d775376db48480c829c83fbc4f157a +"highlight.js@npm:^11.10.0": + version: 11.11.1 + resolution: "highlight.js@npm:11.11.1" + checksum: 10/205272f12f2c8ab1760452a75c58b043b11129cf3a5d2a9c0c90d43993580d0f5c385a73a4b8aba197eef20c0ec37d64000e6b35c4ed5991324f4c2dc78f4e43 languageName: node linkType: hard @@ -7292,23 +6309,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10/405fe582bba461bfe5c7e2f8d752b384036854488b828ae6df6a587c654299cbb2c50df38c4b6ab303502c3c5e029a793fbaac965d1e86ee0be03faceb554d63 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.5": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.6": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" dependencies: - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:4" - checksum: 10/6679d46159ab3f9a5509ee80c3a3fc83fba3a920a5e18d32176c3327852c3c00ad640c0c4210a8fd70ea3c4a6d3a1b375bf01942516e7df80e2646bdc77658ab + checksum: 10/784b628cbd55b25542a9d85033bdfd03d4eda630fb8b3c9477959367f3be95dc476ed2ecbb9836c359c7c698027fc7b45723a302324433590f45d6c1706e8c13 languageName: node linkType: hard @@ -7333,16 +6340,16 @@ __metadata: languageName: node linkType: hard -"husky@npm:^9.1.6": - version: 9.1.6 - resolution: "husky@npm:9.1.6" +"husky@npm:^9.1.7": + version: 9.1.7 + resolution: "husky@npm:9.1.7" bin: husky: bin.js - checksum: 10/421ccd8850378231aaefd70dbe9e4f1549b84ffe3a6897f93a202242bbc04e48bd498169aef43849411105d9fcf7c192b757d42661e28d06b934a609a4eb8771 + checksum: 10/c2412753f15695db369634ba70f50f5c0b7e5cb13b673d0826c411ec1bd9ddef08c1dad89ea154f57da2521d2605bd64308af748749b27d08c5f563bcd89975f languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -7368,9 +6375,9 @@ __metadata: linkType: hard "ignore@npm:^5.2.0, ignore@npm:^5.3.1": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 10/0a884c2fbc8c316f0b9f92beaf84464253b73230a4d4d286697be45fca081199191ca33e1c2e82d9e5f851f5e9a48a78e25a35c951e7eb41e59f150db3530065 + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard @@ -7385,14 +6392,14 @@ __metadata: linkType: hard "import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: pkg-dir: "npm:^4.2.0" resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: 10/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + checksum: 10/0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 languageName: node linkType: hard @@ -7471,23 +6478,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10/3e66720508831153ecf37d13def9f6856f9f2960989ec8a0a0476c98f887fca9eff0163127466485cb825c900c2d6fc601aa9117b7783b90ffce23a71ea5d053 - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10/cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10/1d5219273a3dab61b165eddf358815eefc463207db33c20fcfca54717da02e3f492003757721f972fd0bf21e4b426cab389c5427b99ceea4b8b670dc88ee6d4a languageName: node linkType: hard @@ -7501,23 +6499,14 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - checksum: 10/34a26213d981d58b30724ef37a1e0682f4040d580fa9ff58fdfdd3cefcb2287921718c63971c1c404951e7b747c50fdc7caf6e867e951353fa71b369c04c969b + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/ef1095c55b963cd0dcf6f88a113e44a0aeca91e30d767c475e7d746d28d1195b10c5076b94491a7a0cd85020ca6a4923070021d74651d093dc909e9932cf689b languageName: node linkType: hard @@ -7529,82 +6518,80 @@ __metadata: linkType: hard "is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2cf336fbf8cba3badcf526aa3d10384c30bab32615ac4831b74492eb4e843ccb7d8439a119c27f84bcf217d72024e611b1373f870f433b48f3fa57d3d1b863f1 + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10/7c2ac7efdf671e03265e74a043bcb1c0a32e226bc2a42dfc5ec8644667df668bbe14b91c08e6c1414f392f8cf86cd1d489b3af97756e2c7a49dd1ba63fd40ca6 languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - has-bigints: "npm:^1.0.1" - checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 + has-bigints: "npm:^1.0.2" + checksum: 10/10cf327310d712fe227cfaa32d8b11814c214392b6ac18c827f157e1e85363cf9c8e2a22df526689bd5d25e53b58cc110894787afb54e138e7c504174dba15fd languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-boolean-object@npm:^1.2.1": + version: 1.2.1 + resolution: "is-boolean-object@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10/5a15524635c9334ebbd668f20a6cbf023adceed5725ec96a50056d21ae65f52759d04a8fa7d7febf00ff3bc4e6d3837638eb84be572f287bcfd15f8b8facde43 languageName: node linkType: hard "is-bun-module@npm:^1.0.2": - version: 1.2.1 - resolution: "is-bun-module@npm:1.2.1" + version: 1.3.0 + resolution: "is-bun-module@npm:1.3.0" dependencies: semver: "npm:^7.6.3" - checksum: 10/1c2cbcf1a76991add1b640d2d7fe09848e8697a76f96e1289dff44133a48c97f5dc601d4a66d3f3a86217a77178d72d33d10d0c9e14194e58e70ec8df3eae41a + checksum: 10/b23d9ec7b4d4bfd89e4e72b5cd52e1bc153facad59fdd7394c656f8859a78740ef35996a2066240a32f39cc9a9da4b4eb69e68df3c71755a61ebbaf56d3daef0 languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 languageName: node linkType: hard -"is-core-module@npm:^2.13.0": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" - dependencies: - hasown: "npm:^2.0.0" - checksum: 10/d53bd0cc24b0a0351fb4b206ee3908f71b9bbf1c47e9c9e14e5f06d292af1663704d2abd7e67700d6487b2b7864e0d0f6f10a1edf1892864bdffcb197d1845a2 - languageName: node - linkType: hard - -"is-core-module@npm:^2.15.1": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" dependencies: hasown: "npm:^2.0.2" - checksum: 10/77316d5891d5743854bcef2cd2f24c5458fb69fbc9705c12ca17d54a2017a67d0693bbf1ba8c77af376c0eef6bf6d1b27a4ab08e4db4e69914c3789bdf2ceec5 + checksum: 10/452b2c2fb7f889cbbf7e54609ef92cf6c24637c568acc7e63d166812a0fb365ae8a504c333a29add8bdb1686704068caa7f4e4b639b650dde4f00a038b8941fb languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" is-typed-array: "npm:^1.1.13" - checksum: 10/4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 + checksum: 10/357e9a48fa38f369fd6c4c3b632a3ab2b8adca14997db2e4b3fe94c4cd0a709af48e0fb61b02c64a90c0dd542fd489d49c2d03157b05ae6c07f5e4dec9e730a8 languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10/3a811b2c3176fb31abee1d23d3dc78b6c65fd9c07d591fcb67553cab9e7f272728c3dd077d2d738b53f9a2103255b0a6e8dfc9568a7805c56a78b2563e8d1dec languageName: node linkType: hard @@ -7624,12 +6611,12 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/1b8e9e1bf2075e862315ef9d38ce6d39c43ca9d81d46f73b34473506992f4b0fbaadb47ec9b420a5e76afe3f564d9f1f0d9b552ef272cc2395e0f21d743c9c29 + call-bound: "npm:^1.0.3" + checksum: 10/0bfb145e9a1ba852ddde423b0926d2169ae5fe9e37882cde9e8f69031281a986308df4d982283e152396e88b86562ed2256cbaa5e6390fb840a4c25ab54b8a80 languageName: node linkType: hard @@ -7664,11 +6651,14 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10/5906ff51a856a5fbc6b90a90fce32040b0a6870da905f98818f1350f9acadfc9884f7c3dec833fce04b83dd883937b86a190b6593ede82e8b1af8b6c4ecf7cbd languageName: node linkType: hard @@ -7688,33 +6678,20 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-map@npm:^2.0.2, is-map@npm:^2.0.3": +"is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb languageName: node linkType: hard -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/a5922fb8779ab1ea3b8a9c144522b3d0bea5d9f8f23f7a72470e61e1e4df47714e28e0154ac011998b709cce260c3c9447ad3cd24a96c2f2a0abfdb2cbdc76c8 languageName: node linkType: hard @@ -7732,13 +6709,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - "is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" @@ -7755,29 +6725,31 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10/c42b7efc5868a5c9a4d8e6d3e9816e8815c611b09535c00fead18a1138455c5cb5e1887f0023a467ad3f9c419d62ba4dc3d9ba8bafe55053914d6d6454a945d2 languageName: node linkType: hard -"is-set@npm:^2.0.2, is-set@npm:^2.0.3": +"is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10/bc5402900dc62b96ebb2548bf5b0a0bcfacc2db122236fe3ab3b3e3c884293a0d5eb777e73f059bcbf8dc8563bb65eae972fee0fb97e38a9ae27c8678f62bcfe + call-bound: "npm:^1.0.3" + checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e languageName: node linkType: hard @@ -7795,21 +6767,24 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10/5277cb9e225a7cc8a368a72623b44a99f2cfa139659c6b203553540681ad4276bfc078420767aad0e73eef5f0bd07d4abf39a35d37ec216917879d11cebc1f8b languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10/db495c0d8cd0a7a66b4f4ef7fccee3ab5bd954cb63396e8ac4d32efe0e9b12fdfceb851d6c501216a71f4f21e5ff20fc2ee845a3d52d455e021c466ac5eb2db2 languageName: node linkType: hard @@ -7822,12 +6797,12 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10/f850ba08286358b9a11aee6d93d371a45e3c59b5953549ee1c1a9a55ba5c1dd1bd9952488ae194ad8f32a9cf5e79c8fa5f0cc4d78c00720aa0bbcf238b38062d + which-typed-array: "npm:^1.1.16" + checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 languageName: node linkType: hard @@ -7852,22 +6827,22 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.0 + resolution: "is-weakref@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 + call-bound: "npm:^1.0.2" + checksum: 10/89e627cc1763ea110574bb408fcf060ede47e70437d9278858bc939e3b3f7e4b7c558610b733da5f2ad6084d9f12b9c714b011ccf3fa771ec87e221c22bed910 languageName: node linkType: hard "is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - checksum: 10/40159582ff1b44fc40085f631baf19f56479b05af2faede65b4e6a0b6acab745c13fd070e35b475aafd8a1ee50879ba5a3f1265125b46bebdb446b6be1f62165 + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/1d5e1d0179beeed3661125a6faa2e59bfb48afda06fc70db807f178aa0ebebc3758fb6358d76b3d528090d5ef85148c345dcfbf90839592fe293e3e5e82f2134 languageName: node linkType: hard @@ -7927,15 +6902,15 @@ __metadata: linkType: hard "istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.2 - resolution: "istanbul-lib-instrument@npm:6.0.2" + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: "@babel/core": "npm:^7.23.9" "@babel/parser": "npm:^7.23.9" "@istanbuljs/schema": "npm:^0.1.3" istanbul-lib-coverage: "npm:^3.2.0" semver: "npm:^7.5.4" - checksum: 10/3aee19be199350182827679a137e1df142a306e9d7e20bb5badfd92ecc9023a7d366bc68e7c66e36983654a02a67401d75d8debf29fc6d4b83670fde69a594fc + checksum: 10/aa5271c0008dfa71b6ecc9ba1e801bf77b49dc05524e8c30d58aaf5b9505e0cd12f25f93165464d4266a518c5c75284ecb598fbd89fec081ae77d2c9d3327695 languageName: node linkType: hard @@ -7971,35 +6946,36 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" dependencies: - define-properties: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - reflect.getprototypeof: "npm:^1.0.4" - set-function-name: "npm:^2.0.1" - checksum: 10/b5013967ad8f28c9ca1be8e159eb10f591b8e46deae87476fe39d668c04374fe9158c815e8b6d2f45885b0a3fd842a8ba13f497ec762b3a0eff49bec278670b1 + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10/352bcf333f42189e65cc8cb2dcb94a5c47cf0a9110ce12aba788d405a980b5f5f3a06c79bf915377e1d480647169babd842ded0d898bed181bf6686e8e6823f6 languageName: node linkType: hard -"jackspeak@npm:^2.3.6": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" dependencies: "@isaacs/cliui": "npm:^8.0.2" "@pkgjs/parseargs": "npm:^0.11.0" dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 10/6e6490d676af8c94a7b5b29b8fd5629f21346911ebe2e32931c2a54210134408171c24cee1a109df2ec19894ad04a429402a8438cbf5cc2794585d35428ace76 + checksum: 10/96f8786eaab98e4bf5b2a5d6d9588ea46c4d06bbc4f2eb861fdd7b6b182b16f71d8a70e79820f335d52653b16d4843b29dd9cdcf38ae80406756db9199497cf3 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.9.1 - resolution: "jake@npm:10.9.1" + version: 10.9.2 + resolution: "jake@npm:10.9.2" dependencies: async: "npm:^3.2.3" chalk: "npm:^4.0.2" @@ -8007,7 +6983,7 @@ __metadata: minimatch: "npm:^3.1.2" bin: jake: bin/cli.js - checksum: 10/82603513de5a61bc12360d2b8ba2be9f6bb52495b73f4d1b541cdfef9e43314b132ca10e73d2b41e3c1ea16bf79ec30a64afc9b9e2d2c72a4d4575a8db61cbc8 + checksum: 10/3be324708f99f031e0aec49ef8fd872eb4583cbe8a29a0c875f554f6ac638ee4ea5aa759bb63723fd54f77ca6d7db851eaa78353301734ed3700db9cb109a0cd languageName: node linkType: hard @@ -8461,12 +7437,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.19.1": - version: 1.21.0 - resolution: "jiti@npm:1.21.0" +"jiti@npm:^2.4.1": + version: 2.4.2 + resolution: "jiti@npm:2.4.2" bin: - jiti: bin/jiti.js - checksum: 10/005a0239e50381b5c9919f59dbab86128367bd64872f3376dbbde54b6523f41bd134bf22909e2a509e38fd87e1c22125ca255b9b6b53e7df0fedd23f737334cc + jiti: lib/jiti-cli.mjs + checksum: 10/e2b07eb2e3fbb245e29ad288dddecab31804967fc84d5e01d39858997d2743b5e248946defcecf99272275a00284ecaf7ec88b8c841331324f0c946d8274414b languageName: node linkType: hard @@ -8507,21 +7483,21 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^25.0.1": - version: 25.0.1 - resolution: "jsdom@npm:25.0.1" +"jsdom@npm:^26.0.0": + version: 26.0.0 + resolution: "jsdom@npm:26.0.0" dependencies: - cssstyle: "npm:^4.1.0" + cssstyle: "npm:^4.2.1" data-urls: "npm:^5.0.0" decimal.js: "npm:^10.4.3" - form-data: "npm:^4.0.0" + form-data: "npm:^4.0.1" html-encoding-sniffer: "npm:^4.0.0" http-proxy-agent: "npm:^7.0.2" - https-proxy-agent: "npm:^7.0.5" + https-proxy-agent: "npm:^7.0.6" is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.12" - parse5: "npm:^7.1.2" - rrweb-cssom: "npm:^0.7.1" + nwsapi: "npm:^2.2.16" + parse5: "npm:^7.2.1" + rrweb-cssom: "npm:^0.8.0" saxes: "npm:^6.0.0" symbol-tree: "npm:^3.2.4" tough-cookie: "npm:^5.0.0" @@ -8529,24 +7505,24 @@ __metadata: webidl-conversions: "npm:^7.0.0" whatwg-encoding: "npm:^3.1.1" whatwg-mimetype: "npm:^4.0.0" - whatwg-url: "npm:^14.0.0" + whatwg-url: "npm:^14.1.0" ws: "npm:^8.18.0" xml-name-validator: "npm:^5.0.0" peerDependencies: - canvas: ^2.11.2 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true - checksum: 10/e6bf7250ddd2fbcf68da0ea041a0dc63545dc4bf77fa3ff40a46ae45b1dac1ca55b87574ab904d1f8baeeb547c52cec493a22f545d7d413b320011f41150ec49 + checksum: 10/8c230ee4657240bbbca6b4ebb484be53fc6a777a22a3357c80c5537222813666e3e1f54740bc13e769c461d9598ba7dac402c245949c6cef7ef7014ce6f36f01 languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" bin: jsesc: bin/jsesc - checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 + checksum: 10/20bd37a142eca5d1794f354db8f1c9aeb54d85e1f5c247b371de05d23a9751ecd7bd3a9c4fc5298ea6fa09a100dafb4190fa5c98c6610b75952c3487f3ce7967 languageName: node linkType: hard @@ -8673,9 +7649,9 @@ __metadata: linkType: hard "language-subtag-registry@npm:^0.3.20": - version: 0.3.22 - resolution: "language-subtag-registry@npm:0.3.22" - checksum: 10/5591f4abd775d1ab5945355a5ba894327d2d94c900607bdb69aac1bc5bb921dbeeeb5f616df95e8c0ae875501d19c1cfa0e852ece822121e95048deb34f2b4d2 + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 10/fe13ed74ab9f862db8e5747b98cc9aa08d52a19f85b5cdb4975cd364c8539bd2da3380e4560d2dbbd728ec33dff8a4b4421fcb2e5b1b1bdaa21d16f91a54d0d4 languageName: node linkType: hard @@ -8705,10 +7681,10 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:~3.1.2": - version: 3.1.2 - resolution: "lilconfig@npm:3.1.2" - checksum: 10/8058403850cfad76d6041b23db23f730e52b6c17a8c28d87b90766639ca0ee40c748a3e85c2d7bd133d572efabff166c4b015e5d25e01fd666cb4b13cfada7f0 +"lilconfig@npm:^3.1.3": + version: 3.1.3 + resolution: "lilconfig@npm:3.1.3" + checksum: 10/b932ce1af94985f0efbe8896e57b1f814a48c8dbd7fc0ef8469785c6303ed29d0090af3ccad7e36b626bfca3a4dc56cc262697e9a8dd867623cf09a39d54e4c3 languageName: node linkType: hard @@ -8728,36 +7704,36 @@ __metadata: languageName: node linkType: hard -"linkifyjs@npm:^4.1.0": - version: 4.1.3 - resolution: "linkifyjs@npm:4.1.3" - checksum: 10/7c17dac6a66fdea30e56b17d49d882a333833ec093993723738842b224c8cbd87bcddc6f51f2deac9529c868f162358d7acb0c44753b92832027ae761eceac1a +"linkifyjs@npm:^4.2.0": + version: 4.2.0 + resolution: "linkifyjs@npm:4.2.0" + checksum: 10/fdd72a2615d6ef288f7036937fb38c933368dd8732d3665e2e44ce855b3e3b42ba9f67a28c622172155b47264cb8b41681bfb93a1e74eee7b29bbe4f04087696 languageName: node linkType: hard -"lint-staged@npm:^15.2.10": - version: 15.2.10 - resolution: "lint-staged@npm:15.2.10" +"lint-staged@npm:^15.4.3": + version: 15.4.3 + resolution: "lint-staged@npm:15.4.3" dependencies: - chalk: "npm:~5.3.0" - commander: "npm:~12.1.0" - debug: "npm:~4.3.6" - execa: "npm:~8.0.1" - lilconfig: "npm:~3.1.2" - listr2: "npm:~8.2.4" - micromatch: "npm:~4.0.8" - pidtree: "npm:~0.6.0" - string-argv: "npm:~0.3.2" - yaml: "npm:~2.5.0" + chalk: "npm:^5.4.1" + commander: "npm:^13.1.0" + debug: "npm:^4.4.0" + execa: "npm:^8.0.1" + lilconfig: "npm:^3.1.3" + listr2: "npm:^8.2.5" + micromatch: "npm:^4.0.8" + pidtree: "npm:^0.6.0" + string-argv: "npm:^0.3.2" + yaml: "npm:^2.7.0" bin: lint-staged: bin/lint-staged.js - checksum: 10/ab6930cd633dbb5b6ec7c81fc06c65df41e9f80d93dd22e0d79c6e272cdfd8110a0fbdec60303d46a06b30bcd92261153630e2c937531b77ec5ae41e7e9d90d3 + checksum: 10/14a6a9cb9b5e8027b1347cb24e114839d618d343d5c724c26def7d45ca9b9a9b813b585531c68f5a3d13332407c2dba198987a73f0350df483d99a876ba69c60 languageName: node linkType: hard -"listr2@npm:~8.2.4": - version: 8.2.4 - resolution: "listr2@npm:8.2.4" +"listr2@npm:^8.2.5": + version: 8.2.5 + resolution: "listr2@npm:8.2.5" dependencies: cli-truncate: "npm:^4.0.0" colorette: "npm:^2.0.20" @@ -8765,7 +7741,7 @@ __metadata: log-update: "npm:^6.1.0" rfdc: "npm:^1.4.1" wrap-ansi: "npm:^9.0.0" - checksum: 10/344d2397e127bf802935925e95b54468eef745fbbaf9326eb33a1634ae2d6e86cdb527ef48cb83a19a50671955d39b3e2608c74db85530df07b5674f5de115e1 + checksum: 10/c76542f18306195e464fe10203ee679a7beafa9bf0dc679ebacb416387cca8f5307c1d8ba35483d26ba611dc2fac5a1529733dce28f2660556082fb7eebb79f9 languageName: node linkType: hard @@ -8887,7 +7863,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.21": +"lodash@npm:4.17.21, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -8924,7 +7900,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -8935,19 +7911,17 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1": - version: 3.1.1 - resolution: "loupe@npm:3.1.1" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10/56d71d64c5af109aaf2b5343668ea5952eed468ed2ff837373810e417bf8331f14491c6e4d38e08ff84a29cb18906e06e58ba660c53bd00f2989e1873fa2f54c +"loupe@npm:^3.1.0, loupe@npm:^3.1.2": + version: 3.1.3 + resolution: "loupe@npm:3.1.3" + checksum: 10/9e98c34daf0eba48ccc603595e51f2ae002110982d84879cf78c51de2c632f0c571dfe82ce4210af60c32203d06b443465c269bda925076fe6d9b612cc65c321 languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.2.2 - resolution: "lru-cache@npm:10.2.2" - checksum: 10/ff1a496d30b5eaec2c9079080965bb0cede203cf878371f7033a007f1e54cd4aa13cc8abf7ccec4c994a83a22ed5476e83a55bb57cc07e6c1547a42937e42c37 +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a languageName: node linkType: hard @@ -8960,15 +7934,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 - languageName: node - linkType: hard - "lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" @@ -8978,12 +7943,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.11": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.11, magic-string@npm:^0.30.17": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10/b784d2240252f5b1e755d487354ada4c672cbca16f045144f7185a75b059210e5fcca7be7be03ef1bac2ca754c4428b21d36ae64a9057ba429916f06b8c54eb2 + checksum: 10/2f71af2b0afd78c2e9012a29b066d2c8ba45a9cd0c8070f7fd72de982fb1c403b4e3afdb1dae00691d56885ede66b772ef6bedf765e02e3a7066208fe2fec4aa languageName: node linkType: hard @@ -9003,23 +7968,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" + minipass-fetch: "npm:^4.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - proc-log: "npm:^4.2.0" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10/11bae5ad6ac59b654dbd854f30782f9de052186c429dfce308eda42374528185a100ee40ac9ffdc36a2b6c821ecaba43913e4730a12f06f15e895ea9cb23fa59 + ssri: "npm:^12.0.0" + checksum: 10/fce0385840b6d86b735053dfe941edc2dd6468fda80fe74da1eeff10cbd82a75760f406194f2bc2fa85b99545b2bc1f84c08ddf994b21830775ba2d1a87e8bdf languageName: node linkType: hard @@ -9048,6 +8012,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd + languageName: node + linkType: hard + "mdurl@npm:^2.0.0": version: 2.0.0 resolution: "mdurl@npm:2.0.0" @@ -9069,7 +8040,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": +"merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 @@ -9083,17 +8054,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 10/a749888789fc15cac0e03273844dbd749f9f8e8d64e70c564bcf06a033129554c789bb9e30d7566d7ff6596611a08e58ac12cf2a05f6e3c9c47c50c4c7e12fa2 - languageName: node - linkType: hard - -"micromatch@npm:~4.0.8": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -9165,12 +8126,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": - version: 9.0.4 - resolution: "minimatch@npm:9.0.4" +"minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10/4cdc18d112b164084513e890d6323370db14c22249d536ad1854539577a895e690a27513dc346392f61a4a50afbbd8abc88f3f25558bfbbbb862cd56508b20f5 + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 languageName: node linkType: hard @@ -9197,18 +8158,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 10/c669948bec1373313aaa8f104b962a3ced9f45c49b26366a4b0ae27ccdfa9c5740d72c8a84d3f8623d7a61c5fc7afdfda44789008c078f61a62441142efc4a97 + checksum: 10/4b0772dbee77727b469dc5bfc371541d9aba1e243fbb46ddc1b9ff7efa4de4a4cf5ff3a359d6a3b3a460ca26df9ae67a9c93be26ab6417c225e49d63b52b2801 languageName: node linkType: hard @@ -9248,43 +8209,29 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": - version: 7.1.0 - resolution: "minipass@npm:7.1.0" - checksum: 10/0cfc1bc95bfce2a0cf69fcb5e7b92f62ee7159f2787356e66b5804dba73546e1653bbc70bf9bb32acb031e6d0d4b6249628a014644a597a7e4a14b441a510ba5 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 + minipass: "npm:^7.0.4" + rimraf: "npm:^5.0.5" + checksum: 10/622cb85f51e5c206a080a62d20db0d7b4066f308cb6ce82a9644da112367c3416ae7062017e631eb7ac8588191cfa4a9a279b8651c399265202b298e98c4acef languageName: node linkType: hard -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" bin: - mkdirp: bin/cmd.js - checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2 - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + mkdirp: dist/cjs/src/bin.js + checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba languageName: node linkType: hard @@ -9302,12 +8249,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" +"nanoid@npm:^3.3.8": + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" bin: nanoid: bin/nanoid.cjs - checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + checksum: 10/2d1766606cf0d6f47b6f0fdab91761bb81609b2e3d367027aff45e6ee7006f660fb7e7781f4a34799fe6734f1268eeed2e37a5fdee809ade0c2d4eb11b0f9c40 languageName: node linkType: hard @@ -9318,10 +8265,10 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10/b5734e87295324fabf868e36fb97c84b7d7f3156ec5f4ee5bf6e488079c11054f818290fc33804cef7b1ee21f55eeb14caea83e7dafae6492a409b3e573153e5 languageName: node linkType: hard @@ -9333,22 +8280,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.1.0 - resolution: "node-gyp@npm:10.1.0" + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/89e105e495e66cd4568af3cf79cdeb67d670eb069e33163c7781d3366470a30367c9bd8dea59e46db16370020139e5bf78b1fbc03284cb571754dfaa59744db5 + checksum: 10/5d07430e887a906f85c7c6ed87e8facb7ecd4ce42d948a2438c471df2e24ae6af70f4def114ec1a03127988d164648dda8d75fe666f3c4b431e53856379fdf13 languageName: node linkType: hard @@ -9359,28 +8306,21 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10/0f7607ec7db5ef1dc616899a5f24ae90c869b6a54c2d4f36ff6d84a282ab9343c7ff3ca3670fe4669171bb1e8a9b3e286e1ef1c131f09a83d70554f855d54f24 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: 10/241e5fa9556f1c12bafb83c6c3e94f8cf3d8f2f8f904906ecef6e10bcaa1d59aa61212d4651bec70052015fc54bd3fdcdbe7fc0f638a17e6685aa586c076ec4e +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" dependencies: - abbrev: "npm:^2.0.0" + abbrev: "npm:^3.0.0" bin: nopt: bin/nopt.js - checksum: 10/95a1f6dec8a81cd18cdc2fed93e6f0b4e02cf6bdb4501c848752c6e34f9883d9942f036a5e3b21a699047d8a448562d891e67492df68ec9c373e6198133337ae + checksum: 10/26ab456c51a96f02a9e5aa8d1b80ef3219f2070f3f3528a040e32fb735b1e651e17bdf0f1476988d3a46d498f35c65ed662d122f340d38ce4a7e71dd7b20c4bc languageName: node linkType: hard @@ -9423,17 +8363,10 @@ __metadata: languageName: node linkType: hard -"nprogress@npm:^0.2.0": - version: 0.2.0 - resolution: "nprogress@npm:0.2.0" - checksum: 10/1870a74c054c01899f89e85122d7548832d083b5fa5d3cc6aafc2d4f92901e15face402ef557be5b103aed7b6e1406c656b842dec32b553b4b052031ea1b0935 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.12": - version: 2.2.12 - resolution: "nwsapi@npm:2.2.12" - checksum: 10/172119e9ef492467ebfb337f9b5fd12a94d2b519377cde3f6ec2f74a86f6d5c00ef3873539bed7142f908ffca4e35383179be2319d04a563071d146bfa3f1673 +"nwsapi@npm:^2.2.16": + version: 2.2.16 + resolution: "nwsapi@npm:2.2.16" + checksum: 10/1e5e086cdd4ca4a45f414d37f49bf0ca81d84ed31c6871ac68f531917d2910845db61f77c6d844430dc90fda202d43fce9603024e74038675de95229eb834dba languageName: node linkType: hard @@ -9444,20 +8377,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 10/92f4989ed83422d56431bc39656d4c780348eb15d397ce352ade6b7fec08f973b53744bd41b94af021901e61acaf78fcc19e65bf464ecc0df958586a672700f0 - languageName: node - linkType: hard - -"object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10/4f6f544773a595da21c69a7531e0e1d6250670f4e09c55f47eb02c516035cfcb1b46ceb744edfd3ecb362309dbccb6d7f88e43bf42e4d4595ac10a329061053a +"object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 10/14cb973d8381c69e14d7f1c8c75044eb4caf04c6dabcf40ca5c2ce42dc2073ae0bb2a9939eeca142b0c05215afaa1cd5534adb7c8879c32cba2576e045ed8368 languageName: node linkType: hard @@ -9468,15 +8391,17 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" object-keys: "npm:^1.1.1" - checksum: 10/dbb22da4cda82e1658349ea62b80815f587b47131b3dd7a4ab7f84190ab31d206bbd8fe7e26ae3220c55b65725ac4529825f6142154211220302aa6b1518045d + checksum: 10/3fe28cdd779f2a728a9a66bd688679ba231a2b16646cd1e46b528fe7c947494387dda4bc189eff3417f3717ef4f0a8f2439347cf9a9aa3cef722fbfd9f615587 languageName: node linkType: hard @@ -9523,14 +8448,15 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" +"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10/db2e498019c354428c5dd30d02980d920ac365b155fce4dcf63eb9433f98ccf0f72624309e182ce7cc227c95e45d474e1d483418e60de2293dd23fa3ebe34903 + checksum: 10/f5ec9eccdefeaaa834b089c525663436812a65ff13de7964a1c3a9110f32054f2d58aa476a645bb14f75a79f3fe1154fb3e7bfdae7ac1e80affe171b2ef74bce languageName: node linkType: hard @@ -9619,62 +8545,63 @@ __metadata: version: 0.0.0-use.local resolution: "osc@workspace:." dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/preset-react": "npm:^7.24.7" - "@babel/preset-typescript": "npm:^7.24.7" - "@commitlint/cli": "npm:^19.5.0" - "@commitlint/config-conventional": "npm:^19.5.0" - "@dnd-kit/core": "npm:^6.1.0" - "@dnd-kit/modifiers": "npm:^7.0.0" - "@dnd-kit/sortable": "npm:^8.0.0" - "@eslint/compat": "npm:^1.1.1" - "@inertiajs/core": "npm:^1.2.0" - "@inertiajs/react": "npm:^1.2.0" + "@babel/core": "npm:^7.26.7" + "@babel/preset-react": "npm:^7.26.3" + "@babel/preset-typescript": "npm:^7.26.0" + "@commitlint/cli": "npm:^19.6.1" + "@commitlint/config-conventional": "npm:^19.6.0" + "@dnd-kit/core": "npm:^6.3.1" + "@dnd-kit/modifiers": "npm:^9.0.0" + "@dnd-kit/sortable": "npm:^10.0.0" + "@eslint/compat": "npm:^1.2.6" + "@eslint/json": "npm:^0.10.0" + "@inertiajs/core": "npm:^2.0.3" + "@inertiajs/react": "npm:^2.0.3" "@linaria/core": "npm:^6.2.0" - "@mantine/code-highlight": "npm:^7.13.0" - "@mantine/core": "npm:^7.13.0" - "@mantine/dates": "npm:^7.13.0" - "@mantine/dropzone": "npm:^7.13.0" - "@mantine/form": "npm:^7.13.0" - "@mantine/hooks": "npm:^7.13.0" - "@mantine/modals": "npm:^7.13.0" - "@mantine/notifications": "npm:^7.13.0" - "@mantine/tiptap": "npm:^7.13.0" - "@mantine/vanilla-extract": "npm:^7.13.0" - "@stylistic/eslint-plugin": "npm:^2.8.0" - "@tabler/icons-react": "npm:^3.18.0" - "@tanstack/eslint-plugin-query": "npm:^5.58.1" - "@tanstack/react-query": "npm:^5.56.2" - "@tanstack/react-query-devtools": "npm:^5.58.0" + "@mantine/code-highlight": "npm:^7.16.2" + "@mantine/core": "npm:^7.16.2" + "@mantine/dates": "npm:^7.16.2" + "@mantine/dropzone": "npm:^7.16.2" + "@mantine/form": "npm:^7.16.2" + "@mantine/hooks": "npm:^7.16.2" + "@mantine/modals": "npm:^7.16.2" + "@mantine/notifications": "npm:^7.16.2" + "@mantine/tiptap": "npm:^7.16.2" + "@mantine/vanilla-extract": "npm:^7.16.2" + "@stylistic/eslint-plugin": "npm:^3.0.1" + "@tabler/icons-react": "npm:^3.29.0" + "@tanstack/eslint-plugin-query": "npm:^5.66.0" + "@tanstack/react-query": "npm:^5.66.0" + "@tanstack/react-query-devtools": "npm:^5.66.0" "@testing-library/dom": "npm:^10.4.0" - "@testing-library/jest-dom": "npm:^6.5.0" - "@testing-library/react": "npm:^16.0.1" - "@testing-library/user-event": "npm:^14.5.2" - "@tiptap/core": "npm:^2.7.4" - "@tiptap/extension-code-block": "npm:^2.7.4" - "@tiptap/extension-dropcursor": "npm:^2.7.4" - "@tiptap/extension-gapcursor": "npm:^2.7.4" - "@tiptap/extension-highlight": "npm:^2.7.4" - "@tiptap/extension-history": "npm:^2.7.4" - "@tiptap/extension-horizontal-rule": "npm:^2.7.4" - "@tiptap/extension-link": "npm:^2.7.4" - "@tiptap/extension-subscript": "npm:^2.7.4" - "@tiptap/extension-superscript": "npm:^2.7.4" - "@tiptap/extension-text-align": "npm:^2.7.4" - "@tiptap/extension-underline": "npm:^2.7.4" - "@tiptap/pm": "npm:^2.7.4" - "@tiptap/react": "npm:^2.7.4" - "@tiptap/starter-kit": "npm:^2.7.4" - "@types/jest": "npm:^29.5.13" - "@types/lodash": "npm:^4.17.9" - "@types/node": "npm:^22.7.4" - "@types/react": "npm:^18.3.10" - "@types/react-dom": "npm:^18.3.0" - "@typescript-eslint/eslint-plugin": "npm:^8.7.0" - "@typescript-eslint/parser": "npm:^8.8.0" - "@vitejs/plugin-react": "npm:^4.3.1" - "@wyw-in-js/vite": "npm:^0.5.4" - "@xstate/react": "npm:^4.1.3" + "@testing-library/jest-dom": "npm:^6.6.3" + "@testing-library/react": "npm:^16.2.0" + "@testing-library/user-event": "npm:^14.6.1" + "@tiptap/core": "npm:^2.11.5" + "@tiptap/extension-code-block": "npm:^2.11.5" + "@tiptap/extension-dropcursor": "npm:^2.11.5" + "@tiptap/extension-gapcursor": "npm:^2.11.5" + "@tiptap/extension-highlight": "npm:^2.11.5" + "@tiptap/extension-history": "npm:^2.11.5" + "@tiptap/extension-horizontal-rule": "npm:^2.11.5" + "@tiptap/extension-link": "npm:^2.11.5" + "@tiptap/extension-subscript": "npm:^2.11.5" + "@tiptap/extension-superscript": "npm:^2.11.5" + "@tiptap/extension-text-align": "npm:^2.11.5" + "@tiptap/extension-underline": "npm:^2.11.5" + "@tiptap/pm": "npm:^2.11.5" + "@tiptap/react": "npm:^2.11.5" + "@tiptap/starter-kit": "npm:^2.11.5" + "@types/jest": "npm:^29.5.14" + "@types/lodash": "npm:^4.17.15" + "@types/node": "npm:^22.13.0" + "@types/react": "npm:^19.0.8" + "@types/react-dom": "npm:^19.0.3" + "@typescript-eslint/eslint-plugin": "npm:^8.22.0" + "@typescript-eslint/parser": "npm:^8.22.0" + "@vitejs/plugin-react": "npm:^4.3.4" + "@wyw-in-js/vite": "npm:^0.5.5" + "@xstate/react": "npm:^5.0.2" autoprefixer: "npm:^10.4.20" babel-loader: "npm:^9.2.1" babel-plugin-macros: "npm:^3.1.0" @@ -9682,49 +8609,60 @@ __metadata: commitizen: "npm:^4.3.1" dayjs: "npm:^1.11.13" dinero.js: "npm:^1.9.1" - eslint: "npm:^9.11.1" - eslint-import-resolver-typescript: "npm:^3.6.3" - eslint-plugin-import: "npm:^2.30.0" - eslint-plugin-jsonc: "npm:^2.16.0" - eslint-plugin-jsx-a11y: "npm:^6.10.0" - eslint-plugin-react: "npm:^7.37.0" - eslint-plugin-react-hooks: "npm:^4.6.2" - eslint-plugin-storybook: "npm:^0.9.0" + eslint: "npm:^9.19.0" + eslint-import-resolver-typescript: "npm:^3.7.0" + eslint-plugin-import: "npm:^2.31.0" + eslint-plugin-jsonc: "npm:^2.19.1" + eslint-plugin-jsx-a11y: "npm:^6.10.2" + eslint-plugin-react: "npm:^7.37.4" + eslint-plugin-react-hooks: "npm:^5.1.0" + eslint-plugin-storybook: "npm:^0.11.2" git-cz: "npm:^4.9.0" - google-libphonenumber: "npm:^3.2.38" + google-libphonenumber: "npm:^3.2.40" humanize-duration: "npm:^3.32.1" - husky: "npm:^9.1.6" + husky: "npm:^9.1.7" jest: "npm:^29.7.0" - jsdom: "npm:^25.0.1" + jsdom: "npm:^26.0.0" jsonc-eslint-parser: "npm:^2.4.0" - lint-staged: "npm:^15.2.10" + lint-staged: "npm:^15.4.3" lodash: "npm:^4.17.21" normalize-url: "npm:^8.0.1" - postcss: "npm:^8.4.47" + postcss: "npm:^8.5.1" postcss-preset-mantine: "npm:^1.17.0" postcss-simple-vars: "npm:^7.0.1" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" - react-error-boundary: "npm:^4.0.13" + react: "npm:^19.0.0" + react-dom: "npm:^19.0.0" + react-error-boundary: "npm:^5.0.0" react-html-props: "npm:^2.0.9" - react-icons: "npm:^5.3.0" + react-icons: "npm:^5.4.0" react-use-url: "npm:^1.0.5" ts-jest: "npm:^29.2.5" ts-node: "npm:^10.9.2" - typescript: "npm:^5.6.2" - use-inertia-form: "npm:^4.3.1" - vite: "npm:^5.4.8" + typescript: "npm:^5.7.3" + use-inertia-form: "npm:^4.5.0" + vite: "npm:^6.0.11" vite-plugin-dynamic-import: "npm:^1.6.0" vite-plugin-full-reload: "npm:^1.2.0" - vite-plugin-ruby: "npm:^5.1.0" - vite-tsconfig-paths: "npm:^5.0.1" - vitest: "npm:^2.1.1" - webpack: "npm:^5.95.0" - xstate: "npm:^5.18.2" - zustand: "npm:^5.0.0-rc.2" + vite-plugin-ruby: "npm:^5.1.1" + vite-tsconfig-paths: "npm:^5.1.4" + vitest: "npm:^3.0.4" + webpack: "npm:^5.97.1" + xstate: "npm:^5.19.2" + zustand: "npm:^5.0.3" languageName: unknown linkType: soft +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10/ab4bb3b8636908554fc19bf899e225444195092864cb61503a0d048fdaf662b04be2605b636a4ffeaf6e8811f6fcfa8cbb210ec964c0eb1a41eb853e1d5d2f41 + languageName: node + linkType: hard + "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -9779,12 +8717,10 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10/2ef48ccfc6dd387253d71bf502604f7893ed62090b2c9d73387f10006c342606b05233da0e4f29388227b61eb5aeface6197e166520c465c234552eeab2fe633 languageName: node linkType: hard @@ -9795,6 +8731,13 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -9823,12 +8766,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" +"parse5@npm:^7.2.1": + version: 7.2.1 + resolution: "parse5@npm:7.2.1" dependencies: - entities: "npm:^4.4.0" - checksum: 10/3c86806bb0fb1e9a999ff3a4c883b1ca243d99f45a619a0898dbf021a95a0189ed955c31b07fe49d342b54e814f33f2c9d7489198e8630dacd5477d413ec5782 + entities: "npm:^4.5.0" + checksum: 10/fd1a8ad1540d871e1ad6ca9bf5b67e30280886f1ce4a28052c0cb885723aa984d8cb1ec3da998349a6146960c8a84aa87b1a42600eb3b94495c7303476f2f88e languageName: node linkType: hard @@ -9874,13 +8817,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.2": - version: 1.10.2 - resolution: "path-scurry@npm:1.10.2" +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: lru-cache: "npm:^10.2.0" minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10/a2bbbe8dc284c49dd9be78ca25f3a8b89300e0acc24a77e6c74824d353ef50efbf163e64a69f4330b301afca42d0e2229be0560d6d616ac4e99d48b4062016b1 + checksum: 10/5e8845c159261adda6f09814d7725683257fcc85a18f329880ab4d7cc1d12830967eae5d5894e453f341710d5484b8fdbbd4d75181b4d6e1eb2f4dc7aeadc434 languageName: node linkType: hard @@ -9891,10 +8834,10 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.2": - version: 1.1.2 - resolution: "pathe@npm:1.1.2" - checksum: 10/f201d796351bf7433d147b92c20eb154a4e0ea83512017bf4ec4e492a5d6e738fb45798be4259a61aa81270179fce11026f6ff0d3fa04173041de044defe9d80 +"pathe@npm:^2.0.2": + version: 2.0.2 + resolution: "pathe@npm:2.0.2" + checksum: 10/027dd246720ec6d3b5567e2b0201f1a815b6a69f2912a4dcafed59620afc729af15b4aff4bc780504c88d11dfb081c051e37327b928a093e714c3e09bf35aff3 languageName: node linkType: hard @@ -9905,24 +8848,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.1": - version: 1.0.1 - resolution: "picocolors@npm:1.0.1" - checksum: 10/fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard @@ -9940,7 +8869,7 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:~0.6.0": +"pidtree@npm:^0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" bin: @@ -10007,13 +8936,13 @@ __metadata: linkType: hard "postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" + version: 6.2.0 + resolution: "postcss-nested@npm:6.2.0" dependencies: - postcss-selector-parser: "npm:^6.0.11" + postcss-selector-parser: "npm:^6.1.1" peerDependencies: postcss: ^8.2.14 - checksum: 10/02aaac682f599879fae6aab3210aee59b8b5bde3ba242527f6fd103726955b74ffa05c2b765920be5f403e758045582534d11b1e19add01586c19743ed99e3fe + checksum: 10/d7f6ba6bfd03d42f84689a0630d4e393c421bb53723f16fe179a840f03ed17763b0fe494458577d2a015e857e0ec27c7e194909ffe209ee5f0676aec39737317 languageName: node linkType: hard @@ -10029,13 +8958,13 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11": - version: 6.0.16 - resolution: "postcss-selector-parser@npm:6.0.16" +"postcss-selector-parser@npm:^6.1.1": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 10/9324f63992c6564d392f9f6b16c56c05f157256e3be2d55d1234f7728252257dfd6b870a65a5d04ee3ceb9d9e7b78c043f630a58c9869b4b0481d6e064edc2cf + checksum: 10/190034c94d809c115cd2f32ee6aade84e933450a43ec3899c3e78e7d7b33efd3a2a975bb45d7700b6c5b196c06a7d9acf3f1ba6f1d87032d9675a29d8bca1dd3 languageName: node linkType: hard @@ -10055,25 +8984,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.38": - version: 8.4.38 - resolution: "postcss@npm:8.4.38" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.2.0" - checksum: 10/6e44a7ed835ffa9a2b096e8d3e5dfc6bcf331a25c48aeb862dd54e3aaecadf814fa22be224fd308f87d08adf2299164f88c5fd5ab1c4ef6cbd693ceb295377f4 - languageName: node - linkType: hard - -"postcss@npm:^8.4.43, postcss@npm:^8.4.47": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" +"postcss@npm:^8.4.49, postcss@npm:^8.5.1": + version: 8.5.1 + resolution: "postcss@npm:8.5.1" dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" + nanoid: "npm:^3.3.8" + picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 + checksum: 10/1fbd28753143f7f03e4604813639918182b15343c7ad0f4e72f3875fc2cc0b8494c887f55dc05008fad5fbf1e1e908ce2edbbce364a91f84dcefb71edf7cd31d languageName: node linkType: hard @@ -10106,17 +9024,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10/02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - -"proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10/35610bdb0177d3ab5d35f8827a429fb1dc2518d9e639f2151ac9007f01a061c30e0c635a970c9b00c39102216160f6ec54b62377c92fac3b7bfc2ad4b98d195c languageName: node linkType: hard @@ -10140,7 +9051,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -10169,25 +9080,14 @@ __metadata: languageName: node linkType: hard -"prosemirror-commands@npm:^1.0.0": - version: 1.5.2 - resolution: "prosemirror-commands@npm:1.5.2" - dependencies: - prosemirror-model: "npm:^1.0.0" - prosemirror-state: "npm:^1.0.0" - prosemirror-transform: "npm:^1.0.0" - checksum: 10/73c9a30f6d76d87df98a007ad96ec1b616981d0f9040af15631aa66bcf22b088acf701b3f3d47676a7760afa32ce2f35145e7471124e7605383f87b4245f0acd - languageName: node - linkType: hard - -"prosemirror-commands@npm:^1.6.0": - version: 1.6.0 - resolution: "prosemirror-commands@npm:1.6.0" +"prosemirror-commands@npm:^1.0.0, prosemirror-commands@npm:^1.6.2": + version: 1.6.2 + resolution: "prosemirror-commands@npm:1.6.2" dependencies: prosemirror-model: "npm:^1.0.0" prosemirror-state: "npm:^1.0.0" - prosemirror-transform: "npm:^1.0.0" - checksum: 10/1aeb0b0aa6d80fa7cc013a4cb810090a2b3eee88938bc6e8eb4c4c64ae14a2fed593725cb482b8d3b5ab262488bbd3df5ca0f27b951cea135108496f9d525ade + prosemirror-transform: "npm:^1.10.2" + checksum: 10/048422039a91dc1ba1a661698c110967a14744fb606ef958ca63f58e7efe4f64023ab63c4a5029ccef0159d0e2580224c158ce60a27323ea814989d6301dad16 languageName: node linkType: hard @@ -10214,19 +9114,7 @@ __metadata: languageName: node linkType: hard -"prosemirror-history@npm:^1.0.0": - version: 1.4.0 - resolution: "prosemirror-history@npm:1.4.0" - dependencies: - prosemirror-state: "npm:^1.2.2" - prosemirror-transform: "npm:^1.0.0" - prosemirror-view: "npm:^1.31.0" - rope-sequence: "npm:^1.3.0" - checksum: 10/f17ae1f5d34a5e6831c5f631979b0f1d78d6ed66f9d61373dc2bd5d188d20e7d3d42e949208650e1ea01e61251f0045a67bda56a3eeb3f578cebdef3a8051eef - languageName: node - linkType: hard - -"prosemirror-history@npm:^1.4.1": +"prosemirror-history@npm:^1.0.0, prosemirror-history@npm:^1.4.1": version: 1.4.1 resolution: "prosemirror-history@npm:1.4.1" dependencies: @@ -10248,7 +9136,7 @@ __metadata: languageName: node linkType: hard -"prosemirror-keymap@npm:^1.0.0, prosemirror-keymap@npm:^1.1.2, prosemirror-keymap@npm:^1.2.2": +"prosemirror-keymap@npm:^1.0.0, prosemirror-keymap@npm:^1.2.2": version: 1.2.2 resolution: "prosemirror-keymap@npm:1.2.2" dependencies: @@ -10258,13 +9146,14 @@ __metadata: languageName: node linkType: hard -"prosemirror-markdown@npm:^1.13.0": - version: 1.13.0 - resolution: "prosemirror-markdown@npm:1.13.0" +"prosemirror-markdown@npm:^1.13.1": + version: 1.13.1 + resolution: "prosemirror-markdown@npm:1.13.1" dependencies: + "@types/markdown-it": "npm:^14.0.0" markdown-it: "npm:^14.0.0" prosemirror-model: "npm:^1.20.0" - checksum: 10/92137ac5b9c2184422089d6a107c1f0ad953be2c8e9e1cc242479059d251f25944e9207589b3c1ac1e3508b671803525d032c66712b951bccc7e2f1c1ebe92e6 + checksum: 10/91af650e17e92c1c911c8bbf7dd4c6d5ba56ee140b0fe493e4e4bab85de1121cece3736eeabb7f789ef2b40afd1f6abe870f908213ce1918fd590257a8932c6c languageName: node linkType: hard @@ -10280,30 +9169,12 @@ __metadata: languageName: node linkType: hard -"prosemirror-model@npm:^1.0.0, prosemirror-model@npm:^1.19.0, prosemirror-model@npm:^1.20.0, prosemirror-model@npm:^1.8.1": - version: 1.20.0 - resolution: "prosemirror-model@npm:1.20.0" - dependencies: - orderedmap: "npm:^2.0.0" - checksum: 10/4daa92afb0ba9613712628ed229504dbec2c194c6bb454835ce4dd65b25076ef107a8d052f14ca65d276aac48e90df52de27c71c615c9db83c3f68bbb90dbf21 - languageName: node - linkType: hard - -"prosemirror-model@npm:^1.21.0": - version: 1.22.1 - resolution: "prosemirror-model@npm:1.22.1" - dependencies: - orderedmap: "npm:^2.0.0" - checksum: 10/c7bb30ebf296c1a32ad024c55a004e919f64f6cfdc76347942ed1b647ddd3ea1ae68c6b206d97867ca7f568dbbf980daa6989f44e00d13bf6d678a880c356eae - languageName: node - linkType: hard - -"prosemirror-model@npm:^1.22.3": - version: 1.22.3 - resolution: "prosemirror-model@npm:1.22.3" +"prosemirror-model@npm:^1.0.0, prosemirror-model@npm:^1.19.0, prosemirror-model@npm:^1.20.0, prosemirror-model@npm:^1.21.0, prosemirror-model@npm:^1.23.0, prosemirror-model@npm:^1.24.1": + version: 1.24.1 + resolution: "prosemirror-model@npm:1.24.1" dependencies: orderedmap: "npm:^2.0.0" - checksum: 10/ea69eb2f9be2c8cc6fb57eff274692d590ff7d5980d173d493f0655fd831e79711ef42171a0cb50c4670ea06d21c32ae1085b7da1e8bd741f195c909c1a81a00 + checksum: 10/0889292f01f4414372025efaed38111adc359ee586fc66f14ea434321ce7791b6dd8866295a344af80b52a6f1f3d2982a433c7b5f7a086e9ac4d3601c6009d59 languageName: node linkType: hard @@ -10317,17 +9188,17 @@ __metadata: linkType: hard "prosemirror-schema-list@npm:^1.4.1": - version: 1.4.1 - resolution: "prosemirror-schema-list@npm:1.4.1" + version: 1.5.0 + resolution: "prosemirror-schema-list@npm:1.5.0" dependencies: prosemirror-model: "npm:^1.0.0" prosemirror-state: "npm:^1.0.0" prosemirror-transform: "npm:^1.7.3" - checksum: 10/a1d58811ad17d99cc426ed898c725b2e245512d57a26723cd7fb933fad70b5def3eb619f201090c50351eef9b5d129e6479996b02c639a669e4e751a1c71e40e + checksum: 10/754c7ba13e356783642597b59838bd5ea43fa74f43aede80181d38d3cbd2086d8ea86c50d172b8c2a1f5cc8b8c6e1b7386082265628db4f941d27495102d65bc languageName: node linkType: hard -"prosemirror-state@npm:^1.0.0, prosemirror-state@npm:^1.2.2, prosemirror-state@npm:^1.3.1, prosemirror-state@npm:^1.4.3": +"prosemirror-state@npm:^1.0.0, prosemirror-state@npm:^1.2.2, prosemirror-state@npm:^1.4.3": version: 1.4.3 resolution: "prosemirror-state@npm:1.4.3" dependencies: @@ -10338,16 +9209,16 @@ __metadata: languageName: node linkType: hard -"prosemirror-tables@npm:^1.4.0": - version: 1.5.0 - resolution: "prosemirror-tables@npm:1.5.0" +"prosemirror-tables@npm:^1.6.3": + version: 1.6.3 + resolution: "prosemirror-tables@npm:1.6.3" dependencies: - prosemirror-keymap: "npm:^1.1.2" - prosemirror-model: "npm:^1.8.1" - prosemirror-state: "npm:^1.3.1" - prosemirror-transform: "npm:^1.2.1" - prosemirror-view: "npm:^1.13.3" - checksum: 10/77c2240705dfee9acd4c829cc209b7024dd5f8f91ebed2b149f0b4bdce941804aec2162e2b6be3878f30e978895bfa1c64c0a4c5cc10c602611b29eb1add102c + prosemirror-keymap: "npm:^1.2.2" + prosemirror-model: "npm:^1.24.1" + prosemirror-state: "npm:^1.4.3" + prosemirror-transform: "npm:^1.10.2" + prosemirror-view: "npm:^1.37.1" + checksum: 10/46b19ddbc96e4aa1ff31e18a179822c085cc3af1fdc1a87d8f70631f633132ade37cd7e3566fbdc111c56f3d1326d32e73f8020cace8996d7325b7ded2b7487b languageName: node linkType: hard @@ -10365,43 +9236,23 @@ __metadata: languageName: node linkType: hard -"prosemirror-transform@npm:^1.0.0, prosemirror-transform@npm:^1.1.0, prosemirror-transform@npm:^1.2.1, prosemirror-transform@npm:^1.7.3": - version: 1.8.0 - resolution: "prosemirror-transform@npm:1.8.0" - dependencies: - prosemirror-model: "npm:^1.0.0" - checksum: 10/eaf401d560f2113eea7f402381b33746e365376ae7fe0b3ee46781fc2b25c7409335777da28542b2f149846fe1e72eef131652491f0e8f2ff1af5b9170e6870e - languageName: node - linkType: hard - -"prosemirror-transform@npm:^1.10.0": - version: 1.10.0 - resolution: "prosemirror-transform@npm:1.10.0" +"prosemirror-transform@npm:^1.0.0, prosemirror-transform@npm:^1.1.0, prosemirror-transform@npm:^1.10.2, prosemirror-transform@npm:^1.7.3": + version: 1.10.2 + resolution: "prosemirror-transform@npm:1.10.2" dependencies: prosemirror-model: "npm:^1.21.0" - checksum: 10/1ceb7d221414e7a54bfdd6559bbb9b5b18403b3034769af5ed34d8f38466c4be4087060adbba923813bf7ffc3bc158f94ff11ec7bf79f5b47aada3fb3c313664 - languageName: node - linkType: hard - -"prosemirror-view@npm:^1.0.0, prosemirror-view@npm:^1.1.0, prosemirror-view@npm:^1.13.3, prosemirror-view@npm:^1.27.0, prosemirror-view@npm:^1.31.0": - version: 1.33.6 - resolution: "prosemirror-view@npm:1.33.6" - dependencies: - prosemirror-model: "npm:^1.20.0" - prosemirror-state: "npm:^1.0.0" - prosemirror-transform: "npm:^1.1.0" - checksum: 10/33c430ed28dd10e2eb7b4ebb22d9d13e8e9ea2b36ba3bbf315421073de570ec496b1b59398e8783affc221ed360bab16121aacc0810f32c06135d1f87eef7c6c + checksum: 10/be0feb6ec2a775cf00cfb251f7a261c919c8a4ba6d3217e21679631ee27a9f52757417a72301703e01b635513793019c9ad58752dd4a48929bf4a234dc094a53 languageName: node linkType: hard -"prosemirror-view@npm:^1.33.10": - version: 1.34.3 - resolution: "prosemirror-view@npm:1.34.3" +"prosemirror-view@npm:^1.0.0, prosemirror-view@npm:^1.1.0, prosemirror-view@npm:^1.27.0, prosemirror-view@npm:^1.31.0, prosemirror-view@npm:^1.37.0, prosemirror-view@npm:^1.37.1": + version: 1.37.2 + resolution: "prosemirror-view@npm:1.37.2" dependencies: prosemirror-model: "npm:^1.20.0" prosemirror-state: "npm:^1.0.0" prosemirror-transform: "npm:^1.1.0" - checksum: 10/070dbfb49bcfe94d3252bd5cae7e0c49d2aa0f0420366dba85fd496263f76be90045126eb1d55caa0876874cb7d5e4e08a139c24b664c865f0eb64ecee97fa5c + checksum: 10/a6073928a7bd75eb4bd31389b52f7f99fe58140927623856105da542b6923583619d23e99856b7a8b1ee27f2877624d0d0251d1407ce6c72473b7854c1385172 languageName: node linkType: hard @@ -10434,11 +9285,11 @@ __metadata: linkType: hard "qs@npm:^6.9.0": - version: 6.12.1 - resolution: "qs@npm:6.12.1" + version: 6.14.0 + resolution: "qs@npm:6.14.0" dependencies: - side-channel: "npm:^1.0.6" - checksum: 10/035bcad2a1ab0175bac7a74c904c15913bdac252834149ccff988c93a51de02642fe7be10e43058ba4dc4094bb28ce9b59d12b9e91d40997f445cfde3ecc1c29 + side-channel: "npm:^1.1.0" + checksum: 10/a60e49bbd51c935a8a4759e7505677b122e23bf392d6535b8fc31c1e447acba2c901235ecb192764013cd2781723dc1f61978b5fdd93cc31d7043d31cdc01974 languageName: node linkType: hard @@ -10458,37 +9309,36 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.3.1": - version: 18.3.1 - resolution: "react-dom@npm:18.3.1" +"react-dom@npm:^19.0.0": + version: 19.0.0 + resolution: "react-dom@npm:19.0.0" dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.2" + scheduler: "npm:^0.25.0" peerDependencies: - react: ^18.3.1 - checksum: 10/3f4b73a3aa083091173b29812b10394dd06f4ac06aff410b74702cfb3aa29d7b0ced208aab92d5272919b612e5cda21aeb1d54191848cf6e46e9e354f3541f81 + react: ^19.0.0 + checksum: 10/aa64a2f1991042f516260e8b0eca0ae777b6c8f1aa2b5ae096e80bbb6ac9b005aef2bca697969841d34f7e1819556263476bdfea36c35092e8d9aefde3de2d9a languageName: node linkType: hard -"react-dropzone-esm@npm:15.0.1": - version: 15.0.1 - resolution: "react-dropzone-esm@npm:15.0.1" +"react-dropzone-esm@npm:15.2.0": + version: 15.2.0 + resolution: "react-dropzone-esm@npm:15.2.0" dependencies: prop-types: "npm:^15.8.1" peerDependencies: react: ">= 16.8 || 18.0.0" - checksum: 10/c6b9aa91fcb10f62a1d1758d38d6e38f1b4030419a321a477df70b05a6831a2bbe2dae4a926dece8543243bc6bba77521309b69eb707fc40f346391f554211dd + checksum: 10/8b0ac47f4da0ac1c18dc2d43b75cce4a9e4aaa3f0d4580fad616bb66d429b7e45bfc11d6b8e207abde745fa377a5ba52fabc769253428f598ccba5c4bcc8ff2b languageName: node linkType: hard -"react-error-boundary@npm:^4.0.13": - version: 4.0.13 - resolution: "react-error-boundary@npm:4.0.13" +"react-error-boundary@npm:^5.0.0": + version: 5.0.0 + resolution: "react-error-boundary@npm:5.0.0" dependencies: "@babel/runtime": "npm:^7.12.5" peerDependencies: react: ">=16.13.1" - checksum: 10/28fdf498a58621e21d93978c61719c52455bc00b778080259c5830fe003736153469ebc84f243d7989567b1196e25648c7592f7c8e47de47fcd7d12b875879b9 + checksum: 10/8b68de3441bd3d50a2c8433f9c921ff02c691e920e268972ae002087b5080e38435c6f9b2198241683b7f4c6a6ed2f53bf593b83c42946f14daa00322b3c2909 languageName: node linkType: hard @@ -10502,12 +9352,12 @@ __metadata: languageName: node linkType: hard -"react-icons@npm:^5.3.0": - version: 5.3.0 - resolution: "react-icons@npm:5.3.0" +"react-icons@npm:^5.4.0": + version: 5.4.0 + resolution: "react-icons@npm:5.4.0" peerDependencies: react: "*" - checksum: 10/7f315d2a5e0eee7fefe01eac5cbe818b9592d88964f6c99ba454539a78cd2efd4430152e88113585c5a54bca6a5e1e7e7978df9cf69a03d8479a8d3d106a027c + checksum: 10/c900d475c64852b316d16bdc1a436c93e18e0ffb321ebc43a1d8741191baba736e0ef4c6d871399056832b69413cd13b56ae6a18eaa5ad17041df805d803651c languageName: node linkType: hard @@ -10532,15 +9382,13 @@ __metadata: languageName: node linkType: hard -"react-number-format@npm:^5.3.1": - version: 5.3.4 - resolution: "react-number-format@npm:5.3.4" - dependencies: - prop-types: "npm:^15.7.2" +"react-number-format@npm:^5.4.3": + version: 5.4.3 + resolution: "react-number-format@npm:5.4.3" peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10/c5bc021f20ecb5c3dca8da93c89ce583d92b60bfabcfbcfeb59a9fb29ec17d756b559d6a00ff9a185e6c3c5c3f3839afd4ddc1244ad8fbea20342baf74a8bd43 + react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/351c70a8f3dcdc8469f4c27acb7ab18a2010e2bb6ea4eefb0be742aee517ee90a2b14772f1df43393acac158cff9e78268a49909f7f46577ec9acf07f4ec0fdf languageName: node linkType: hard @@ -10551,68 +9399,67 @@ __metadata: languageName: node linkType: hard -"react-remove-scroll-bar@npm:^2.3.6": - version: 2.3.6 - resolution: "react-remove-scroll-bar@npm:2.3.6" +"react-remove-scroll-bar@npm:^2.3.7": + version: 2.3.8 + resolution: "react-remove-scroll-bar@npm:2.3.8" dependencies: - react-style-singleton: "npm:^2.2.1" + react-style-singleton: "npm:^2.2.2" tslib: "npm:^2.0.0" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10/5ab8eda61d5b10825447d11e9c824486c929351a471457c22452caa19b6898e18c3af6a46c3fa68010c713baed1eb9956106d068b4a1058bdcf97a1a9bbed734 + checksum: 10/6c0f8cff98b9f49a4ee2263f1eedf12926dced5ce220fbe83bd93544460e2a7ec8ec39b35d1b2a75d2fced0b2d64afeb8e66f830431ca896e05a20585f9fc350 languageName: node linkType: hard -"react-remove-scroll@npm:^2.5.7": - version: 2.5.9 - resolution: "react-remove-scroll@npm:2.5.9" +"react-remove-scroll@npm:^2.6.2": + version: 2.6.3 + resolution: "react-remove-scroll@npm:2.6.3" dependencies: - react-remove-scroll-bar: "npm:^2.3.6" - react-style-singleton: "npm:^2.2.1" + react-remove-scroll-bar: "npm:^2.3.7" + react-style-singleton: "npm:^2.2.3" tslib: "npm:^2.1.0" - use-callback-ref: "npm:^1.3.0" - use-sidecar: "npm:^1.1.2" + use-callback-ref: "npm:^1.3.3" + use-sidecar: "npm:^1.1.3" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10/cbda17d8c97de235476d519cf27f261bcbf5488af4b6b9c99a7a372bde618124dc6bb8f1bbdae342c1de4620250db600e6bd076fbc78a46bcb54e0044f1c2e88 + checksum: 10/d4dfd38e4381fa6059c8b810568b2d3a31fe21168bb3e2f57d1b1885ee08736fbd5a3fd83936faef0d17031c9c4175a1af83885bfc6c4280611f025447b19a4c languageName: node linkType: hard -"react-style-singleton@npm:^2.2.1": - version: 2.2.1 - resolution: "react-style-singleton@npm:2.2.1" +"react-style-singleton@npm:^2.2.2, react-style-singleton@npm:^2.2.3": + version: 2.2.3 + resolution: "react-style-singleton@npm:2.2.3" dependencies: get-nonce: "npm:^1.0.0" - invariant: "npm:^2.2.4" tslib: "npm:^2.0.0" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10/80c58fd6aac3594e351e2e7b048d8a5b09508adb21031a38b3c40911fe58295572eddc640d4b20a7be364842c8ed1120fe30097e22ea055316b375b88d4ff02a + checksum: 10/62498094ff3877a37f351b29e6cad9e38b2eb1ac3c0cb27ebf80aee96554f80b35e17bdb552bcd7ac8b7cb9904fea93ea5668f2057c73d38f90b5d46bb9b27ab languageName: node linkType: hard -"react-textarea-autosize@npm:8.5.3": - version: 8.5.3 - resolution: "react-textarea-autosize@npm:8.5.3" +"react-textarea-autosize@npm:8.5.6": + version: 8.5.6 + resolution: "react-textarea-autosize@npm:8.5.6" dependencies: "@babel/runtime": "npm:^7.20.13" use-composed-ref: "npm:^1.3.0" use-latest: "npm:^1.2.1" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/4ade4329374f77414f55074826617e388d884b6c9401e0877b63d7f3715db07041431bb757265fb971c4ef15f3fde70ff6a05a5abb09ad3ff89334e1ff5c39ea + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/7e57b45b23ed466d80beea78ea83448c4ca8410145999cbaa7e98c8d41074fc36960c48bd8cdb5833aa7647a9bba50d7c182aa1083cf2e8719ca726c65344f5a languageName: node linkType: hard @@ -10640,12 +9487,10 @@ __metadata: languageName: node linkType: hard -"react@npm:^18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf +"react@npm:^19.0.0": + version: 19.0.0 + resolution: "react@npm:19.0.0" + checksum: 10/2490969c503f644703c88990d20e4011fa6119ddeca451e9de48f6d7ab058d670d2852a5fcd3aa3cd90a923ab2815d532637bd4a814add402ae5c0d4f129ee71 languageName: node linkType: hard @@ -10670,18 +9515,19 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.6 - resolution: "reflect.getprototypeof@npm:1.0.6" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.1" + es-abstract: "npm:^1.23.9" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" - which-builtin-type: "npm:^1.1.3" - checksum: 10/518f6457e4bb470c9b317d239c62d4b4a05678b7eae4f1c3f4332fad379b3ea6d2d8999bfad448547fdba8fb77e4725cfe8c6440d0168ff387f16b4f19f759ad + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10/80a4e2be716f4fe46a89a08ccad0863b47e8ce0f49616cab2d65dab0fbd53c6fdba0f52935fd41d37a2e4e22355c272004f920d63070de849f66eea7aeb4a081 languageName: node linkType: hard @@ -10692,15 +9538,17 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": - version: 1.5.2 - resolution: "regexp.prototype.flags@npm:1.5.2" +"regexp.prototype.flags@npm:^1.5.3": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: - call-bind: "npm:^1.0.6" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" es-errors: "npm:^1.3.0" - set-function-name: "npm:^2.0.1" - checksum: 10/9fffc01da9c4e12670ff95bc5204364615fcc12d86fc30642765af908675678ebb0780883c874b2dbd184505fb52fa603d80073ecf69f461ce7f56b15d10be9c + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10/8ab897ca445968e0b96f6237641510f3243e59c180ee2ee8d83889c52ff735dd1bf3657fcd36db053e35e1d823dd53f2565d0b8021ea282c9fe62401c6c3bd6d languageName: node linkType: hard @@ -10718,13 +9566,6 @@ __metadata: languageName: node linkType: hard -"requireindex@npm:^1.2.0": - version: 1.2.0 - resolution: "requireindex@npm:1.2.0" - checksum: 10/266d1cb31f6cbc4b6cf2e898f5bbc45581f7919bcf61bba5c45d0adb69b722b9ff5a13727be3350cde4520d7cd37f39df45d58a29854baaa4552cd6b05ae4a1a - languageName: node - linkType: hard - "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -10766,22 +9607,22 @@ __metadata: linkType: hard "resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 + version: 2.0.3 + resolution: "resolve.exports@npm:2.0.3" + checksum: 10/536efee0f30a10fac8604e6cdc7844dbc3f4313568d09f06db4f7ed8a5b8aeb8585966fe975083d1f2dfbc87cf5f8bc7ab65a5c23385c14acbb535ca79f8398a languageName: node linkType: hard "resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" + version: 1.22.10 + resolution: "resolve@npm:1.22.10" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/c473506ee01eb45cbcfefb68652ae5759e092e6b0fb64547feadf9736a6394f258fbc6f88e00c5ca36d5477fbb65388b272432a3600fa223062e54333c156753 + checksum: 10/0a398b44da5c05e6e421d70108822c327675febb880eebe905587628de401854c61d5df02866ff34fc4cb1173a51c9f0e84a94702738df3611a62e2acdc68181 languageName: node linkType: hard @@ -10799,15 +9640,15 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10/f345cd37f56a2c0275e3fe062517c650bb673815d885e7507566df589375d165bbbf4bdb6aa95600a9bc55f4744b81f452b5a63f95b9f10a72787dba3c90890a + checksum: 10/d4d878bfe3702d215ea23e75e0e9caf99468e3db76f5ca100d27ebdc527366fee3877e54bce7d47cc72ca8952fc2782a070d238bfa79a550eeb0082384c3b81a languageName: node linkType: hard @@ -10865,89 +9706,40 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.13.0": - version: 4.17.2 - resolution: "rollup@npm:4.17.2" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.17.2" - "@rollup/rollup-android-arm64": "npm:4.17.2" - "@rollup/rollup-darwin-arm64": "npm:4.17.2" - "@rollup/rollup-darwin-x64": "npm:4.17.2" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.17.2" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.17.2" - "@rollup/rollup-linux-arm64-gnu": "npm:4.17.2" - "@rollup/rollup-linux-arm64-musl": "npm:4.17.2" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.17.2" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.17.2" - "@rollup/rollup-linux-s390x-gnu": "npm:4.17.2" - "@rollup/rollup-linux-x64-gnu": "npm:4.17.2" - "@rollup/rollup-linux-x64-musl": "npm:4.17.2" - "@rollup/rollup-win32-arm64-msvc": "npm:4.17.2" - "@rollup/rollup-win32-ia32-msvc": "npm:4.17.2" - "@rollup/rollup-win32-x64-msvc": "npm:4.17.2" - "@types/estree": "npm:1.0.5" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-powerpc64le-gnu": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true +"rimraf@npm:^5.0.5": + version: 5.0.10 + resolution: "rimraf@npm:5.0.10" + dependencies: + glob: "npm:^10.3.7" bin: - rollup: dist/bin/rollup - checksum: 10/a021d57f73d746340a1c2b3a03ef0b3bb7f3c837e6acd9aa78b1b1234011aa5b5271b0ef25abba2c1ed268b5e2c90c39a0f8194bcf825728be720f9f2496b248 - languageName: node - linkType: hard - -"rollup@npm:^4.20.0": - version: 4.22.5 - resolution: "rollup@npm:4.22.5" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.5" - "@rollup/rollup-android-arm64": "npm:4.22.5" - "@rollup/rollup-darwin-arm64": "npm:4.22.5" - "@rollup/rollup-darwin-x64": "npm:4.22.5" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.5" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.5" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.5" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.5" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.5" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-x64-musl": "npm:4.22.5" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.5" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.5" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.5" + rimraf: dist/esm/bin.mjs + checksum: 10/f3b8ce81eecbde4628b07bdf9e2fa8b684e0caea4999acb1e3b0402c695cd41f28cd075609a808e61ce2672f528ca079f675ab1d8e8d5f86d56643a03e0b8d2e + languageName: node + linkType: hard + +"rollup@npm:^4.23.0": + version: 4.32.1 + resolution: "rollup@npm:4.32.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.32.1" + "@rollup/rollup-android-arm64": "npm:4.32.1" + "@rollup/rollup-darwin-arm64": "npm:4.32.1" + "@rollup/rollup-darwin-x64": "npm:4.32.1" + "@rollup/rollup-freebsd-arm64": "npm:4.32.1" + "@rollup/rollup-freebsd-x64": "npm:4.32.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.32.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.32.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.32.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.32.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.32.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.32.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.32.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.32.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.32.1" + "@rollup/rollup-linux-x64-musl": "npm:4.32.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.32.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.32.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.32.1" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -10959,6 +9751,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -10967,6 +9763,8 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true "@rollup/rollup-linux-powerpc64le-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": @@ -10987,7 +9785,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/f34812fa982442ab71410b649630c24434b2dc02485e543607734766eb7211ce7e0a79102f27210f337af00f3617006adebb4f87fb2e9d24cac7100d0e599352 + checksum: 10/5a64860df9d0c1b88d142b8502cb2e858e8314025ed35c605c70dc5c7c099fcecc9340cac269412c9a8b53705b911f1454b01164d23400c7d84cafb241be255f languageName: node linkType: hard @@ -10998,10 +9796,10 @@ __metadata: languageName: node linkType: hard -"rrweb-cssom@npm:^0.7.1": - version: 0.7.1 - resolution: "rrweb-cssom@npm:0.7.1" - checksum: 10/e80cf25c223a823921d7ab57c0ce78f5b7ebceab857b400cce99dd4913420ce679834bc5707e8ada47d062e21ad368108a9534c314dc8d72c20aa4a4fa0ed16a +"rrweb-cssom@npm:^0.8.0": + version: 0.8.0 + resolution: "rrweb-cssom@npm:0.8.0" + checksum: 10/07521ee36fb6569c17906afad1ac7ff8f099d49ade9249e190693ac36cdf27f88d9acf0cc66978935d5d0a23fca105643d7e9125b9a9d91ed9db9e02d31d7d80 languageName: node linkType: hard @@ -11030,15 +9828,16 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - has-symbols: "npm:^1.0.3" +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" isarray: "npm:^2.0.5" - checksum: 10/a54f8040d7cb696a1ee38d19cc71ab3cfb654b9b81bae00c6459618cfad8214ece7e6666592f9c925aafef43d0a20c5e6fbb3413a2b618e1ce9d516a2e6dcfc5 + checksum: 10/fac4f40f20a3f7da024b54792fcc61059e814566dcbb04586bfefef4d3b942b2408933f25b7b3dd024affd3f2a6bbc916bef04807855e4f192413941369db864 languageName: node linkType: hard @@ -11049,14 +9848,24 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10/2bd4e53b6694f7134b9cf93631480e7fafc8637165f0ee91d5a4af5e7f33d37de9562d1af5021178dd4217d0230cde8d6530fa28cfa1ebff9a431bf8fff124b4 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" - is-regex: "npm:^1.1.4" - checksum: 10/b04de61114b10274d92e25b6de7ccb5de07f11ea15637ff636de4b5190c0f5cd8823fe586dde718504cf78055437d70fd8804976894df502fcf5a210c970afb3 + is-regex: "npm:^1.2.1" + checksum: 10/ebdb61f305bf4756a5b023ad86067df5a11b26898573afe9e52a548a63c3bd594825d9b0e2dde2eb3c94e57e0e04ac9929d4107c394f7b8e56a4613bed46c69a languageName: node linkType: hard @@ -11076,16 +9885,14 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 +"scheduler@npm:^0.25.0": + version: 0.25.0 + resolution: "scheduler@npm:0.25.0" + checksum: 10/e661e38503ab29a153429a99203fefa764f28b35c079719eb5efdd2c1c1086522f6653d8ffce388209682c23891a6d1d32fa6badf53c35fb5b9cd0c55ace42de languageName: node linkType: hard -"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": +"schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" dependencies: @@ -11096,15 +9903,15 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.0.0": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.0" +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.3.0": + version: 4.3.0 + resolution: "schema-utils@npm:4.3.0" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10/808784735eeb153ab7f3f787f840aa3bc63f423d2a5a7e96c9e70a0e53d0bc62d7b37ea396fc598ce19196e4fb86a72f897154b7c6ce2358bbc426166f205e14 + checksum: 10/86c5a7c72a275c56f140bc3cdd832d56efb11428c88ad588127db12cb9b2c83ccaa9540e115d7baa9c6175b5e360094457e29c44e6fb76787c9498c2eb6df5d6 languageName: node linkType: hard @@ -11117,27 +9924,16 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 10/1b41018df2d8aca5a1db4729985e8e20428c650daea60fcd16e926e9383217d00f574fab92d79612771884a98d2ee2a1973f49d630829a8d54d6570defe62535 - languageName: node - linkType: hard - -"semver@npm:^7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.7.0 + resolution: "semver@npm:7.7.0" bin: semver: bin/semver.js - checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 + checksum: 10/5d615860a54ff563955c451e467bff3aaf74c8d060489f936f25551d5ca05f5ac683eb46c9ed7ade082e1e53b313f205ed9c5df0b25ebb3517ec25c79e1f0d9c languageName: node linkType: hard -"serialize-javascript@npm:^6.0.1": +"serialize-javascript@npm:^6.0.2": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -11146,7 +9942,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -11160,7 +9956,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": +"set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: @@ -11172,6 +9968,17 @@ __metadata: languageName: node linkType: hard +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10/b87f8187bca595ddc3c0721ece4635015fd9d7cb294e6dd2e394ce5186a71bbfa4dc8a35010958c65e43ad83cde09642660e61a952883c24fd6b45ead15f045c + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -11188,15 +9995,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.7" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d + object-inspect: "npm:^1.13.3" + checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10/5771861f77feefe44f6195ed077a9e4f389acc188f895f570d56445e251b861754b547ea9ef73ecee4e01fdada6568bfe9020d2ec2dfc5571e9fa1bbc4a10615 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10/a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10/7d53b9db292c6262f326b6ff3bc1611db84ece36c2c7dc0e937954c13c73185b0406c56589e2bb8d071d6fee468e14c39fb5d203ee39be66b7b8174f179afaba languageName: node linkType: hard @@ -11263,17 +10106,17 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^8.0.3": - version: 8.0.3 - resolution: "socks-proxy-agent@npm:8.0.3" + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: "npm:^7.1.1" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" - socks: "npm:^2.7.1" - checksum: 10/c2112c66d6322e497d68e913c3780f3683237fd394bfd480b9283486a86e36095d0020db96145d88f8ccd9cc73261b98165b461f9c1bf5dc17abfe75c18029ce + socks: "npm:^2.8.3" + checksum: 10/ee99e1dacab0985b52cbe5a75640be6e604135e9489ebdc3048635d186012fbaecc20fbbe04b177dee434c319ba20f09b3e7dfefb7d932466c0d707744eac05c languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.8.3": version: 2.8.3 resolution: "socks@npm:2.8.3" dependencies: @@ -11283,13 +10126,6 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.2.0": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 10/74f331cfd2d121c50790c8dd6d3c9de6be21926de80583b23b37029b0f37aefc3e019fa91f9a10a5e120c08135297e1ecf312d561459c45908cb1e0e365f49e5 - languageName: node - linkType: hard - "source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" @@ -11352,12 +10188,19 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.6 - resolution: "ssri@npm:10.0.6" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: 10/f92c1b3cc9bfd0a925417412d07d999935917bc87049f43ebec41074661d64cf720315661844106a77da9f8204b6d55ae29f9514e673083cae39464343af2a8b + checksum: 10/7024c1a6e39b3f18aa8f1c8290e884fe91b0f9ca5a6c6d410544daad54de0ba664db879afe16412e187c6c292fd60b937f047ee44292e5c2af2dcc6d8e1a9b48 + languageName: node + linkType: hard + +"stable-hash@npm:^0.0.4": + version: 0.0.4 + resolution: "stable-hash@npm:0.0.4" + checksum: 10/21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd languageName: node linkType: hard @@ -11377,23 +10220,14 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.7.0": - version: 3.7.0 - resolution: "std-env@npm:3.7.0" - checksum: 10/6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12 - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: 10/2a23a36f4f6bfa63f46ae2d53a3f80fe8276110b95a55345d8ed3d92125413494033bc8697eb774e8f7aeb5725f70e3d69753caa2ecacdac6258c16fa8aa8b0f +"std-env@npm:^3.8.0": + version: 3.8.0 + resolution: "std-env@npm:3.8.0" + checksum: 10/034176196cfcaaab16dbdd96fc9e925a9544799fb6dc5a3e36fe43270f3a287c7f779d785b89edaf22cef2b5f1dcada2aae67430b8602e785ee74bdb3f671768 languageName: node linkType: hard -"string-argv@npm:~0.3.2": +"string-argv@npm:^0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af @@ -11433,43 +10267,45 @@ __metadata: linkType: hard "string-width@npm:^7.0.0": - version: 7.1.0 - resolution: "string-width@npm:7.1.0" + version: 7.2.0 + resolution: "string-width@npm:7.2.0" dependencies: emoji-regex: "npm:^10.3.0" get-east-asian-width: "npm:^1.0.0" strip-ansi: "npm:^7.1.0" - checksum: 10/a183573fe7209e0d294f661846d33f8caf72aa86d983e5b48a0ed45ab15bcccb02c6f0344b58b571988871105457137b8207855ea536827dbc4a376a0f31bf8f + checksum: 10/42f9e82f61314904a81393f6ef75b832c39f39761797250de68c041d8ba4df2ef80db49ab6cd3a292923a6f0f409b8c9980d120f7d32c820b4a8a84a2598a295 languageName: node linkType: hard -"string.prototype.includes@npm:^2.0.0": - version: 2.0.0 - resolution: "string.prototype.includes@npm:2.0.0" +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10/34c1e71ac5cab469bef52a4f3d983d141ca61c43b9fe8859574c8829822aad0a61fce1dddfaf8a48ad7ac5032a1730c19f1fb2d09715f57025cd138b1ad4b0e4 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10/939a5447e4a99a86f29cc97fa24f358e5071f79e34746de4c7eb2cd736ed626ad24870a1e356f33915b3b352bb87f7e4d1cebc15d1e1aaae0923777e21b1b28b languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.11": - version: 4.0.11 - resolution: "string.prototype.matchall@npm:4.0.11" +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" + es-abstract: "npm:^1.23.6" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.7" - regexp.prototype.flags: "npm:^1.5.2" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.0.6" - checksum: 10/a902ff4500f909f2a08e55cc5ab1ffbbc905f603b36837674370ee3921058edd0392147e15891910db62a2f31ace2adaf065eaa3bc6e9810bdbc8ca48e05a7b5 + side-channel: "npm:^1.1.0" + checksum: 10/e4ab34b9e7639211e6c5e9759adb063028c5c5c4fc32ad967838b2bd1e5ce83a66ae8ec755d24a79302849f090b59194571b2c33471e86e7821b21c0f56df316 languageName: node linkType: hard @@ -11483,26 +10319,30 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" + es-abstract: "npm:^1.23.5" es-object-atoms: "npm:^1.0.0" - checksum: 10/b2170903de6a2fb5a49bb8850052144e04b67329d49f1343cdc6a87cb24fb4e4b8ad00d3e273a399b8a3d8c32c89775d93a8f43cb42fbff303f25382079fb58a + has-property-descriptors: "npm:^1.0.2" + checksum: 10/47bb63cd2470a64bc5e2da1e570d369c016ccaa85c918c3a8bb4ab5965120f35e66d1f85ea544496fac84b9207a6b722adf007e6c548acd0813e5f8a82f9712a languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10/c2e862ae724f95771da9ea17c27559d4eeced9208b9c20f69bbfcd1b9bc92375adf8af63a103194dba17c4cc4a5cb08842d929f415ff9d89c062d44689c8761b + checksum: 10/140c73899b6747de9e499c7c2e7a83d549c47a26fa06045b69492be9cfb9e2a95187499a373983a08a115ecff8bc3bd7b0fb09b8ff72fb2172abe766849272ef languageName: node linkType: hard @@ -11589,9 +10429,9 @@ __metadata: linkType: hard "stylis@npm:^4.3.0": - version: 4.3.2 - resolution: "stylis@npm:4.3.2" - checksum: 10/4d3e3cb5cbfc7abdf14e424c8631a15fd15cbf0357ffc641c319587e00c2d1036b1a71cb88b42411bc3ce10d7730ad3fb9789b034d11365e8a19d23f56486c77 + version: 4.3.5 + resolution: "stylis@npm:4.3.5" + checksum: 10/4f5901cf7f0cd2cd5a284127a638c267325cf2cfd2a00c86bdc7aa85e370fa4029168ad453d77b67023f80f7e42e13ad6bc6c355391ed8109979ff194f6c8009 languageName: node linkType: hard @@ -11668,29 +10508,29 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10/12a2a4fc6dee23e07cc47f1aeb3a14a1afd3f16397e1350036a8f4cdfee8dcac7ef5978337a4e7b2ac2c27a9a6d46388fc2088ea7c80cb6878c814b1425f8ecf languageName: node linkType: hard "terser-webpack-plugin@npm:^5.3.10": - version: 5.3.10 - resolution: "terser-webpack-plugin@npm:5.3.10" + version: 5.3.11 + resolution: "terser-webpack-plugin@npm:5.3.11" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.20" + "@jridgewell/trace-mapping": "npm:^0.3.25" jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.26.0" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -11700,13 +10540,13 @@ __metadata: optional: true uglify-js: optional: true - checksum: 10/fb1c2436ae1b4e983be043fa0a3d355c047b16b68f102437d08c736d7960c001e7420e2f722b9d99ce0dc70ca26a68cc63c0b82bc45f5b48671142b352a9d938 + checksum: 10/a8f7c92c75aa42628adfa4d171d4695c366c1852ecb4a24e72dd6fec86e383e12ac24b627e798fedff4e213c21fe851cebc61be3ab5a2537e6e42bea46690aa3 languageName: node linkType: hard -"terser@npm:^5.26.0": - version: 5.31.0 - resolution: "terser@npm:5.31.0" +"terser@npm:^5.31.1": + version: 5.37.0 + resolution: "terser@npm:5.37.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -11714,7 +10554,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/11b28065d6fd9f496acf1f23b22982867e4625e769d0a1821861a15e6bebfdb414142a8444f74f2a93f458d0182b8314ceb889be053b50eb5907cc98e8230467 + checksum: 10/3afacf7c38c47a5a25dbe1ba2e7aafd61166474d4377ec0af490bd41ab3686ab12679818d5fe4a3e7f76efee26f639c92ac334940c378bbc31176520a38379c3 languageName: node linkType: hard @@ -11736,13 +10576,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452 - languageName: node - linkType: hard - "through@npm:>=2.2.7 <3, through@npm:^2.3.6": version: 2.3.8 resolution: "through@npm:2.3.8" @@ -11757,31 +10590,31 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^0.3.0": - version: 0.3.0 - resolution: "tinyexec@npm:0.3.0" - checksum: 10/317cc536d091ce7e50271287798d91ef53c4dc80088844d890752a2c7387d213004cba83e5e1d9129390ced617625e34f4a8f0ba5779e31c9b6939f9be0d3543 +"tinyexec@npm:^0.3.0, tinyexec@npm:^0.3.2": + version: 0.3.2 + resolution: "tinyexec@npm:0.3.2" + checksum: 10/b9d5fed3166fb1acd1e7f9a89afcd97ccbe18b9c1af0278e429455f6976d69271ba2d21797e7c36d57d6b05025e525d2882d88c2ab435b60d1ddf2fea361de57 languageName: node linkType: hard -"tinypool@npm:^1.0.0": - version: 1.0.0 - resolution: "tinypool@npm:1.0.0" - checksum: 10/4041a9ae62200626dceedbf4e58589d067a203eadcb88588d5681369b9a3c68987de14ce220b32a7e4ebfabaaf51ab9fa69408a7758827b7873f8204cdc79aa1 +"tinypool@npm:^1.0.2": + version: 1.0.2 + resolution: "tinypool@npm:1.0.2" + checksum: 10/6109322f14b3763f65c8fa49fddab72cd3edd96b82dd50e05e63de74867329ff5353bff4377281ec963213d9314f37f4a353e9ee34bbac85fd4c1e4a568d6076 languageName: node linkType: hard -"tinyrainbow@npm:^1.2.0": - version: 1.2.0 - resolution: "tinyrainbow@npm:1.2.0" - checksum: 10/2924444db6804355e5ba2b6e586c7f77329d93abdd7257a069a0f4530dff9f16de484e80479094e3f39273462541b003a65ee3a6afc2d12555aa745132deba5d +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10/94d4e16246972614a5601eeb169ba94f1d49752426312d3cf8cc4f2cc663a2e354ffc653aa4de4eebccbf9eeebdd0caef52d1150271fdfde65d7ae7f3dcb9eb5 languageName: node linkType: hard -"tinyspy@npm:^3.0.0": - version: 3.0.0 - resolution: "tinyspy@npm:3.0.0" - checksum: 10/b5b686acff2b88de60ff8ecf89a2042320406aaeee2fba1828a7ea8a925fad3ed9f5e4d7a068154a9134473c472aa03da8ca92ee994bc57a741c5ede5fa7de4d +"tinyspy@npm:^3.0.2": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 10/5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 languageName: node linkType: hard @@ -11794,21 +10627,21 @@ __metadata: languageName: node linkType: hard -"tldts-core@npm:^6.1.48": - version: 6.1.48 - resolution: "tldts-core@npm:6.1.48" - checksum: 10/981a431a65e9514f2cf25513743b19b799502f2e2b074ce3294a247f9c5eef784c3025d2fdc47d727e7badf885d96fc85fe604e70300670265f94f4760039641 +"tldts-core@npm:^6.1.75": + version: 6.1.75 + resolution: "tldts-core@npm:6.1.75" + checksum: 10/768202bf48465e89cf501120cf111628aa31953b323ef02d2a23bd1d4c6adfd0861c426925791900432315711ecf9a966601b821cd0312f4fb78558623585718 languageName: node linkType: hard "tldts@npm:^6.1.32": - version: 6.1.48 - resolution: "tldts@npm:6.1.48" + version: 6.1.75 + resolution: "tldts@npm:6.1.75" dependencies: - tldts-core: "npm:^6.1.48" + tldts-core: "npm:^6.1.75" bin: tldts: bin/cli.js - checksum: 10/0b29a7a5190c7b96c29e7cd2fadfe528b593871c0cf4601f3f2ac13cd218de7b66d972d53101769b167fa023950498f7e3df092f167d30e03bea0f0eb7fbf720 + checksum: 10/ffd2fa080b6d91d2684b3cecd369973f310fc3245909cb67525b332323b1c59911e33cb198fa98d315f26f7b6cd197a19a5b4dd5678581e5cd821dc86855f31a languageName: node linkType: hard @@ -11828,13 +10661,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -11845,11 +10671,11 @@ __metadata: linkType: hard "tough-cookie@npm:^5.0.0": - version: 5.0.0 - resolution: "tough-cookie@npm:5.0.0" + version: 5.1.0 + resolution: "tough-cookie@npm:5.1.0" dependencies: tldts: "npm:^6.1.32" - checksum: 10/a98d3846ed386e399e8b470c1eb08a6a296944246eabc55c9fe79d629bd2cdaa62f5a6572f271fe0060987906bd20468d72a219a3b4cbe51086bea48d2d677b6 + checksum: 10/01908de89d5268e424eb07c17230ef69110fed598f8036db366d2c992d5e8e52ccd3af600c87b7fb43479046eb4289f21baa4467a3032a2230a8d3878d3cb76d languageName: node linkType: hard @@ -11862,12 +10688,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" +"ts-api-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-api-utils@npm:2.0.0" peerDependencies: - typescript: ">=4.2.0" - checksum: 10/3ee44faa24410cd649b5c864e068d438aa437ef64e9e4a66a41646a6d3024d3097a695eeb3fb26ee364705d3cb9653a65756d009e6a53badb6066a5f447bf7ed + typescript: ">=4.8.4" + checksum: 10/485bdf8bbba98d58712243d958f4fd44742bbe49e559cd77882fb426d866eec6dd05c67ef91935dc4f8a3c776f235859735e1f05be399e4dc9e7ffd580120974 languageName: node linkType: hard @@ -11963,8 +10789,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.0.3 - resolution: "tsconfck@npm:3.0.3" + version: 3.1.4 + resolution: "tsconfck@npm:3.1.4" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -11972,7 +10798,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 10/1c17217dc3758e71bebdb223b7cd6e613f8f8c92a225cccc40d459554dfae50cbf9d339c6a4a5a8d04620fe1c21bb6d454b6e10421e3fcd808ea51d0b5039ffd + checksum: 10/4fb02e75ff374a82052b4800970bebe4466b5a6e7193d74e7b875cc8225acb5037fb4e7dcd4a5cd751c22129360cb13b4d5536897eae131d69c1a20fb18a99b4 languageName: node linkType: hard @@ -11988,35 +10814,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.1.0": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca - languageName: node - linkType: hard - -"tslib@npm:^2.3.1": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10/ea036bec1dd024e309939ffd49fda7a351c0e87a1b8eb049570dd119d447250e2c56e0e6c00554e8205760e7417793fdebff752a46e573fbe07d4f375502a5b2 +"tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.3.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 languageName: node linkType: hard @@ -12043,82 +10844,90 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.12.0": - version: 4.18.1 - resolution: "type-fest@npm:4.18.1" - checksum: 10/ff76e19cb969854161fea2de854073f346e159f5efff05906ece93cbde8a7161b9374121aca53782b44f754152cbacc70264c90ca1acc81ca917723acce5054f +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10/7bf9e8fdf34f92c8bb364c0af14ca875fac7e0183f2985498b77be129dc1b3b1ad0a6b3281580f19e48c6105c037fb966ad9934520c69c6434d17fd0af4eed78 languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" +"type-fest@npm:^4.27.0": + version: 4.33.0 + resolution: "type-fest@npm:4.33.0" + checksum: 10/0d179e66fa765bd0a25a785b12dc797f90f2f92bdb8c9c8a789f3fd8e5a4492444e7ef83551b3b8463aeab24fd6195761e26b03174722de636b4b75aa5726fb7 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.13" - checksum: 10/02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b + is-typed-array: "npm:^1.1.14" + checksum: 10/3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/e4a38329736fe6a73b52a09222d4a9e8de14caaa4ff6ad8e55217f6705b017d9815b7284c85065b3b8a7704e226ccff1372a72b78c2a5b6b71b7bf662308c903 + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10/269dad101dda73e3110117a9b84db86f0b5c07dad3a9418116fd38d580cab7fc628a4fc167e29b6d7c39da2f53374b78e7cb578b3c5ec7a556689d985d193519 languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/ac26d720ebb2aacbc45e231347c359e6649f52e0cfe0e76e62005912f8030d68e4cb7b725b1754e8fdd48e433cb68df5a8620a3e420ad1457d666e8b29bf9150 + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10/c2869aa584cdae24ecfd282f20a0f556b13a49a9d5bca1713370bb3c89dff0ccbc5ceb45cb5b784c98f4579e5e3e2a07e438c3a5b8294583e2bd4abbd5104fb5 languageName: node linkType: hard -"typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" possible-typed-array-names: "npm:^1.0.0" - checksum: 10/05e96cf4ff836743ebfc593d86133b8c30e83172cb5d16c56814d7bacfed57ce97e87ada9c4b2156d9aaa59f75cdef01c25bd9081c7826e0b869afbefc3e8c39 + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10/d6b2f0e81161682d2726eb92b1dc2b0890890f9930f33f9bcf6fc7272895ce66bc368066d273e6677776de167608adc53fcf81f1be39a146d64b630edbf2081c languageName: node linkType: hard -"typescript@npm:^5.6.2": - version: 5.6.2 - resolution: "typescript@npm:5.6.2" +"typescript@npm:^5.7.3": + version: 5.7.3 + resolution: "typescript@npm:5.7.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b + checksum: 10/6a7e556de91db3d34dc51cd2600e8e91f4c312acd8e52792f243c7818dfadb27bae677175fad6947f9c81efb6c57eb6b2d0c736f196a6ee2f1f7d57b74fc92fa languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.6.2#optional!builtin": - version: 5.6.2 - resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=b45daf" +"typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": + version: 5.7.3 + resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=b45daf" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/060a7349adf698477b411be4ace470aee6c2c1bd99917fdf5d33697c17ec55c64fe724eb10399387530b50e9913b41528dd8bfcca0a5fc8f8bac63fbb4580a2e + checksum: 10/3ac7b7e3e899273d2fbdce6e24b93d4d53a705ad7a7e4cc83b4c57bcb6d25948abcd2a21994f6b9c73ab03960f395aae95f0458de292a66ce0134233261714c3 languageName: node linkType: hard @@ -12129,29 +10938,22 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" + call-bound: "npm:^1.0.3" has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10/0097779d94bc0fd26f0418b3a05472410408877279141ded2bd449167be1aed7ea5b76f756562cb3586a07f251b90799bab22d9019ceba49c037c76445f7cddd + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10/fadb347020f66b2c8aeacf8b9a79826fa34cc5e5457af4eb0bbc4e79bd87fed0fa795949825df534320f7c13f199259516ad30abc55a6e7b91d8d996ca069e50 languageName: node linkType: hard -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: 10/583ac7bbf4ff69931d3985f4762cde2690bb607844c16a5e2fbb92ed312fe4fa1b365e953032d469fa28ba8b224e88a595f0b10a449332f83fa77c695e567dbe languageName: node linkType: hard @@ -12162,21 +10964,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10/8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + unique-slug: "npm:^5.0.0" + checksum: 10/6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 10/40912a8963fc02fb8b600cf50197df4a275c602c60de4cac4f75879d3c48558cfac48de08a25cc10df8112161f7180b3bbb4d662aadb711568602f9eddee54f0 + checksum: 10/beafdf3d6f44990e0a5ce560f8f881b4ee811be70b6ba0db25298c31c8cf525ed963572b48cd03be1c1349084f9e339be4241666d7cf1ebdad20598d3c652b27 languageName: node linkType: hard @@ -12187,35 +10989,21 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.15 - resolution: "update-browserslist-db@npm:1.0.15" - dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10/6800bfac6933f618640bae2f8f582a6b0d83ea73ef1330b0da9090862a370bc23c64650e753c454e39964eef3febe72578065ed06412326be492b5f5a029d0ef - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" +"update-browserslist-db@npm:^1.1.1": + version: 1.1.2 + resolution: "update-browserslist-db@npm:1.1.2" dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/d70b9efeaf4601aadb1a4f6456a7a5d9118e0063d995866b8e0c5e0cf559482671dab6ce7b079f9536b06758a344fbd83f974b965211e1c6e8d1958540b0c24c + checksum: 10/e7bf8221dfb21eba4a770cd803df94625bb04f65a706aa94c567de9600fe4eb6133fda016ec471dad43b9e7959c1bffb6580b5e20a87808d2e8a13e3892699a9 languageName: node linkType: hard -"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": +"uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -12224,93 +11012,94 @@ __metadata: languageName: node linkType: hard -"use-callback-ref@npm:^1.3.0": - version: 1.3.2 - resolution: "use-callback-ref@npm:1.3.2" +"use-callback-ref@npm:^1.3.3": + version: 1.3.3 + resolution: "use-callback-ref@npm:1.3.3" dependencies: tslib: "npm:^2.0.0" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10/3be76eae71b52ab233b4fde974eddeff72e67e6723100a0c0297df4b0d60daabedfa706ffb314d0a52645f2c1235e50fdbd53d99f374eb5df68c74d412e98a9b + checksum: 10/adf06a7b6a27d3651c325ac9b66d2b82ccacaed7450b85b211d123e91d9a23cb5a587fcc6db5b4fd07ac7233e5abf024d30cf02ddc2ec46bca712151c0836151 languageName: node linkType: hard "use-composed-ref@npm:^1.3.0": - version: 1.3.0 - resolution: "use-composed-ref@npm:1.3.0" + version: 1.4.0 + resolution: "use-composed-ref@npm:1.4.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/f771cbadfdc91e03b7ab9eb32d0fc0cc647755711801bf507e891ad38c4bbc5f02b2509acadf9c965ec9c5f2f642fd33bdfdfb17b0873c4ad0a9b1f5e5e724bf + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/a0f199ba510e008ce7b6166d9bda095f1e4e4449089bde665938a9689a0d236a6cca655f18d7272208aaca20bb364ef5fc895d5e37128f29814c1141a4258ab1 languageName: node linkType: hard -"use-inertia-form@npm:^4.3.1": - version: 4.3.1 - resolution: "use-inertia-form@npm:4.3.1" - dependencies: - "@inertiajs/react": "npm:^1.0.16" - axios: "npm:^1.6.8" - lodash: "npm:^4.17.21" - react-dom: "npm:^18.3.1" +"use-inertia-form@npm:^4.5.0": + version: 4.5.0 + resolution: "use-inertia-form@npm:4.5.0" peerDependencies: - "@inertiajs/react": ^1.0.0 - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - checksum: 10/a218cf3cc9bc7f072aa4516144b81e690600bc973fe6222100ce3d46a5665927489600ba5770c43e0361a8de6d299e86228533d6f27b705fc17cc30a6bf0354d + "@inertiajs/react": ^1.0.0 || ^2.0.0 + axios: ^1.7.8 + lodash: ^2.0.0 || ^3.0.0 || ^4.0.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/9f77da9e555e069fc0652265e9302abc319302da880f6621c2ec8401ec69468cd70b157f97d20984999457db07fed48f0619011fb44d469ac69a3e6313e5cab1 languageName: node linkType: hard "use-isomorphic-layout-effect@npm:^1.1.1, use-isomorphic-layout-effect@npm:^1.1.2": - version: 1.1.2 - resolution: "use-isomorphic-layout-effect@npm:1.1.2" + version: 1.2.0 + resolution: "use-isomorphic-layout-effect@npm:1.2.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10/fd3787ed19f6cfbf70e2c5822d01bebbf96b00968195840d5ad61082b8e6ca7a8e2e46270c4096537d18a38ea57f4e4e9668cce5eec36fa4697ddba2ef1203fd + checksum: 10/84fc1074b4e3ee2886fde944baef4ec210453fc78861429fe50ae97be8209e492f18c059c6b2ff1a21df231d72d1638707dabca889bd9d7bee36f21c196a0d19 languageName: node linkType: hard "use-latest@npm:^1.2.1": - version: 1.2.1 - resolution: "use-latest@npm:1.2.1" + version: 1.3.0 + resolution: "use-latest@npm:1.3.0" dependencies: use-isomorphic-layout-effect: "npm:^1.1.1" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10/b0cbdd91f32e9a7fb4cd9d54934bef55dd6dbe90e2853506405e7c2ca78ca61dd34a6241f7138110a5013da02366138708f23f417c63524ad27aa43afa4196d6 + checksum: 10/913e95c272b67743ff1a0df61375058ae6ead368fd5631748e33699b2341aa89b07be03aa4cde4140a856adae70a6e0f299920cc1ad326f4afd310ba250604bd languageName: node linkType: hard -"use-sidecar@npm:^1.1.2": - version: 1.1.2 - resolution: "use-sidecar@npm:1.1.2" +"use-sidecar@npm:^1.1.3": + version: 1.1.3 + resolution: "use-sidecar@npm:1.1.3" dependencies: detect-node-es: "npm:^1.1.0" tslib: "npm:^2.0.0" peerDependencies: - "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10/ec99e31aefeb880f6dc4d02cb19a01d123364954f857811470ece32872f70d6c3eadbe4d073770706a9b7db6136f2a9fbf1bb803e07fbb21e936a47479281690 + checksum: 10/2fec05eb851cdfc4a4657b1dfb434e686f346c3265ffc9db8a974bb58f8128bd4a708a3cc00e8f51655fccf81822ed4419ebed42f41610589e3aab0cf2492edb languageName: node linkType: hard -"use-sync-external-store@npm:^1.2.0, use-sync-external-store@npm:^1.2.2": - version: 1.2.2 - resolution: "use-sync-external-store@npm:1.2.2" +"use-sync-external-store@npm:^1, use-sync-external-store@npm:^1.2.0": + version: 1.4.0 + resolution: "use-sync-external-store@npm:1.4.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/671e9c190aab9a8374a5d468c6ba17f52c38b6fae970110bc196fc1e2b57204149aea9619be49a1bb5207fb6e51d8afd19c3bcb94afe61813fed039821461dc0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/08bf581a8a2effaefc355e9d18ed025d436230f4cc973db2f593166df357cf63e47b9097b6e5089b594758bde322e1737754ad64905e030d70f8ff7ee671fd01 languageName: node linkType: hard @@ -12329,27 +11118,28 @@ __metadata: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.2.0 - resolution: "v8-to-istanbul@npm:9.2.0" + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.12" "@types/istanbul-lib-coverage": "npm:^2.0.1" convert-source-map: "npm:^2.0.0" - checksum: 10/18dd8cebfb6790f27f4e41e7cff77c7ab1c8904085f354dd7875e2eb65f4261c4cf40939132502875779d92304bfea46b8336346ecb40b6f33c3a3979e6f5729 + checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166 languageName: node linkType: hard -"vite-node@npm:2.1.1": - version: 2.1.1 - resolution: "vite-node@npm:2.1.1" +"vite-node@npm:3.0.4": + version: 3.0.4 + resolution: "vite-node@npm:3.0.4" dependencies: cac: "npm:^6.7.14" - debug: "npm:^4.3.6" - pathe: "npm:^1.1.2" - vite: "npm:^5.0.0" + debug: "npm:^4.4.0" + es-module-lexer: "npm:^1.6.0" + pathe: "npm:^2.0.2" + vite: "npm:^5.0.0 || ^6.0.0" bin: vite-node: vite-node.mjs - checksum: 10/c21892b560cad87414ef774d7e53b207e8d66b511b7ef085940fd2f2160d8f6c42dfa9af2ef5465e775b767fc3312ec5b3418b898041f592b8e0b093b4b7110a + checksum: 10/89d21f8d788b7e90aaedc149646123761b0a073ee1db5dd9eef109cd142ce465a00b0e0c0d1a8897f6b1080b7e5ec879e9f19e149774b111e7f162001ac34665 languageName: node linkType: hard @@ -12375,21 +11165,21 @@ __metadata: languageName: node linkType: hard -"vite-plugin-ruby@npm:^5.1.0": - version: 5.1.0 - resolution: "vite-plugin-ruby@npm:5.1.0" +"vite-plugin-ruby@npm:^5.1.1": + version: 5.1.1 + resolution: "vite-plugin-ruby@npm:5.1.1" dependencies: debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" peerDependencies: vite: ">=5.0.0" - checksum: 10/9ee994bf1b3efe3acb685a6a971bf19a261da8491c2b27dd8bf07833a8154b6139896dfea400fc94f755adbd5d1c098c1c9293461dde4d28ad7db0331a310fec + checksum: 10/835f4601426fe57a244f6d9722309d9ff9a9abd4fe167dfc3628cd61588690e41bcb1f7c8f6e6902ccea26646d653b95d3da2b9005f40825fbd734653285f779 languageName: node linkType: hard -"vite-tsconfig-paths@npm:^5.0.1": - version: 5.0.1 - resolution: "vite-tsconfig-paths@npm:5.0.1" +"vite-tsconfig-paths@npm:^5.1.4": + version: 5.1.4 + resolution: "vite-tsconfig-paths@npm:5.1.4" dependencies: debug: "npm:^4.1.1" globrex: "npm:^0.1.2" @@ -12399,73 +11189,38 @@ __metadata: peerDependenciesMeta: vite: optional: true - checksum: 10/e3cf1a2b997747cec6af83c3f9acc057e7f452ef91c3f38a9e32eb2e6cc6c723f51026e38f5d114296fc499b10b36bb56d668d9613a7367f5ecf23adb78642d7 - languageName: node - linkType: hard - -"vite@npm:^5.0.0": - version: 5.2.11 - resolution: "vite@npm:5.2.11" - dependencies: - esbuild: "npm:^0.20.1" - fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.38" - rollup: "npm:^4.13.0" - peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 10/ee0ad038f0831c9514796522deb1e2dcb84bc311abbccb77e4b12216d37fc9559137f4f1b8e75187d51007b954e845c6518e36ee3acac2e2a2789c1181ebb16c + checksum: 10/b409dbd17829f560021a71dba3e473b9c06dcf5fdc9d630b72c1f787145ec478b38caff1be04868971ac8bdcbf0f5af45eeece23dbc9c59c54b901f867740ae0 languageName: node linkType: hard -"vite@npm:^5.4.8": - version: 5.4.8 - resolution: "vite@npm:5.4.8" +"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.0.11": + version: 6.0.11 + resolution: "vite@npm:6.0.11" dependencies: - esbuild: "npm:^0.21.3" + esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.43" - rollup: "npm:^4.20.0" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" less: "*" lightningcss: ^1.21.0 sass: "*" sass-embedded: "*" stylus: "*" sugarss: "*" - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 dependenciesMeta: fsevents: optional: true peerDependenciesMeta: "@types/node": optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -12480,45 +11235,53 @@ __metadata: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true bin: vite: bin/vite.js - checksum: 10/17fdffa558abaf854f04ead7d3ddd76e4556a59871f9ac63cca3fc20a79979984837d8dddaae4b171e3d73061f781e4eec0f6d3babdbce2b4d111d29cf474c1c + checksum: 10/753d06b07a4d90863d3478162cfb18fa5cd7f6eb22a74525348a8fd46593a82875d0f92352c2f4833e15cb6581fc97d6ab434c0c5d83d8d58cfbbe6e7267726d languageName: node linkType: hard -"vitest@npm:^2.1.1": - version: 2.1.1 - resolution: "vitest@npm:2.1.1" - dependencies: - "@vitest/expect": "npm:2.1.1" - "@vitest/mocker": "npm:2.1.1" - "@vitest/pretty-format": "npm:^2.1.1" - "@vitest/runner": "npm:2.1.1" - "@vitest/snapshot": "npm:2.1.1" - "@vitest/spy": "npm:2.1.1" - "@vitest/utils": "npm:2.1.1" - chai: "npm:^5.1.1" - debug: "npm:^4.3.6" - magic-string: "npm:^0.30.11" - pathe: "npm:^1.1.2" - std-env: "npm:^3.7.0" +"vitest@npm:^3.0.4": + version: 3.0.4 + resolution: "vitest@npm:3.0.4" + dependencies: + "@vitest/expect": "npm:3.0.4" + "@vitest/mocker": "npm:3.0.4" + "@vitest/pretty-format": "npm:^3.0.4" + "@vitest/runner": "npm:3.0.4" + "@vitest/snapshot": "npm:3.0.4" + "@vitest/spy": "npm:3.0.4" + "@vitest/utils": "npm:3.0.4" + chai: "npm:^5.1.2" + debug: "npm:^4.4.0" + expect-type: "npm:^1.1.0" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.2" + std-env: "npm:^3.8.0" tinybench: "npm:^2.9.0" - tinyexec: "npm:^0.3.0" - tinypool: "npm:^1.0.0" - tinyrainbow: "npm:^1.2.0" - vite: "npm:^5.0.0" - vite-node: "npm:2.1.1" + tinyexec: "npm:^0.3.2" + tinypool: "npm:^1.0.2" + tinyrainbow: "npm:^2.0.0" + vite: "npm:^5.0.0 || ^6.0.0" + vite-node: "npm:3.0.4" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" - "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.1.1 - "@vitest/ui": 2.1.1 + "@types/debug": ^4.1.12 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@vitest/browser": 3.0.4 + "@vitest/ui": 3.0.4 happy-dom: "*" jsdom: "*" peerDependenciesMeta: "@edge-runtime/vm": optional: true + "@types/debug": + optional: true "@types/node": optional: true "@vitest/browser": @@ -12531,7 +11294,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10/5bbbc7298a043c7ca0914817a2c30e18af5a1619f4a750d36056f64f4d907a1fad50b8bab93aaf39f8174eb475108c9287f6e226e24d3a3ccd6f0b71d3f56438 + checksum: 10/a8cfac922796c54fab2ab66b70282939bec073aa7685a7b6fa6296dd8c8e5cb45dc3530b63aafe34e6c6d82b8d59a5f5756d7fe68c6a4f49d86c8475bf288c04 languageName: node linkType: hard @@ -12561,12 +11324,12 @@ __metadata: linkType: hard "watchpack@npm:^2.4.1": - version: 2.4.1 - resolution: "watchpack@npm:2.4.1" + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10/0736ebd20b75d3931f9b6175c819a66dee29297c1b389b2e178bc53396a6f867ecc2fd5d87a713ae92dcb73e487daec4905beee20ca00a9e27f1184a7c2bca5e + checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 languageName: node linkType: hard @@ -12593,17 +11356,17 @@ __metadata: languageName: node linkType: hard -"webpack@npm:^5.95.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" +"webpack@npm:^5.97.1": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" dependencies: - "@types/estree": "npm:^1.0.5" - "@webassemblyjs/ast": "npm:^1.12.1" - "@webassemblyjs/wasm-edit": "npm:^1.12.1" - "@webassemblyjs/wasm-parser": "npm:^1.12.1" - acorn: "npm:^8.7.1" - acorn-import-attributes: "npm:^1.9.5" - browserslist: "npm:^4.21.10" + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" chrome-trace-event: "npm:^1.0.2" enhanced-resolve: "npm:^5.17.1" es-module-lexer: "npm:^1.2.1" @@ -12625,16 +11388,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/0377ad3a550b041f26237c96fb55754625b0ce6bae83c1c2447e3262ad056b0b0ad770dcbb92b59f188e9a2bd56155ce910add17dcf023cfbe78bdec774380c1 - languageName: node - linkType: hard - -"whatwg-encoding@npm:^2.0.0": - version: 2.0.0 - resolution: "whatwg-encoding@npm:2.0.0" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 10/162d712d88fd134a4fe587e53302da812eb4215a1baa4c394dfd86eff31d0a079ff932c05233857997de07481093358d6e7587997358f49b8a580a777be22089 + checksum: 10/665bd3b8c84b20f0b1f250159865e4d3e9b76c682030313d49124d5f8e96357ccdcc799dd9fe0ebf010fdb33dbc59d9863d79676a308e868e360ac98f7c09987 languageName: node linkType: hard @@ -12661,50 +11415,51 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^14.0.0": - version: 14.0.0 - resolution: "whatwg-url@npm:14.0.0" +"whatwg-url@npm:^14.0.0, whatwg-url@npm:^14.1.0": + version: 14.1.0 + resolution: "whatwg-url@npm:14.1.0" dependencies: tr46: "npm:^5.0.0" webidl-conversions: "npm:^7.0.0" - checksum: 10/67ea7a359a90663b28c816d76379b4be62d13446e9a4c0ae0b5ae0294b1c22577750fcdceb40827bb35a61777b7093056953c856604a28b37d6a209ba59ad062 + checksum: 10/3afd325de6cf3a367820ce7c3566a1f78eb1409c4f27b1867c74c76dab096d26acedf49a8b9b71db53df7d806ec2e9ae9ed96990b2f7d1abe6ecf1fe753af6eb languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10/a877c0667bc089518c83ad4d845cf8296b03efe3565c1de1940c646e00a2a1ae9ed8a185bcfa27cbf352de7906f0616d83b9d2f19ca500ee02a551fb5cf40740 languageName: node linkType: hard -"which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" dependencies: - function.prototype.name: "npm:^1.1.5" - has-tostringtag: "npm:^1.0.0" + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" - is-finalizationregistry: "npm:^1.0.2" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" + is-regex: "npm:^1.2.1" is-weakref: "npm:^1.0.2" isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: 10/d7823c4a6aa4fc8183eb572edd9f9ee2751e5f3ba2ccd5b298cc163f720df0f02ee1a5291d18ca8a41d48144ef40007ff6a64e6f5e7c506527086c7513a5f673 + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10/22c81c5cb7a896c5171742cd30c90d992ff13fb1ea7693e6cf80af077791613fb3f89aa9b4b7f890bd47b6ce09c6322c409932359580a2a2a54057f7b52d1cbe languageName: node linkType: hard -"which-collection@npm:^1.0.1": +"which-collection@npm:^1.0.2": version: 1.0.2 resolution: "which-collection@npm:1.0.2" dependencies: @@ -12716,16 +11471,17 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" + gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448 + checksum: 10/11eed801b2bd08cdbaecb17aff381e0fb03526532f61acc06e6c7b9370e08062c33763a51f27825f13fdf34aabd0df6104007f4e8f96e6eaef7db0ce17a26d6e languageName: node linkType: hard @@ -12751,14 +11507,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10/f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + checksum: 10/6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90 languageName: node linkType: hard @@ -12860,10 +11616,10 @@ __metadata: languageName: node linkType: hard -"xstate@npm:^5.18.2": - version: 5.18.2 - resolution: "xstate@npm:5.18.2" - checksum: 10/f0e0c68c35d14996eabee00a6485844f29d5bdb8407d6ec1be707e60b0f06952e7a765081ee338b0d5ac18a984c4debb6b08d6b2c5fefb1d44376930a1cc3c98 +"xstate@npm:^5.19.2": + version: 5.19.2 + resolution: "xstate@npm:5.19.2" + checksum: 10/e482600e8df96d29df92e4a9498359a03450612a503ac33c6fa1e56f966ee6985ac8f455771f6c5b65e3e4bae06fea0e762c3ca0ba86eec8419c1f7c01a0f102 languageName: node linkType: hard @@ -12888,6 +11644,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10/1884d272d485845ad04759a255c71775db0fac56308764b4c77ea56a20d56679fad340213054c8c9c9c26fcfd4c4b2a90df993b7e0aaf3cdb73c618d1d1a802a + languageName: node + linkType: hard + "yaml@npm:^1.10.0": version: 1.10.2 resolution: "yaml@npm:1.10.2" @@ -12895,12 +11658,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:~2.5.0": - version: 2.5.1 - resolution: "yaml@npm:2.5.1" +"yaml@npm:^2.7.0": + version: 2.7.0 + resolution: "yaml@npm:2.7.0" bin: yaml: bin.mjs - checksum: 10/0eecb679db75ea6a989ad97715a9fa5d946972945aa6aa7d2175bca66c213b5564502ccb1cdd04b1bf816ee38b5c43e4e2fda3ff6f5e09da24dabb51ae92c57d + checksum: 10/c8c314c62fbd49244a6a51b06482f6d495b37ab10fa685fcafa1bbaae7841b7233ee7d12cab087bcca5a0b28adc92868b6e437322276430c28d00f1c1732eeec languageName: node linkType: hard @@ -12941,15 +11704,15 @@ __metadata: linkType: hard "yocto-queue@npm:^1.0.0": - version: 1.0.0 - resolution: "yocto-queue@npm:1.0.0" - checksum: 10/2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801 + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: 10/f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c languageName: node linkType: hard -"zustand@npm:^5.0.0-rc.2": - version: 5.0.0-rc.2 - resolution: "zustand@npm:5.0.0-rc.2" +"zustand@npm:^5.0.3": + version: 5.0.3 + resolution: "zustand@npm:5.0.3" peerDependencies: "@types/react": ">=18.0.0" immer: ">=9.0.6" @@ -12964,6 +11727,6 @@ __metadata: optional: true use-sync-external-store: optional: true - checksum: 10/40292b1ef1e4bb40eaa08d29f8b11ef0fda364790cb14556f6a69263bab7b4f627dcc7ce5ec035918f495a69bab499bad889061cd7a09762972eb543810f3343 + checksum: 10/35728fdaa68291ea3e469524316dda4fe1d8cc22d8be3df309ca99bda0dbc7e66a1c502f66c26f76abfb4bd49a6e1368160353eb3cb173c24042a5f252075462 languageName: node linkType: hard